APP从测试环境迁移到生产环境,重新测试发现购买时,支付宝支付成功之后,订单状态未更新,即异步回调接口未执行。
检查发现notify_url是正确的,并且已经支付成功(账户有被扣款),登录蚂蚁金服开放平台:https://openmonitor.alipay.com/acceptance/cloudparse.htm进行联调日志排查
注意:外部订单号并不是订单号,是订单号后面再拼一段,具体要到查请求参数
实在不知道如何解决的,就找客服小二
查询之后发现异步回调请求302重定向,继续百度,看到有类似的问题
原因如下:
- 系统要求所有请求必须先登录,导致异步回调请求重定向到登录
- 服务器上装了安全防护软件,导致请求被转发
但是项目逻辑并不会有重定向,并且服务器防火墙没开也没有任何安全软件。
看到网上有说异步回调的时候,https请求好像会有问题,就将https请求改为http请求,但是还是302重定向。
最后把异步回调的url请求的域名改成了公网IP和端口的形式,并且用http请求,即可成功回调。
最后关于支付宝的notify_url的常见问题,有几点个人总结
- 支付宝异步回调未post方式,因此异步回调请求的url中不可带参数
- 该请求不可被重定向
个人感觉这两点是最容易出问题的,其他的多注意一下,应该没有什么问题