支付通知
[TOC]
支付通知 API
通知 URL 是请求接口中提交的参数 notify_url,支付完成后,平台会把相关支付和用户信息发送到该 URL,服务商需要接收处理信息。
对后台通知交互时,如果平台收到商户的应答不是纯字符串 success 返回时,平台认为通知失败,平台会通过一定的策略(通知频率为 0/15/15/30/180/1800,单位:秒),共 6 次间接性重新发起通知,尽可能提高通知的成功率,但不保证通知最终能成功。 由于存在重新发送通知的情况, 因此同样的通知可能会多次发送给服务商系统。服务商系统必须能够正确处理重复的通知。
推荐的做法是, 当收到通知进行处理时, 首先检查对应业务数据的状态, 判断该通知是否已经处理过, 如果没有处理过再进行处理, 如果处理过直接返回结果成功。 在对业务数据进行状态检查和处理之前, 要采用数据锁进行并发控制, 以避免函数重入造成的数据混乱。 特别注意:后台接收到通知参数后,要对接收到通知参数里的订单号 out_trade_no 和订单金额 total_amount 和自身业务系统的订单和金额做校验,校验一致后才更新数据库中交易状态
通知方式 【POST】
通知参数内容为 json 格式的字符串
通知参数
通知示例
{
"code": "000000",
"message": "",
"data": {
"out_trade_sn": "20241213011549",
"trade_no": 241213011551911301,
"trade_state": "SUCCESS",
"transaction_id": "4200002553202412139947935291",
"total_amount": 6,
"pay_time": 1734023762,
"attach": ""
},
"sign": "sJ4HNCFk6orGYNLXC4Zeu8i7rWwSaZbL++wdnOOqEl733rOHfGwzUtT+b2iwMAgp84J7mea33nSVnsi80p\\/TBYclEorQET6CuU\\/EiA6z4jMcfDZjLSmuap1bEleeaXyOTGg2rFv9hyqIhWkzlr8Ul1SxCCkfTMbEhkCYU5qiMiqYi+Nn+MeZCoxHDLqwGjtYaX5BPwc21vPv810wxbeYqeqCF79zcX\\/l0s1C\\/MCyj0DKDI0clxtqa6QJ5dLHFHcewDJuxuPlyC9tbia6HafjXQ6+xPPXePq74KZA2gipKrRAyK93OcfnAFnbql4ukCQwP6x4eTvkWhnUDnzGfNqMdw=="
}
通知参数说明
| 参数 | 必填 | 类型 | 说明 |
|---|---|---|---|
| out_trade_sn | 是 | String(32) | 服务商自定义的交易订单流水号 |
| trade_no | 是 | String(32) | 聚合系统交易单号 |
| pay_trade_no | 是 | String(32) | 支付凭证里的【商户单号】 |
| transaction_id | 是 | String(32) | 支付凭证里的【交易单号】 |
| merchant_no | 是 | String(32) | 商户号 |
| total_amount | 是 | String(32) | 订单金额 |
| pay_time | 是 | String(10) | 付款时间 |
| total_amount | 是 | String(32) | 订单总金额 单位为分 |
| pay_time | 否 | String(32) | 支付时间 |
| attach | 否 | String(32) | 附加信息,可做扩展参数 |