之前有和大家分享過 支付寶異步通知如何使用 的相關內容,但是有些時候吧,就是收不到異步通知,也不知道是什麼原因導致的。
今天來幫大家彙總下在「收不到異步通知」的情況下,如何排查問題出現在哪裏。
異步通知 發送的條件 在文章[手把手|支付寶異步通知如何使用]中有詳細介紹,總結下來就是這兩點:
- 滿足異步通知的觸發條件。
- 接收異步通知的地址沒有問題。
但是如果我們從排查的角度出發,就要先確定 支付寶有沒有給我們發送異步通知。
大前提:確認支付寶是否發送了異步通知
👍這時候就要用掏出我珍藏的 支付寶異步通知排查工具 了。
這個工具可以通過「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 時,支付寶就會給我應用網關地址中發送這條異步通知了。
螞蟻消息的觸發狀態非常多,具體觸發的狀態還是要根據各個產品 接入文檔 看的。
以上就是 收不到異步通知的原因 的所有內容了,我就不信按照我這種方式排查後,你還是找不到收不到異步通知的原因。