异步回调参数


异步回调参数

参数名 说明 示例
out_trade_no 商户单号 2021051053501015
transaction_id 支付流水号 2022010722001418241458727745
payer_total 实际支付金额,单位:分 100
pay_type 支付类型 wechat / alipay
attach 自定义数据,原样返回 {"uid":6}
success_time 支付完成时间 2022-1-8 16:18:24
sign 数据签名 22cbf9877935a27fd39f5e3dee876a0a

异步回调返回

业务处理完毕需输出:success,如果万迪支付收到应答不是success这7个字符,则认为通知失败,万迪会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但不保证通知最终能成功。

微信回调频率:15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m
支付宝回调频率:4m/10m/10m/1h/2h/6h/15h ,25 小时以内完成 8 次通知

数据验签

1.取参、剔除、排序、拼接token

取出全部参数,剔除值为空和sign字段,按照第一个字符的键值 ASCII 码递增排序(字母升序排序),如果遇到相同字符则按照第二个字符的键值 ASCII 码递增排序,以此类推,将token拼接到字符串末尾。

原始字符串为:

out_trade_no=2021051053501015&transaction_id=2022010722001418241458727745&payer_total=100&pay_type=wechat&attach=&success_time=2022-1-8 16:18:24&sign=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

剔除:取出返回sign保存,用于后续对比校验,剔除参数为空和sign字段后为:

out_trade_no=2021051053501015&transaction_id=2022010722001418241458727745&payer_total=100&pay_type=wechat&success_time=2022-1-8 16:18:24

排序: ASCII 码递增排序,注:默认返回参数已做排序,这里仅做说明。

out_trade_no=2021051053501015&pay_type=wechat&payer_total=100&success_time=2022-1-8 16:18:24&transaction_id=2022010722001418241458727745

拼接Token:注册商户后会获得一个Token,用于加签验证,将此token拼接到字符串末尾。

out_trade_no=2021051053501015&pay_type=wechat&payer_total=100&success_time=2022-1-8 16:18:24&transaction_id=202201072200141824145872774522cbf9877935a27fd39f5e3dee876a0a

2.取出SIGN并校验

将最终字符串取其MD5值,即为最终sign,与返回的sign进行对比,一致则验签成功,不一致则失败,请勿处理业务。

$check_sign = MD5("out_trade_no=2021051053501015&pay_type=wechat&payer_total=100&success_time=2022-1-8 16:18:24&transaction_id=202201072200141824145872774522cbf9877935a27fd39f5e3dee876a0a");
if($check_sign != $sign){
    exit ('success');
}