一、 通道对接基本要素
统一下单接口 (Pay)
- 接口网关:
https://ut9qk-api.baijia.cfd/pay-api/order/create - 请求方式:
POST JSON(Content-Type: application/json) - 金额单位:
amount(分,整型,避免浮点数精度受损) - 加签规则: 参数 ASCII 排序拼接
商户密钥进行 MD5 加密,计算小写 32 位签名。
异步回调通知 (Notify)
- 请求方式:
POST JSON - 防刷白名单 IP:
8.217.208.127 - 商户侧响应: 回调处理成功后必须输出纯文本
SUCCESS(大写)。 - 成功判定:
payStatus == SUCCESS代表支付成功。
二、 兼容性对比与模板评估
经过与 PMP 系统历史支付通道对比,熊二支付的协议格式与现有的 dingsheng(鼎盛)、wanchuan(万川)和 yuanhang(远航)三个通道完全一致。这三个通道在 Go 代码中的实现和签名算法皆是一比一的复制品。以下为接口比对细节:
| 比对维度 | 熊二支付 协议 | 鼎盛/万川/远航 驱动 | 匹配度 |
|---|---|---|---|
| 下单参数 | mchKey, product, mchOrderNo, amount, nonce, timestamp, notifyUrl |
mchKey, product, mchOrderNo, amount, nonce, timestamp, notifyUrl |
🟢 100% 一致 |
| 下单响应 | code=200成功,跳转链接位于 data.url.payUrl,系统订单号位于 data.serialOrderNo |
code=200成功,跳转链接位于 data.url.payUrl,系统订单号位于 data.serialOrderNo |
🟢 100% 一致 |
| 加签规则 | 非空参数字典序拼接,末尾追加 商户密钥,MD5 32位小写 |
使用 utils.Sign2(params, apiKey, false),逻辑完全一致 |
🟢 100% 一致 |
| 回调格式 | JSON,payStatus = SUCCESS 为成功,成功返回大写 SUCCESS |
JSON,payStatus = SUCCESS 为成功,输出大写 SUCCESS |
🟢 100% 一致 |
🚀 研判结论:本项目采用
疑似模板 结论,并设置 needsHumanConfirm = true。尽管协议 100% 一致,但由于系统中有三个运行中的模板(鼎盛 DS、万川 wc、远航 YH)完全等价,技术上均能支持该商户。需由人工复核选择其中一个模板配置上线,或新增独立驱动 xionger 并注册后台模板 XE 隔离上线。
三、 系统集成与交叉注册方案 (新建独立通道 diff 草案)
如果业务决定新增独立通道 XE 避免共用,可在系统三处进行以下代码注册:
1. 分发器注册
修改文件:pmp/common/channels/handler.go
// 导入部分追加
import "pmp_backend/common/channels/xionger"
// SelectPay 模板 switch 结构追加
case "XE":
res, params, err = xionger.Pay(ctx, order, channel, extra)
return
2. 网关回调路由注册
修改文件:pmp/pmp_gateway/router/http.go
// 导入部分追加
import "pmp_backend/common/channels/xionger"
// notify 路由组追加
notify.POST("/xionger", xionger.NotifyHandler, middle.NotifyVerifySign("mchOrderNo", false))
3. 管理后台模板字典追加
修改文件:pmp/pmp_admin/service/out/channel_template.go
// ChannelTemplates 列表追加
{"XE", "/notify/xionger"}, // 熊二 - PMP