支付回调验签是保障支付安全的核心环节,本文分享验签的最佳实践。
为什么要验签
支付回调是支付平台通知商户支付结果的机制。如果不做验签,攻击者可以伪造回调请求,欺骗商户系统认为支付已完成,导致资金损失。
验签流程
1. 接收回调数据:支付平台通过POST方式发送支付结果数据到商户配置的回调地址。
2. 提取签名字段:从回调数据中取出sign字段和所有业务参数。
3. 重新计算签名:将业务参数按字典序排列,拼接API密钥,计算MD5。
4. 比对签名:比较计算值与回调中的sign是否一致。不一致则拒绝请求。
最佳实践
1. 幂等处理:回调可能重复发送,商户系统需根据订单号做幂等判断,已处理订单不重复处理。
2. 响应规范:验签通过并处理成功后,返回支付平台要求的成功标识,否则支付平台会重试。
3. 日志记录:所有回调请求都应记录日志,包括请求时间、参数、处理结果,便于排查问题。
4. 超时处理:设置回调超时时间,长时间未收到回调的订单应主动调用查询接口确认状态。
5. 密钥安全:API密钥不可泄露,不可出现在前端代码中,定期更换密钥。

关注公众号