接口文档
1. 接口概述
系统提供两类主要接口:
- 微信公众号/小程序消息接口:处理微信服务器推送的消息和事件
- 业务数据API接口:供前端页面调用的业务数据接口
2. 微信消息接口 (api.php)
2.1 接口说明
这是微信服务器推送消息的统一入口接口。
接口地址:/api.php
请求方式:GET/POST
2.2 接口验证 (GET请求)
用于验证服务器地址的有效性。
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| signature | string | 是 | 微信加密签名 |
| timestamp | string | 是 | 时间戳 |
| nonce | string | 是 | 随机数 |
| echostr | string | 是 | 随机字符串 |
响应:直接返回 echostr 参数内容
2.3 消息接收 (POST请求)
接收微信服务器推送的各类消息和事件。
请求参数:XML格式的消息体
响应:XML格式的响应消息
2.4 支持的消息类型
| 消息类型 | 说明 |
|---|---|
| text | 文本消息 |
| image | 图片消息 |
| voice | 语音消息 |
| video | 视频消息 |
| shortvideo | 小视频消息 |
| location | 地理位置消息 |
| link | 链接消息 |
2.5 支持的事件类型
| 事件类型 | 说明 |
|---|---|
| subscribe | 关注事件 |
| unsubscribe | 取消关注事件 |
| SCAN | 扫描二维码事件 |
| LOCATION | 上报地理位置事件 |
| CLICK | 自定义菜单点击事件 |
| VIEW | 跳转链接事件 |
| TEMPLATESENDJOBFINISH | 模板消息发送完成 |
2.6 消息处理流程
1. 接收微信POST请求
2. 验证签名有效性
3. 解析XML消息体
4. 判断消息/事件类型
5. 匹配关键词规则
6. 调用对应模块处理
7. 生成响应消息
8. 返回给微信服务器3. 业务API接口
3.1 基础数据接口
3.1.1 获取用户列表
接口地址:/api/basedata/getuserlist.php
请求方式:GET/POST
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| i | int | 是 | 公众号/小程序ID |
响应示例:
{
"status": 1,
"message": "success",
"data": [
{
"uid": 1,
"nickname": "张三",
"avatar": "http://example.com/avatar.jpg"
}
]
}3.1.2 获取部门列表
接口地址:/api/basedata/getdeptlist.php
请求方式:GET/POST
请求参数:
| 参数名 | 类型 | 必填 | 说明 |
|---|---|---|---|
| i | int | 是 | 公众号/小程序ID |
4. 内部函数接口 (框架核心函数)
4.1 数据库操作函数
4.1.1 pdo_get - 获取单条记录
/**
* 获取单条记录
* @param string $tablename 表名 (不含前缀)
* @param array $condition 查询条件
* @param string $fields 字段名
* @return array/false
*/
pdo_get($tablename, $condition = array(), $fields = '*');
// 示例
$user = pdo_get('users', array('uid' => 1), 'username,email');4.1.2 pdo_fetch - 查询单条记录
/**
* 执行SQL查询单条记录
* @param string $sql SQL语句
* @param array $params 参数
* @return array/false
*/
pdo_fetch($sql, $params = array());
// 示例
$user = pdo_fetch("SELECT * FROM " . tablename('users') . " WHERE uid = :uid", array(':uid' => 1));4.1.3 pdo_fetchall - 查询多条记录
/**
* 执行SQL查询多条记录
* @param string $sql SQL语句
* @param array $params 参数
* @param string $keyfield 用字段做键名
* @return array
*/
pdo_fetchall($sql, $params = array(), $keyfield = '');
// 示例
$users = pdo_fetchall("SELECT * FROM " . tablename('users'));4.1.4 pdo_insert - 插入记录
/**
* 插入记录
* @param string $tablename 表名
* @param array $data 数据数组
* @param boolean $replace 是否REPLACE
* @return int/boolean
*/
pdo_insert($tablename, $data = array(), $replace = false);
// 示例
$data = array('username' => 'test', 'email' => 'test@example.com');
$new_id = pdo_insert('users', $data);4.1.5 pdo_update - 更新记录
/**
* 更新记录
* @param string $tablename 表名
* @param array $data 数据数组
* @param array $condition 条件
* @param int $limit 限制条数
* @return int
*/
pdo_update($tablename, $data = array(), $condition = array(), $limit = 0);
// 示例
pdo_update('users', array('email' => 'new@example.com'), array('uid' => 1));4.1.6 pdo_delete - 删除记录
/**
* 删除记录
* @param string $tablename 表名
* @param array $condition 条件
* @param int $limit 限制条数
* @return int
*/
pdo_delete($tablename, $condition = array(), $limit = 0);
// 示例
pdo_delete('users', array('uid' => 1));4.1.7 tablename - 获取表全名
/**
* 获取带前缀的表名
* @param string $table 表名
* @return string
*/
tablename($table);
// 示例
$sql = "SELECT * FROM " . tablename('users');4.2 缓存操作函数
4.2.1 cache_write - 写入缓存
/**
* 写入缓存
* @param string $key 缓存键
* @param mixed $data 缓存数据
* @return boolean
*/
cache_write($key, $data);
// 示例
cache_write('cache_key', array('name' => 'value'));4.2.2 cache_read - 读取缓存
/**
* 读取缓存
* @param string $key 缓存键
* @return mixed
*/
cache_read($key);
// 示例
$data = cache_read('cache_key');4.2.3 cache_delete - 删除缓存
/**
* 删除缓存
* @param string $key 缓存键
* @return boolean
*/
cache_delete($key);
// 示例
cache_delete('cache_key');4.3 全局函数
4.3.1 is_error - 判断是否为错误
/**
* 判断是否为错误对象
* @param mixed $data 数据
* @return boolean
*/
is_error($data);
// 示例
if (is_error($result)) {
message('操作失败');
}4.3.2 message - 显示提示消息
/**
* 显示提示消息并跳转
* @param string $msg 消息内容
* @param string $redirect 跳转地址
* @param string $type 类型 success/error/info
*/
message($msg, $redirect = '', $type = '');
// 示例
message('操作成功', url('site/display'), 'success');4.3.3 url - 生成URL
/**
* 生成URL
* @param string $segment 路由
* @param array $params 参数
* @param boolean $noredirect 是否加api参数
* @return string
*/
url($segment, $params = array(), $noredirect = false);
// 示例
$url = url('site/display', array('id' => 1));4.4 加载器函数
4.4.1 load()->model - 加载模型
/**
* 加载模型
* @param string $name 模型名
*/
load()->model('user');
// 示例
load()->model('mc'); // 加载会员模型4.4.2 load()->func - 加载函数库
/**
* 加载函数库
* @param string $name 函数库名
*/
load()->func('file');
// 示例
load()->func('communication'); // 加载通信函数库4.4.3 load()->classs - 加载类
/**
* 加载类
* @param string $name 类名
*/
load()->classs('weixin.account');
// 示例
load()->classs('pay'); // 加载支付类5. 响应格式规范
5.1 成功响应
{
"status": 1,
"message": "success",
"data": {
// 业务数据
}
}5.2 错误响应
{
"status": 0,
"message": "错误描述",
"errno": 1001
}6. 错误码说明
| 错误码 | 说明 |
|---|---|
| 0 | 成功 |
| 1 | 失败(通用) |
| 1001 | 参数错误 |
| 1002 | 未登录/无权访问 |
| 1003 | 数据不存在 |
| 1004 | 数据已存在 |
| 1005 | 数据库操作失败 |
7. 调用示例
7.1 调用数据库操作
<?php
define('IN_API', true);
require __DIR__ . '/framework/bootstrap.inc.php';
// 查询用户
$user = pdo_get('users', array('uid' => 1));
// 返回JSON
header('Content-Type: application/json');
echo json_encode(array('status' => 1, 'data' => $user));7.2 加载模型并调用
<?php
define('IN_API', true);
require __DIR__ . '/framework/bootstrap.inc.php';
// 加载会员模型
load()->model('mc');
// 获取会员信息
$member = mc_fetch(1);
// 返回JSON
header('Content-Type: application/json');
echo json_encode(array('status' => 1, 'data' => $member));作者:周珊 创建时间:2026-05-05 22:59
最后编辑:周珊 更新时间:2026-05-05 23:04
最后编辑:周珊 更新时间:2026-05-05 23:04