参数名 | 说明 | 示例 |
---|---|---|
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 次通知
取出全部参数,剔除值为空和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
将最终字符串取其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');
}