之前有和大家分享过 支付宝异步通知如何使用的相关内容,但是有些时候吧,就是收不到异步通知,也不知道是什么原因导致的。
今天来帮大家汇总下在「收不到异步通知」的情况下,如何排查问题出现在哪里。
异步通知 发送的条件 在文章[手把手|支付宝异步通知如何使用]中有详细介绍,总结下来就是这两点:
- 满足异步通知的触发条件。
- 接收异步通知的地址没有问题。
但是如果我们从排查的角度出发,就要先确定 支付宝有没有给我们发送异步通知。
大前提:确认支付宝是否发送了异步通知
👍这时候就要用掏出我珍藏的 支付宝异步通知排查工具 了。
这个工具可以通过「APPID」和「支付宝交易号/外部订单号」排查出支付宝是否有发送过异步通知,如下图:
详细使用方法可以参考[自助工具-异步通知操作手册]
如果能在这个工具中查询到记录的话,说明支付宝是有发送通知的:
如果没有查询到的话,就说明 7 天以内是没有发送这笔通知的:
确认异步通知是否发送状态后,我们就可以根据是否有发送的场景来按情况排查了。
场景一:发送了异步通知,但未接收到
这种情况下一般是「接收地址存在问题」或者是「接收的方式有问题」:
- 首先接收的方式必须要以 POST 方式进行接收,详情参考 [POST如何接收异步通知]。
- 接收地址存在问题,http 状态码必须返回 200 才可以。如果返回了其他的状态码,是接收不到通知的。
场景二:没有发送异步通知
支付宝没有发送异步通知的原因要按照 不同的异步通知发送方式来讲,因为是不同的异步通知发送方式,所以排查的方向也是不同的。
异步通知的发送方式主要分为以下两种:
- 通过接口 notify_url 参数设置接收地址 + 触发对应交易状态。
- 通过应用网关设置接收地址 + 订阅不同状态的 From 蚂蚁消息。
不同产品设置的方式也不一样,一般支付接口都是通过第一种方式。
大家可以参考 [支付宝全开放产品大全] 中的 异步触发地址 来判断对接的产品是用的哪种异步通知发送方式。
1 . 通过接口 notify_url 参数设置接收地址 + 触发对应交易状态
这种发送方式主要检查的就是接收地址是否有问题以及是否触发了对应交易状态。
首先就是检查接收地址了,说到检查地址啊,最好的检查方式就是直接把接收地址放到浏览器里面访问下,看有没有问题,一般能正常访问的都是 ok 的~
设置 notify_url 参数的方式可以参考[如何设置notify_url]。
另外就是看有没有触发交易状态了,支付宝的支付交易分为以下四个状态:
- WAIT_BUYER_PAY(交易创建,等待买家付款)
- TRADE_SUCCESS(交易支付成功,可退款)
- TRADE_FINISHED(交易结束,不可退款)
- TRADE_CLOSED(未付款交易超时关闭,或支付完成后全额退款)
有些交易状态是会触发异步通知的,有些则不会,不同支付产品会被触发异步通知的订单状态是不一样的,默认会触发的异步通知的状态可以参考下[各支付产品异步通知触发说明]。
2 . 通过应用网关设置接收地址 + 订阅不同状态的 From 蚂蚁消息
这种发送方式主要是检查应用网关中的地址是否设置正确以及对应状态的蚂蚁消息是否订阅了。
先要检查应用网关地址是否设置了,可以参考[如何设置应用网关]进行设置。
另外检查 是否订阅了From 蚂蚁消息
只要订阅了这个消息,触发这个交易状态之后,支付宝就会发送对应的异步通知过来。
比如在对接单笔转账的时候 只要我订阅了 资金单据状态变更通知接口 ,在 status = SUCCESS 时,支付宝就会给我应用网关地址中发送这条异步通知了。
蚂蚁消息的触发状态非常多,具体触发的状态还是要根据各个产品 接入文档 看的。
以上就是 收不到异步通知的原因 的所有内容了,我就不信按照我这种方式排查后,你还是找不到收不到异步通知的原因。