支付宝notify 异步通知与https的问题

问题和解决方法

在对接支付宝时,发生了这样的问题,使用http链接时,支付宝notify是没有问题的,但换成https后便通知不到了

最可能的问题便是ssl证书出错了,注意支付宝不支持自签名证书(https://doc.open.alipay.com/doc2/detail?treeId=66&articleId=104422&docType=1)

1
2
去这个网站检测下你的CSR吧
https://cryptoreport.websecurity.symantec.com/checker/views/csrCheck.jsp

事情经过

某天,同事们偷偷给网站加了安全套接字,把http换成了https,于是我负责的支付模块就出错了。

一开始,我就简单改了config,提交给支付宝的notify_url改成了https。本以为就没问题了,但在我又付出了¥0.01的巨款后,发现支付宝还是没有通知过来。。然后就懵逼了

Smaller icon

懵逼了大概7.8秒后,我就去百度了一下、、、我居然去百度了一下。有人说原因是:

支付宝对ssl证书也有检查,而那种免费的ssl证书通不过检查。后来没办法就只好改成http notify了

好吧。。。这种解决方法,这尼玛根本就不是个解决方案、

注:俺们公司用的CA是GeoTrust,不是他们说的免费证书。顺带感叹下做CA真赚钱

于是又去问支付宝客服,给了他交易号,让他帮我查了下日志,就是这样的
Smaller icon

http状态码是0耶。看来支付宝确实没有去访问我们的服务器嘛。看来确实在ssl证书检查这块了,但还不清楚是什么问题,还是问问Google吧~(推荐翻墙工具:http://www.ishadowsocks.net)

Google帮我搜到了支付宝的这个https://doc.open.alipay.com/doc2/detail?treeId=66&articleId=104422&docType=1页面(别问我为什么之前没看到。。支付宝文档太多了,我有点眼花),其中对异步通知是这么说的:

需确认页面是http还是https,如果是https,那么需要安装ssl证书,证书要求有如下:
要求“正规的证书机构签发,不支持自签名”,如果不理解请咨询证书供应商。
域名证书检测地址参考:https://cryptoreport.websecurity.symantec.com/checker/

然后就拿着csr去检测了。。靠,果然有鬼(毕竟不是我写的)~~然后改好重新部署

再付出巨款做测试,终于等来支付宝敲门啦

事故总结

不能说是事故,,因为网站还在测试阶段。。否则,我就该引咎辞职了(宝宝心里苦啊、、)

  1. 仔细看文档
  2. 不要用百度