代付接口
接口说明
代付接口是聚合支付系统的核心支付接口,支持多种支付方式包括支付宝、微信、银行卡等支付场景。
适用对象
间连商户
请求URL
https://openapi.shuhuipay.com/v1/order/transfer请求方法
POST
公共参数说明详见「通用规则 - API公共参数」部分
下单流程图
业务参数
| 参数 | 类型 | 必填 | 参数说明 |
|---|---|---|---|
paymentMethod |
String | Y | 支付编码(参考支付编码枚举) |
orderNo |
String | Y | 商户订单号(建议唯一) |
amount |
String | Y | 支付金额(单位元,保留两位小数,如 0.01) |
subject |
String | Y | 商品名称,展示于支付渠道订单 |
notifyUrl |
String | Y | 异步通知地址,需可公网访问的 HTTPS 地址 |
clientIp |
String | Y | 下单用户公网 IP,例如 152.33.40.28 |
payeeIdentity |
String | Y | 收款方标识: 支付宝填写支付宝用户 UID,示例值:2088123412341234。 微信填写OPENID,示例值:oxCN826ZHmMtCLR7fDdJRTvjC。 |
payeeName |
String | Y | 收款方真实姓名。 |
payeeIdentityType |
String | C | 收款方类型: 支付宝的会员ID: ALIPAY_USER_ID(支付宝默认) 支付宝登录号: ALIPAY_LOGON_ID 微信OPENID: WECHAT_OPENID (微信默认) |
brank |
String | C | 总行名称(例:中国农业银行)。银行卡支付必填 |
remark |
String | C | 备注。微信代付必填(用户收款页展示) |
参数说明:Y: 必填,N: 非必填,C: 条件必填
接口返回参数
公共返回参数
| 参数 | 类型 | 必须 | 参数说明 |
|---|---|---|---|
code |
String | Y | 响应状态码,成功 0000 |
message |
String | Y | 响应描述 |
timestamp |
String | Y | 响应时间戳,UTC 时间,ISO 8601 格式 |
data |
Object | N | 业务数据,无数据时返回空对象 {} |
响应附加参数(data)
| 参数 | 类型 | 必须 | 参数说明 |
|---|---|---|---|
transactionNo |
String | Y | 平台订单号 |
orderNo |
String | Y | 商户订单号 |
amount |
String | Y | 金额 |
status |
String | Y | 状态:0、待处理 1、处理中 2、已完成 3、失败 |
packageInfo |
Object | C | 微信商家转账确认页参数(WECHAT_TRANSFER时返回) |
mchId |
String | Y | 调起确认收款参数:mchId |
appId |
String | Y | 调起确认收款参数:appId |
package |
String | Y | 调起确认收款参数:package |
qrCode |
String | Y | 收款用户可直接扫码的二维码URL |
参数说明:Y: 返回,N: 不返回,C: 条件返回
请求示例
请求示例(支付宝)
JSON
{
"appId": "you_system_appid",
"bizContent": '{"amount":"100.10","clientIp":"127.0.0.1","merchantUrl":"www.sh.com","notifyUrl":"http://test.mf2008c.cn/api/notify/huifu/handle","orderNo":"SHTO202608041332493013","payeeIdentity":"2088002001415596","payeeName":"用户名","payeeIdentityType":" ALIPAY_USER_ID","paymentMethod":"ALIPAY_TRANSFER","subject":"测试代付-133249"}',
"version": "1.0",
"nonce": "49d55020fa3adf6ed67b253c583ccdaa",
"contentHash": "95772c8a0c74e52b707e2ace5963e0eae956e8b1ae26e86a6cde5469247d0382",
"timestamp": "2026-07-02 14:33:11",
"sign": "your_sign"
}
请求示例(微信)
JSON
{
"appId": "you_system_appid",
"bizContent": '{"amount":"100.10","clientIp":"127.0.0.1","merchantUrl":"www.sh.com","notifyUrl":"http://test.mf2008c.cn/api/notify/huifu/handle","orderNo":"SHTO202608041332493013","payeeIdentity":"oxCN826ZHmMtCLR7fDdJRTv","payeeName":"用户名","payeeIdentityType":"WECHAT_OPENID","paymentMethod":"WECHAT_TRANSFER","subject":"测试代付-133249","remark":"用户确认页展示"}',
"version": "1.0",
"nonce": "49d55020fa3adf6ed67b253c583ccdaa",
"contentHash": "95772c8a0c74e52b707e2ace5963e0eae956e8b1ae26e86a6cde5469247d0382",
"timestamp": "2026-07-02 14:33:11",
"sign": "your_sign"
}
返回示例
支付宝/银行卡返回示例
JSON
{
"code": "0000",
"message": "Success",
"timestamp": "2026-07-01T10:30:00.000Z",
"data": {
"transactionNo": "SHPAY202607011030001234567890",
"orderNo": "SHTEST202607011030001234567540",
"amount": "100.1",
"status": "1"
}
}
微信返回示例
JSON
{
"code": "0000",
"message": "Success",
"timestamp": "2026-07-01T10:30:00.000Z",
"data": {
"transactionNo": "SHPAY202607011030001234567890",
"orderNo": "SHTEST202607011030001234567540",
"amount": "100.1",
"status": "1",
"packageInfo": {
"mchId": "1544043311",
"appId": "wxb8bea53ef1bf6c3d",
"package": "ABBQO+oYAAABAAAAAACwPJD9hTx1sUT/KmiFahAAAADnGpepZahT9IkJjn90+1qgPc5CHEN1fwlse3PaOyfUkMgAW0X34w4p69gdc3ibMOJu5vqZACo4saBYBmrCShhy3ESxHaAO/XbqztshoNncOjiRt4Q="
"qrCode": "https://api.mf2008c.cn/upload/qrcode/202608/20/095705_a3a86716.png",
}
}
}
失败返回示例
JSON
{
"code": "4001",
"message": "缺少必填参数 paymentMethod",
"timestamp": "2026-07-01T10:30:00.000Z",
"data": {}
}
异步通知
转账成功后,系统会向商户提供的 notifyUrl 发送 POST 请求通知。通知参数以 application/x-www-form-urlencoded 格式提交,签名前的业务参数按 key 字母排序后转为 JSON 字符串进行签名。
商户收到通知后,请返回纯文本
SUCCESS 表示接收成功(HTTP 200),否则系统会在 5s、30s、60s、10min、1h 后进行重试,最多重试 15 次。
通知参数
| 参数 | 类型 | 说明 |
|---|---|---|
subMerchantNo |
String | 应用ID(appid) |
orderNo |
String | 商户订单号 |
transactionNo |
String | 平台交易号 |
amount |
String | 转账金额(单位:元,保留两位小数) |
status |
String | 订单状态:2-成功,3-失败 |
payTime |
String | 支付完成时间,格式:yyyy-MM-dd HH:mm:ss |
notifyTime |
String | 通知时间,格式:yyyyMMddHHmmss |
auditRemark |
String | 审核原因(失败时返回) |
auditTime |
String | 审核时间(失败时返回),格式:yyyy-MM-dd HH:mm:ss |
sign |
String | 签名字符串(RSA2 / SM2),Base64 编码 |
POST Body 示例(成功)
application/x-www-form-urlencoded
subMerchantNo=20260727212519612370610&orderNo=SHTO202608051120257578&transactionNo=SHTRANS202608051120579436142&amount=0.10&status=2&payTime=2026-08-05 11:21:01¬ifyTime=20260805112102&sign=WVMnJnZBuahZDgh6z2bbTqnOXVIH602nd/b3+bqezABm9zuOUTYxNToeZZHgwb2HcBUBSH1rskAZjTa7fduq0wttxBbqKww38vAwfrXh2MoKaInAzO8lEW+mSzl1Aaq5gB2IM8GaU+fOnI1R60HRu8uILvtCPavYlD6vzR+5K35fCIirfNz5MxCjEL6XKJTpxfnBE+U/T0nfGu9fouPN1kieu4YMoWCS5YarPB0KfiPjhwtovb3Sy/QKRceH42tlG0Bo5Pv4aUO/mJ/qyf2h9/tpTZ1ibHq07cORxk8py8EpbsNmv9n8qzRUDYI3hbf4FGEAB2Yhu4Rw1kp8AOmeuw==
POST Body 示例(失败)
application/x-www-form-urlencoded
subMerchantNo=20260727212519612370610&orderNo=SHTO202608100938233375&transactionNo=SHTRANS202608100938234301993&amount=0.20&status=3&payTime=2026-08-10 10:00:46¬ifyTime=20260810100424&auditRemark=测试通过&auditTime=2026-08-10 09:46:19&sign=jvT5jJGAQpk9R6vd1IsbiXu0dYLQnRHycK1D5uKmONHegpC6iO0khqAJTDOrztb0t/VTA/IOAwH09ZbCY3f7h/jxRjfgKDAA6I+JPObvG7/EZ+x67suDIhjP1UlqDvSLyuujI8sW1YtZ6AAMnLfHLDJ3AqMdJ7+yxDo4t+uj9tcV063XMakFERhvxNi+uG1EFSL9xL484Rip8IIoBUVDFKan1USMshQ0oWb2Tle6seLwVBOAqYj9j2QC8DlTy1g3h9IM3CunpJmRsNIYT/J2zAoAfwru8p801+vKlzK0Wx0gRWPhNXo1AUx3b/di2zisFWwXOEoBk9jk3Ulwbz+T+A==
待签名字符串示例(成功)
签名前,将业务参数(不含 sign)按 key 字母升序排序后转为 JSON 字符串:
待签名内容
{"amount":"0.10","notifyTime":"20260805112102","orderNo":"SHTO202608051120257578","payTime":"2026-08-05 11:21:01","status":"2","transactionNo":"SHTRANS202608051120579436142","subMerchantNo":"20260727212519612370610"}
待签名字符串示例(失败)
失败时,auditRemark 和 auditTime 也参与签名:
待签名内容
{"amount":"0.20","auditRemark":"测试通过","auditTime":"2026-08-10 09:46:19","notifyTime":"20260810100424","orderNo":"SHTO202608100938233375","payTime":"2026-08-10 10:00:46","status":"3","transactionNo":"SHTRANS202608100938234301993","subMerchantNo":"20260727212519612370610"}
验签步骤
- 从 POST Body 解析出所有参数(
subMerchantNo、orderNo、...、sign) - 提取
sign字段,移除后得到业务参数 - 将业务参数按 key 字母升序排序
- 排序后的参数转为 JSON 字符串(
JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES) - 使用平台提供的公钥,通过 SHA256WithRSA 算法验证
sign签名
安全校验:
- 验签成功后,请检查
status是否为2(成功) - 核对
amount与订单金额是否一致,防止篡改 - 核对
transactionNo是否为系统订单号,防止伪造 - 建议记录通知日志,便于排查问题
支付编码枚举
线上通道
名称
支付编码
支付宝
ALIPAY_TRANSFER微信
WECHAT_TRANSFER银行卡
BRANK_TRANSFER注意事项
重要提醒:
- 所有金额参数使用字符串类型,保留两位小数
- 商户订单号建议保持唯一性,避免重复提交
- 异步通知地址必须是可公网访问的 HTTPS 地址
- 签名算法和参数排序规则请参考「签名与加密」文档
- 测试环境和生产环境使用不同的网关地址
开发建议
- 建议在正式环境使用前,先在测试环境充分测试各种支付场景
- 实现异步通知处理逻辑,确保订单状态的准确性
- 合理设置订单超时时间,避免长时间占用资源
- 对于分账功能,请确保分账金额总和不超过订单总金额
请求格式说明:主体参数包括 appId、subMerchantNo、bizContent、sign;业务参数放在 bizContent 字段中,以 JSON 字符串形式传递,需要进行 JSON 转义。
© 2026 数汇支付平台 | API 文档版本 v1.0