logo 聚合支付 网站接入指南

一个商户号接入一个网站

这份文档给你的下级网站开发者使用。目标很明确:每个网站使用独立商户号,通过你这套支付平台发起支付,在用户支付成功后,网站自动给用户充值积分、开通会员或发放额度。

5 分钟接入步骤

  1. 在支付平台后台给网站创建一个独立商户号。
  2. 把该网站专属的 商户ID(pid)签名密钥 发给开发者。
  3. 开发者在网站后端调用 https://api.ai777.ai/submit.phphttps://api.ai777.ai/mapi.php 发起订单。
  4. 开发者把 notify_url 配成自己网站的业务回调地址。
  5. 网站在收到支付成功通知后,按订单号给用户自动充值积分。
下级网站最适合走的路径是:网站自己的后端创建订单 -> 用户支付 -> 支付平台异步回调网站 -> 网站自动充值积分。

核心规则

  • 每个网站使用独立商户号。
  • 每个网站使用独立订单号前缀,便于排错和对账。
  • notify_url 指向下级网站自己的业务接口,不指向前端页面。
  • 业务系统以异步回调为准给用户充值积分。
  • 回调时必须校验签名,并判断 trade_status=TRADE_SUCCESS
  • 网站回调处理成功后必须返回纯文本 success
任何网站都应该有自己的商户号、密钥、域名白名单和业务回调地址。这样订单隔离清晰,风险可控,对账也简单。

下级网站需要的参数

参数 说明 示例
pid网站专属商户ID1001
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

请求方式:POSTGET。推荐 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商户 ID1001
trade_no支付平台订单号2026042000012345
out_trade_no网站自己的订单号A202604200001
type支付方式alipay
name商品名称100积分充值
money支付金额,单位元9.90
trade_status支付状态,成功值为 TRADE_SUCCESSTRADE_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 规则。

  • 取出回调里的 signsign_type
  • 剩余参数按参数名 ASCII 从小到大排序
  • 排除 signsign_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_noparam 找到用户并充值积分
防重复如果该订单已经处理过,直接返回 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_nouser_idmoneystatuscredits
  • 回调处理必须幂等。
  • 积分充值必须写服务端日志。
  • 上线前至少做一笔 0.01 的真实支付测试。