支付宝异步回调 http0 排查方案
随手记,本次在网站编写过程中出现了,沙盒环境以及测试环境调用支付宝支付时均可使用,但是到了正式环境就出现了支付宝发起异步回调的问题,顺便记录一下,
出现问题时,先找支付宝的诊断工具 自助诊断工具-支付宝技术支持中心 https://opensupport.alipay.com/support/diagnostic-tools/0d278b63-aaa5-4aa3-adec-5f08adf29986 通过该工具可以查询是否发起调用,返回的是http 0时,可以查看具体解决方案异步http0排查方案 - 支付宝文档中心 https://opendocs.alipay.com/support/01rawb
支付宝文档中心当中的 前四个都好排查,直接访问该地址,参数什么的都可以不传,直接访问即可,若通过,则可以不用去管,第五个自行查看代码,
文档中话最多的第六步,大多数也是错在这个位置,先说说个人出现的问题吧,首先,本人在网站支付后,支付宝发起了调用,但是返回的是http 0 ,我的排查步骤是,先在nginx中打印出每一个请求 在nginx中设置nginx.conf
# log_format main '$http_x_forwarded_for - $remote_user [$time_local] '
# '"$request_method $scheme://$host$request_uri $server_protocol" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" $request_time';
# access_log logs/access.log main;
# access_log logs/host.access.log main;
查看logs中的请求,发现文档中支付宝的调用根本就没有到达nginx,于是我确定了是我证书的问题,但是证书什么问题也不好找,我这里推荐一个网站 https://myssl.com 这个网站可以查看网站的评级, 网站为B及以下时,不会对该网站发起异步回调请求。可以根据检测结果当中的概述中问题进行解决,本人网站出现的问题为 ATS不合规 PCI DSS 不合规(ps:本人并没有遇到ATS不合规,只是在解决该问题过程中改好看到了,顺手记一下)
ATS不合规 修改配置文件中的nginx.conf中 出现的原因 openssl版本过低不支持TSL1.2 重启nginx后,在检测网站时,记得点击右边的 刷新报告
先是yum install openssl* -y升级了一下openssl,openssl版本过低不支持TSL1.2
然后用了wdcp的一个升级脚本升级了nginx
wget http://wdcp.vestavps.com/upgrade/nginx_up.sh
sh nginx_up.sh 1.10.0
在站点的nginx配置中添加或者修改成如下即可
ssl_protocols TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
ssl_prefer_server_ciphers on;
PCI DSS不合规 修改配置文件中的nginx.conf 原因是openssl版本支持不到tsl1.2导致检测不通过
解决方式:禁用TLS1.0就可以了
打开nginx服务器配置文件中SSL.conf文件
找到ssl_protocols TLSv1 TLSv1.1 TLSv1.2;改为ssl_protocols TLSv1.1 TLSv1.2;
PCI DSS不合规还有可能是因为证书问题 ,在 https://myssl.com 中查询后往下翻 找到证书链信息
点击下载证书链,将里面的所有文字,复制到服务器的证书 cer文件中,重启nginx即可
以上就是我在部署服务器后,支付宝不回调的解决步骤,如有错误,可以在评论区指出