产品介绍
更新时间:2023.07.25# 什么是支付通知
支付结果通知是指在用户完成支付后,微信支付系统通过异步回调的方式通知商户关于支付结果。商户需要在接收到支付结果通知后,对通知内容进行验证和处理,确保交易的正确性和安全性。 支付结果通知包含以下信息:
- 通知内容:包括支付状态、订单号、支付金额等交易信息。
- 通知签名:请求头包含签名信息,商户需验证签名以确保通知内容的真实性。
# 通知规则
- 用户支付完成后,微信会把相关支付结果以POST 方法访问商户设置的通知URL,通知的数据以JSON 格式通过请求主体(BODY)传输。通知的数据包括了加密的支付结果详情。商户需要接收处理该消息,并返回应答。
- 对后台通知交互时,如果微信收到商户的应答不符合规范或超时,微信认为通知失败,微信会通过一定的策略定期重新发起通知,尽可能提高通知的成功率,但微信不保证通知最终能成功。(通知频率为15s/15s/30s/3m/10m/20m/30m/30m/30m/60m/3h/3h/3h/6h/6h - 总计 24h4m)
# 注意事项
- 验证签名:商户在接收到支付结果通知后,需要验证签名以确保通知内容的真实性。验证签名的方法可以参考 微信支付 APIv3 文档。
- 设置APIv3密钥:支付结果通知涉及到回调加密和解密,商户必须先设置好APIv3密钥后才能解密回调通知,APIv3密钥设置文档指引详见APIv3密钥设置指引 (opens new window)
- 处理支付结果:商户系统收到支付结果通知,需要在5秒内返回应答报文,否则微信支付认为通知失败。此外,商户需要根据支付结果通知中的支付状态进行相应处理。如支付成功,则需更新订单状态并进行后续业务处理;如支付失败,需根据失败原因进行相应处理。
- 防止重复通知:微信支付系统可能会多次发送支付结果通知,商户需确保自身系统能够正确处理重复通知,避免重复处理订单。推荐的做法是,当商户系统收到通知进行处理时,先检查对应业务数据的状态,并判断该通知是否已经处理。如果未处理,则再进行处理;如果已处理,则直接返回结果成功。在对业务数据进行状态检查和处理之前,要采用数据锁进行并发控制,以避免函数重入造成的数据混乱。
- 返回确认信息:商户在处理完支付结果通知后,需要返回确认信息给微信支付系统,告知已收到通知并处理完毕。确认信息的格式可以参考 微信支付 APIv3 文档。
- 通知URL格式:确保通知URL采用HTTPS协议,并且确保URL中的域名和IP是外网可以访问,不能填写localhost、127.0.0.1、192.168.x.x等本地或内网IP。此外,不建议使用带端口、参数等形式的通知URL。
- 禁止登录态校验:通知URL代码处理逻辑不能做登录态校验。需要能正常接受POST请求。
- 白名单校验:商户侧对微信支付回调IP有防火墙策略限制的,需要对以下IP段开通白名单。
说明 | 网段 |
---|---|
上海电信出口网段 | 101.226.103.0/25 |
上海联通出口网段 | 140.207.54.0/25 |
上海CAP出口网段 | 121.51.58.128/25 |
深圳电信出口网段 | 183.3.234.0/25 |
深圳联通出口网段 | 58.251.80.0/25 |
深圳CAP出口网段 | 121.51.30.128/25 |
香港出口网段 | 203.205.219.128/25 |
退款结果通知、分账动账通知IP(新增) | 175.24.214.208、175.24.211.24、175.24.213.135、109.244.180.23、114.132.203.119、43.139.43.69 |
文档是否有帮助