5 分钟接入步骤
- 在支付平台后台给网站创建一个独立商户号。
- 把该网站专属的
商户ID(pid) 和 签名密钥 发给开发者。
- 开发者在网站后端调用
https://api.ai777.ai/submit.php 或 https://api.ai777.ai/mapi.php 发起订单。
- 开发者把
notify_url 配成自己网站的业务回调地址。
- 网站在收到支付成功通知后,按订单号给用户自动充值积分。
下级网站最适合走的路径是:网站自己的后端创建订单 -> 用户支付 -> 支付平台异步回调网站 -> 网站自动充值积分。
核心规则
- 每个网站使用独立商户号。
- 每个网站使用独立订单号前缀,便于排错和对账。
notify_url 指向下级网站自己的业务接口,不指向前端页面。
- 业务系统以异步回调为准给用户充值积分。
- 回调时必须校验签名,并判断
trade_status=TRADE_SUCCESS。
- 网站回调处理成功后必须返回纯文本
success。
任何网站都应该有自己的商户号、密钥、域名白名单和业务回调地址。这样订单隔离清晰,风险可控,对账也简单。
下级网站需要的参数
| 参数 |
说明 |
示例 |
pid | 网站专属商户ID | 1001 |
key 或 RSA 密钥 | 按你分配给该网站的签名方式使用 | MD5密钥 或 商户私钥 |
notify_url | 网站自己的业务回调地址 | https://site-a.com/api/pay/lakala/notify |
return_url | 用户支付完成后跳回的网站页面 | https://site-a.com/pay/result |
out_trade_no | 网站自己的订单号,建议全站唯一 | A202604200001 |
name | 商品名称 | 100积分充值 |
money | 支付金额,单位元 | 9.90 |
param | 业务扩展参数,推荐放用户ID、套餐ID、积分包ID | {"user_id":123,"credits":100} |
创建支付订单
推荐优先使用页面跳转支付。它最适合让 AI 快速接好,接入成本最低。
页面跳转支付地址:https://api.ai777.ai/submit.php
请求方式:POST 或 GET。推荐 POST。
POST https://api.ai777.ai/submit.php
pid=1000
type=alipay
out_trade_no=A202604200001
notify_url=https://site-a.com/api/pay/lakala/notify
return_url=https://site-a.com/pay/result
name=100积分充值
money=9.90
param={"user_id":123,"credits":100}
sign_type=MD5
sign=按照签名规则生成
如果网站希望后端先拿到支付页 URL,再自己决定怎么跳转,可以使用:
API 接口支付地址:https://api.ai777.ai/mapi.php
这个接口返回三选一:
payurl:直接跳转到支付页
qrcode:生成二维码
urlscheme:移动端跳转
支付成功回调
网站真正给用户充值积分,应该写在 notify_url 对应的后端接口里。
通知类型:服务器异步通知 notify_url,页面跳转通知 return_url。
请求方式:GET。
回调字段里最关键的是:
pid:商户ID
trade_no:支付平台订单号
out_trade_no:网站自己的订单号
money:支付金额
type:支付方式
trade_status:支付状态,成功值为 TRADE_SUCCESS
param:下单时传入的业务参数
sign
sign_type
处理回调的标准顺序:
1. 读取回调参数
2. 校验签名
3. 判断 trade_status == TRADE_SUCCESS
4. 根据 out_trade_no 查询本地订单
5. 判断订单是否已经处理过
6. 给对应用户充值积分
7. 记录回调日志
8. 返回 success
支付平台回调参数说明
| 参数 |
必填 |
说明 |
示例值 |
pid | 是 | 商户 ID | 1001 |
trade_no | 是 | 支付平台订单号 | 2026042000012345 |
out_trade_no | 是 | 网站自己的订单号 | A202604200001 |
type | 是 | 支付方式 | alipay |
name | 是 | 商品名称 | 100积分充值 |
money | 是 | 支付金额,单位元 | 9.90 |
trade_status | 是 | 支付状态,成功值为 TRADE_SUCCESS | TRADE_SUCCESS |
param | 否 | 业务扩展参数,下单时传入什么这里就回传什么 | {"user_id":123,"credits":100} |
sign | 是 | 回调签名 | 32位MD5字符串 |
sign_type | 是 | 签名类型 | MD5 |
GET /api/pay/lakala/notify?pid=1001&trade_no=2026042000012345&out_trade_no=A202604200001&type=alipay&name=100积分充值&money=9.90&trade_status=TRADE_SUCCESS¶m=%7B%22user_id%22%3A123%2C%22credits%22%3A100%7D&sign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx&sign_type=MD5
回调验签规则
回调验签和下单签名使用同一套 MD5 规则。
- 取出回调里的
sign 和 sign_type
- 剩余参数按参数名 ASCII 从小到大排序
- 排除
sign、sign_type、空值字段
- 按
a=b&c=d 格式拼接
- 在末尾直接拼接商户密钥
key
- 对结果做 MD5,小写输出
- 与回调中的
sign 做对比
回调验签字符串示例:
money=9.90&name=100积分充值&out_trade_no=A202604200001&pid=1001&trade_no=2026042000012345&trade_status=TRADE_SUCCESS&type=alipayxxxxxxxxxxxxxxxx
验签通过后,服务端继续校验:
pid 是否等于当前网站自己的商户号
out_trade_no 是否存在于本地订单表
money 是否等于本地订单金额
trade_status 是否等于 TRADE_SUCCESS
PHP 验签示例:
function verifyNotify(array $data, string $key): bool
{
if (empty($data['sign']) || empty($data['sign_type'])) {
return false;
}
$sign = strtolower($data['sign']);
unset($data['sign'], $data['sign_type']);
foreach ($data as $k => $v) {
if ($v === '' || $v === null) {
unset($data[$k]);
}
}
ksort($data);
$query = urldecode(http_build_query($data));
$localSign = md5($query . $key);
return hash_equals($localSign, $sign);
}
自动充值积分流程
| 阶段 | 动作 |
| 下单前 | 网站创建本地订单,状态设为 pending |
| 发起支付 | 网站带着本地订单号去调用支付平台 |
| 收到回调 | 网站校验签名,确认支付成功 |
| 发积分 | 根据 out_trade_no 或 param 找到用户并充值积分 |
| 防重复 | 如果该订单已经处理过,直接返回 success |
| 完成 | 更新订单状态为 paid |
查单接口
网站如果想在前端做“我已付款,刷新状态”,可以调用查单接口。
查单地址:https://api.ai777.ai/api.php?act=order&pid={商户ID}&key={商户密钥}&out_trade_no={商户订单号}
这一步适合做补偿机制。主逻辑仍然建议以异步通知为准。
给 AI 的提示词模板
下级网站开发者可以直接把下面这段复制给 AI。
你是资深全栈工程师,请帮我把网站接入聚合支付平台,并实现支付成功后自动给用户充值积分。
网站信息:
1. 网站域名:{{SITE_DOMAIN}}
2. 网站技术栈:{{STACK}}
3. 后端语言:{{BACKEND}}
4. 数据库:{{DATABASE}}
5. 用户表:{{USER_TABLE}}
6. 订单表:{{ORDER_TABLE}}
7. 积分字段:{{CREDITS_FIELD}}
支付平台参数:
1. 支付网关:https://api.ai777.ai/submit.php
2. API下单:https://api.ai777.ai/mapi.php
3. 商户ID(pid):{{PID}}
4. 签名方式:{{SIGN_MODE}}
5. MD5密钥或RSA私钥:{{SECRET}}
业务要求:
1. 一个网站一个商户号
2. 创建本地订单后发起支付
3. notify_url 使用网站后端接口
4. 回调验签成功且 trade_status=TRADE_SUCCESS 后,自动给用户充值积分
5. 回调必须防重复
6. 充值成功后返回 success
7. 提供完整代码、数据库字段、环境变量、路由、控制器、支付服务类
8. 提供本地测试步骤和线上部署步骤
请直接输出:
1. 数据表设计
2. 下单接口代码
3. 回调接口代码
4. 查单接口代码
5. 前端发起支付示例
6. 充值积分逻辑
7. 验签逻辑
开发交付标准
- 网站后端必须保存订单表。
- 订单表至少包含:
out_trade_no、user_id、money、status、credits。
- 回调处理必须幂等。
- 积分充值必须写服务端日志。
- 上线前至少做一笔
0.01 的真实支付测试。
常用链接