无法收到通知原因
1、异步通知发送地址错误
2、notify_url参数位置设置错误
3、异步地址设置错误
4、异步地址必须外网可访问
5、异步地址必须能post接收数据
6、接口默认不触发相关的交易状态数据通知
排查方案 1、异步通知发送地址错误
不同的接口,异步通知设置位置不同;
(1)当面付、手机网站支付、电脑网站支付、app支付等,通过接口中的notify_url进行设置异步接收地址;
(2)口碑、生活号、现金红包、单笔转账等,通过appid对应的应用网关地址进行设置异步接收地址;
具体可参考各产品文档的通知说明。
2、notify_url参数位置设置错误
接口中设置notify_url参数传参错误,该参数为公共请求参数,不是业务参数,不能传递到biz_content值上。
接口调用sdk设置传参方式如下:
//Java版: request.setNotifyUrl("商户自己的notify_url地址"); //PHP版: $request->setNotifyUrl("商户自己的notify_url地址"); //.net版: request.SetNotifyUrl("商户自己的notify_url地址");
3、异步地址设置错误
notify_url参数值设置要求如下:
(1)确保异步通知面地址(请求参数notify_url)的路径前面加上http:// 或https://。
例:https://您的域名/notify_url.php ,支持ip地址方式。(推荐使用域名)
(2)异步通知面地址(请求参数notify_url)设置时不能加?id=123这类自定义参数。
错误示例:https://您的域名/notify_url.php?id=123&test=abc
(3)异步通知面地址(请求参数notify_url)的路径不能以“http://localhost”开头,必须外网域名可访问。
4、异步地址必须post接收
使用POST方式接收,请确保服务器路由已经开放POST通知。
可点击云排查说明进行操作查询相关的异步通知数据,自行模拟post方式进行测试,看能否正常接收数据。
如果异步http访问状态为http0,可参考【异步http0排查方案】。
5、异步地址必须外网可访问
异步地址必须外网可以正常访问,这个不难理解,在您的异步地址没有代码逻辑的情况下,post直接访问应该是一个空白页面并且http状态是200(不支持http200以外的状态)
(1)http的header头为标准头;
例如:application/x-www-form-urlencoded;text/html;charset=utf-8。
(2)检查notify_url外网post访问状态(不支持除200以外的状态) ;
选择和服务器不同域的一台电脑,在chrome浏览器右键「检查」->地址栏输入notify_url地址->查看Network中的Status是否是200。
(3)选择和服务器不同域的一台电脑,ping服务器地址是否流畅;
长时间后查看是否会有不稳定的情况(偶尔一次断开)。这也有可能会出现正好有半夜或什么时候有一次没有收到的情况。
(4)如果您的地址是https,也就是有证书,需加一步是否是证书问题;
只支持官方机构颁发的正版SSL证书,不支持自签名。
建议使用相关证书校验工具,检查服务器到根证书链路通畅即可。
6、接口默认不触发相关的交易状态数据通知
接口默认不触发对应的通知,比如电脑网站支付接口默认是不会触发WAIT_BUYER_PAY(交易创建)通知,就不会收不到该状态的通知内容.
各产品默认会触发哪些交易状态通知,请参考【交易状态说明】。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。