凌晨发现一个业务平台里客户使用支付宝支付订单后大量掉单,即客户支付后依然提示未支付的情况,同时系统里看不到任何错误LOG。
确保接口支付宝即时到账接口的 USER ID /MD5 密钥 都设置正确的情况下,大概考虑是网络通讯问题。
通过支付宝自带的异步通知排查: https://opensupport.alipay.com/support/tools/NewCloudparse?ant_source=antsupport
得到如下结果:
官方文档解释 《异步访问状态http0排查方案》:https://opensupport.alipay.com/support/helpcenter/193/201602493623
排查思路:
1、确保当前服务器/CDN是否与支付宝正常通讯
PASS
2、确保HTTP/HTTPS 正常建立
1、HTTP 正常 ,返回302
2、HTTPS 异常,返回0
3、因为涉及CDN,所以直接改回源
恢复正常,那问题就是出现在CDN上
发现问题:
CDN设置SSL时,只单独填写了 KEY/CSR信息,但没填写CA。
解决:
手动把SSL颁发商的CA CSR填入后,再次测试返回200正常,异步回传恢复。
总结:
感觉这个问题像个巨坑,大量的时间花在TCP链接通讯的检查上,忽略了SSL的设置,但是这个问题确实很容易忽略,一般SSL有CSR/KEY就可以正常使用(至少在浏览器层面没问题),可能支付宝比较严谨。
3月2日附加一个补全证书链的工具站:
https://whatsmychaincert.com/