代付接口

更新时间:2026-07-01

接口说明

代付接口是聚合支付系统的核心支付接口,支持多种支付方式包括支付宝、微信、银行卡等支付场景。

适用对象
间连商户
请求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&notifyTime=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&notifyTime=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"}

待签名字符串示例(失败)

失败时,auditRemarkauditTime 也参与签名:

待签名内容
{"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"}

验签步骤

  1. 从 POST Body 解析出所有参数(subMerchantNoorderNo、...、sign
  2. 提取 sign 字段,移除后得到业务参数
  3. 将业务参数按 key 字母升序排序
  4. 排序后的参数转为 JSON 字符串(JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES
  5. 使用平台提供的公钥,通过 SHA256WithRSA 算法验证 sign 签名
⚠️ 安全校验:
  • 验签成功后,请检查 status 是否为 2(成功)
  • 核对 amount 与订单金额是否一致,防止篡改
  • 核对 transactionNo 是否为系统订单号,防止伪造
  • 建议记录通知日志,便于排查问题

支付编码枚举

线上通道

名称
支付编码
支付宝
ALIPAY_TRANSFER
微信
WECHAT_TRANSFER
银行卡
BRANK_TRANSFER

注意事项

🚨 重要提醒:
  • 所有金额参数使用字符串类型,保留两位小数
  • 商户订单号建议保持唯一性,避免重复提交
  • 异步通知地址必须是可公网访问的 HTTPS 地址
  • 签名算法和参数排序规则请参考「签名与加密」文档
  • 测试环境和生产环境使用不同的网关地址

开发建议

  • 建议在正式环境使用前,先在测试环境充分测试各种支付场景
  • 实现异步通知处理逻辑,确保订单状态的准确性
  • 合理设置订单超时时间,避免长时间占用资源
  • 对于分账功能,请确保分账金额总和不超过订单总金额
💡 请求格式说明:主体参数包括 appId、subMerchantNo、bizContent、sign;业务参数放在 bizContent 字段中,以 JSON 字符串形式传递,需要进行 JSON 转义。
© 2026 数汇支付平台 | API 文档版本 v1.0