异步回调
商户设置回调链接增加回调链接验证的通知:
- 本次功能的调整是为了规避一些在支付回调的时候出现无效链接的情况。
具体调整如下:
- 已经配置过回调链接的商户,修改回调链接需验证;
- 新添加的商户,配置回调链接需要验证。
验证规则如下:
在接口配置输入回调url,点击右侧的“验证”按钮进行链接有效性的验证:
- 有效链接:链接返回“success”,严格小写
- 无效链接:链接未返回“success”
鉴于上述需求,第三方设置回调地址时,需控制服务器返回“success”,以完成回调验证。
回调地址设置
- 调用支付接口时传入call_back_url参数(第一优先级)
- 在商户平台设置回调地址(第二优先级)
- 在代理商平台设置回调地址(第三优先级)
回调机制
支付成功后,平台服务器将以POST表单(application/x-www-form-urlencoded)方式请求指定的回调地址;
第三方接受到回调,程序执行完后必须返回指定响应参数,如果返回的不是指定的参数,平台服务器会不断重发通知16次;
回调签名规则
- 对所有回调参数(剔除sign参数),根据参数名称的ASCII码表的顺序排序;
- 将排序好的参数名和参数值拼装在一起,用&符号连接;
- 在拼接好的字符串后面无缝添加商户密钥(商户平台Secret)
把拼装好的字符串采用utf-8编码,使用MD5算法,将字符串进行32位大写加密
签名字符串示例:
data={"merchant_order_sn":"201706061496744418150","total_fee":99}&result_code=200&result_message=成功4fdd3c041fa436f0d53fe869f9b9029d
回调参数:
| 参数 | 类型 | 是否必填 | 最大长度 | 描述 |
|---|---|---|---|---|
| result_code | int | 是 | 10 | 状态码 |
| result_message | string | 是 | 32 | 状态信息 |
| sign | string | 是 | 32 | 回调签名 |
| data | string | 是 | - | 回调业务参数的集合 |
- 回调业务参数:
| 参数 | 类型 | 是否必填 | 最大长度 | 描述 |
|---|---|---|---|---|
| merchant_order_sn | string | 是 | 32 | 第三方商户的订单号 |
| total_fee | float | 是 | 10 | 订单金额(元) |
| platform_order_no | string | 可选 | 32 | 平台订单号 |
| body | string | 可选 | 128 | 对交易或商品的描述 |
- 平台服务器响应示例:
"data":"{"merchant_order_sn":"201706061496753590676","total_fee":99}",
"result_code":"200",
"result_message":"成功",
"sign":"9F4E2E841C71B2D3F24DB6C5C3711890"
- 第三方如果接收回调接口处理完成要返回如下格式(不区别大小写的success)让回调结束
success / SUCCESS
- 提示: 如果在商户后台设置的回调地址包含参数并且获取平台服务器回调的信息包含该参数,在拼接回调签名的字符串时需剔除sign参数以及回调地址携带的参数,否则签名无法通过。