服務器收不到支付寶notify_url異步回調請求的問題排查

小背景

最近在調整支付寶支付的功能時發現,不可以正常接收支付寶付款成功以後的回調通知了,從代碼到配置最後到服務器配置都排查了一遍,最終發現問題緣由居然是由於咱們的回調地址notify_url是https的但並不是是權威機構頒發的證書,不被支付寶所信賴,因此並無發起回調。php

問題追蹤

確認本身的回調地址notify_url配置無誤以後,在開發環境本身用Postman請求本身設置的回調地址,是能夠正常進入到Controller的接口層。html

遂即使懷疑測試環境服務器負載配置是否正確,經過跟蹤nginx的access.log,發現本身模擬發起的請求的均可以進入到服務器中,並正確轉發到後面的應用進程中。nginx

那不成是支付寶的沙箱環境掛了,或者支付寶服務器出bug了,理性告訴我應該另有蹊蹺,在支付寶的一個頁面中有說起這問題。api

需確認頁面是http仍是https,若是是https,那麼須要安裝ssl證書,證書要求有以下:要求「正規的證書機構簽發,不支持自簽名」。服務器

而後趕快,按照支付寶,寶爺的要求,去自檢了一下自家的證書,下面兩個地址能夠很方便的檢測SSL證書的合法性。測試

檢測地址:url

https://www.chinassl.net/ssltools/ssl-checker.htmlspa

https://cheapsslsecurity.com/ssltools/ssl-checker.php.net

 

把notify_url的通知域名放上去檢測,報出No Intermediate/Chain certificate were found.htm

媽耶,俺們的證書竟然不是權威機構頒發的,太可怕了。

 

未找到相應認證機構所頒發的認證證書鏈,RapidSSL RSA CA 2018並非權威機構,因此不被支付寶所信賴,因此就沒有向對應的地址notify_url進行接口回調通知。

分析出緣由後,立馬更換爲http的回調地址,即可以正常接收通知了,後面咱們換了一個由GoDaddy.com, Inc受權事後的https證書,完全解決了這個問題。

 

參考文章:

https://docs.open.alipay.com/66/104422

http://wmtcore.com/2016/05/13/%E6%94%AF%E4%BB%98%E5%AE%9Dnotify-%E5%BC%82%E6%AD%A5%E9%80%9A%E7%9F%A5%E4%B8%8Ehttps%E7%9A%84%E9%97%AE%E9%A2%98/

相關文章
相關標籤/搜索