从第一笔只读请求开始验证接入,再接入顾客、预约等业务接口。PHP 可直接使用 SDK;其他语言按下方签名规则发送 HTTP 请求。
准备凭证 · PHP SDK 五分钟自测 · 非 PHP 语言对接 · 排错速查 · 接口索引
接入前先确认
| 项目 | 当前规范 |
|---|---|
| 开发环境 API 地址 | https://dev1.qique.cn/index.php?r=data/api/{method} |
| 数据格式 | JSON 响应;普通请求参数使用 URL 查询或 application/x-www-form-urlencoded |
| 鉴权 | 机构 AppId + AppSecret,服务商 DistributionAppId + DistributionAppSecret,每次请求计算 sign |
| 成功判断 | 解析 JSON 后判断 errNum === 0;HTTP 200 本身不代表业务成功 |
| 调用频率 | 控制在每分钟 30 次以内;遇到频控错误时暂停并降低频率 |
当前 PHP SDK 的请求地址指向 dev1.qique.cn。开发环境是否使用独立业务数据请先与对接人员确认;写入类请求只在获准的测试机构及测试数据上执行。正式环境地址和凭证由对接人员确认后再切换。
准备凭证
- 首次接入的技术服务商联系企雀对接人员(0592-3278866),领取
DistributionAppId和DistributionAppSecret。 - 机构管理员登录 企雀后台 API 设置,获取本机构的
AppId和AppSecret。 - 确认四个值属于同一次对接和目标机构。
AppSecret、DistributionAppSecret只保存在服务端环境变量或密钥管理系统中,不放入前端页面、代码仓库或工单截图。
PHP SDK 五分钟自测
1. 下载并准备运行环境
下载 PHP SDK(20260703QiQueSdk.zip)。解压后保留 QiQue.php 与 lib/ 的相对目录。SDK 需要 PHP 5.3 或更新版本及 cURL 扩展。
2. 配置四个环境变量
在运行自测脚本的服务端配置 QIQUE_APP_ID、QIQUE_APP_SECRET、QIQUE_DISTRIBUTION_APP_ID、QIQUE_DISTRIBUTION_APP_SECRET。不要把真实值写进脚本或发送给其他人。
3. 发起只读请求
在解压目录运行以下 PHP 代码。getPayTypeList(0) 只读取支付方式列表,不创建或修改业务数据。
<?php
require_once __DIR__ . '/QiQue.php';
$keys = array(
'QIQUE_APP_ID',
'QIQUE_APP_SECRET',
'QIQUE_DISTRIBUTION_APP_ID',
'QIQUE_DISTRIBUTION_APP_SECRET'
);
foreach ($keys as $key) {
if (!getenv($key)) {
throw new RuntimeException('Missing environment variable: ' . $key);
}
}
try {
$client = new QiQue(
getenv('QIQUE_APP_ID'),
getenv('QIQUE_APP_SECRET'),
getenv('QIQUE_DISTRIBUTION_APP_ID'),
getenv('QIQUE_DISTRIBUTION_APP_SECRET')
);
$result = $client->getPayTypeList(0);
if (!isset($result['errNum']) || (int)$result['errNum'] !== 0) {
throw new RuntimeException('API error: ' . json_encode($result));
}
echo 'Connected. Items: ' . count($result['list']) . PHP_EOL;
} catch (Exception $e) {
fwrite(STDERR, $e->getMessage() . PHP_EOL);
exit(1);
}
执行结果应显示 Connected. Items: N。N 可以为 0;关键是返回 JSON 中 errNum 为 0,并包含 list。若连接失败,先看下方排错速查。
4. 接入业务接口
只读请求成功后,按顾客类接口等接口文档选用 SDK 方法。例如修改顾客信息时,只传确定的字段名,并在测试机构上先验证目标顾客:
$result = $client->editCustomer($cusId, null, array('name' => '测试顾客'));
if (!isset($result['errNum']) || (int)$result['errNum'] !== 0) {
// 记录业务错误并停止后续写入。
}
editCustomer 是写操作;示例中的 $cusId 应由测试机构提供。写入请求的超时不等于写入失败,重试前先查业务结果,避免重复操作。
非 PHP 语言对接
API 路径的 {method} 使用接口文档中确定的方法名,例如只读自测为 getpaytypelist。GET 参数放在查询字符串,POST 参数使用 application/x-www-form-urlencoded;不要把请求体当作未参与签名的 JSON 发送。每个请求都包含以下公共参数:
| 字段 | 值 |
|---|---|
t |
机构 AppId |
dis |
服务商 DistributionAppId |
timeStamp |
当前时间,格式 YYYY-MM-DD HH:mm:ss |
format |
json |
signMethod |
md5 |
v |
3.0 |
sign |
按下方规则生成的 32 位 MD5 字符串 |
签名步骤:
- 合并公共参数和该接口的业务参数,排除
sign;URL 路由参数r不参与签名。 - 按参数名升序排序。依序拼接每个参数的“字段名 + 原始字符串值”,不加
=、&或其他分隔符。 - 计算
md5(AppSecret + DistributionAppSecret + 拼接结果 + AppSecret),得到sign。字符串编码、大小写和空值处理须与实际发送的参数一致。 - 将
sign与其余参数一起发送。首次对接建议用只读的GET /index.php?r=data/api/getpaytypelist验证。
GET https://dev1.qique.cn/index.php?r=data/api/getpaytypelist
?t={AppId}&dis={DistributionAppId}&timeStamp={当前时间}
&format=json&signMethod=md5&v=3.0&sign={按规则计算的值}
不要在浏览器地址栏或截图中粘贴真实签名请求 URL;查询字符串可能进入浏览器历史和访问日志。其他语言的参数细节见非 SDK 对接说明。
排错速查
按顺序检查网络/HTTP、JSON 解析、errNum 和 msg。接口可能在 HTTP 200 中返回业务错误。
现象或 errNum |
优先检查 |
|---|---|
| 无法连接、超时或不是 JSON | 地址和网络连通性、TLS、PHP cURL 扩展、服务端返回内容;SDK 会对网络错误或无效 JSON 抛异常 |
11 |
请求缺少 t;确认机构 AppId 已传入 |
10002 |
缺少 dis;确认服务商 DistributionAppId 已传入 |
10001 |
签名错误;核对四组凭证、参数名大小写、排序、原始值及是否把路由参数 r 算进签名 |
333 |
查看 msg:可能是机构已下线,也可能是超出请求频率;按提示处理 |
| 其他非零值 | 以响应的 errNum 和 msg 定位接口参数或业务规则,并查看具体接口说明 |
仍需协助时,提供请求时间、环境域名、接口方法、HTTP 状态、errNum、msg 和已脱敏的参数名清单。不要发送 AppSecret、DistributionAppSecret、完整签名或顾客隐私数据。
接口索引
文档组织参考 GitHub REST API 入门、GitHub 排错指南和 Postman Collection Runner 的分步接入与问题定位方式;企雀的字段和行为以本页及具体接口说明为准。
打开微信“扫一扫”转发给朋友
打开微信“扫一扫”在小程序中打开
账号登录