# 异步回调通知
# 说明
- 当订单支付成功后,本平台服务器会 立即 向你的服务器推送回调通知
- 注意:是由本平台服务器向你的服务器推送
# 异步推送接口
推送方法:POST
数据格式: JSON
推送地址:你发起订单时传入的 notify_url
参数
# 参数结构
名称 | 字段类型 | 必填参数 | 说明 |
---|---|---|---|
content | object | 是 | 返回的订单参数信息(对象) |
sign | string | 是 | 推送的参数签名,此处采用 hmacsha256 加密,最后 md5 加密转大写 |
# 参数结构(content)
名称 | 字段类型 | 必填参数 | 说明 |
---|---|---|---|
mch_trade_no | string(32) | 是 | 平台返回的订单号 |
out_order_no | string(32) | 是 | 商户订单号(字母、数字) |
transaction_id | string(32) | 是 | 微信/支付宝订单显示的流水号 例如: 123456 |
total_fee | int(9) | 是 | 价格单位:分 |
attach | string(128) | 否 | 附加信息,回调时原样传回 例如:{test:'test1_params'} |
trade_type | int(2) | 是 | 支付类型: 1-刷卡支付;2-扫码支付;3-公众号支付;4-App 支付; 6-手机网站支付;9-小程序支付 |
pay_type | int(1) | 是 | 支付渠道:1-微信支付;2-支付宝 |
bank_type | string(32) | 否 | 付款银行卡类型 |
pay_time | datetime | 是 | 用户支付时间,例如:2021-05-11 11:31:08 |
status | int(1) | 是 | 订单状态:1-待支付;2-成功;3-关闭 |
nonce_str | string(32) | 是 | 随机字符串 |
你接收到的推送结果示例 (json 结构):
{
content: {
mch_trade_no: '202105142073149160440416',
out_order_no: '10018801620984646695',
transaction_id: '4200001033202105140660481500',
total_fee: 1,
attach: "{test:'test1_params'}",
trade_type: 2,
pay_type: 1,
bank_type: 'OTHERS',
pay_time: '2020-08-12 17:31:14',
status: 2,
nonce_str: 'd5a3269acfac083fa85e80f98723b557'
},
sign: 'FFA7B929C064C6E453870C0E9338AA89'
}
# 签名说明(重要!!!)
- 此处返回的 sign,与请求接口的 sign 不一样,请勿混淆
content
是你的订单相关支付信息sign
仅是对推送的参数content
的内容做签名结果(无需排序!!!)- 签名方式:md5(hmacsha256(JSON.stringify(content), secret_key)).toUpperCase();
- 这里签名的作用,主要是给你校验参数是否一致
- 注意:这里的签名方式 与 支付接口的入参签名 不一样
# 如何响应
提示:
- 接收通知的服务器请在 3 秒钟内响应
- 通知成功请返回 HTTP 状态码 200(必须),如果返回 HTTP 400/404/500 等其他状态码会认为通知失败
- body 可以返回 ok/success 等字符。
- 为保障推送到达率,系统可能多次进行通知推送,请做好去重逻辑
- 在通知失败的情况下,10 分钟内,每隔 5 秒通知一次,超过则不再通知。可以在后台手动补发
- 在通知成功的情况下,不会再次通知
最后更新于: 5/6/2023, 12:12:59 PM