商家后台为什么没有收到交易通知?
原因:
通知页面文件(参数notify_url对应的页面文件)由于程序抛出异常、页面文件无法访问等原因致使通知页面中的程序没有执行完毕
检查方法:
检查服务器异步通知页面(参数notify_url对应的页面文件)
第一步:检查notify_url页面文件
A、商户号和支付密钥是否设置正确,且没有空格,没有填反。
B、notify_url的路径互联网上需要能够访问得到,确保访问到该页面时,页面没有为空白或开发软件自带系统提示错误信息
C、请求参数show_url、return_url、notify_url不要带自定义参数,如:
http://www.xxx.com/dinpay/return_url.asp?id=123
?id=123,“?”以后带的参数都是自定义参数
D、检查编码格式是否设置正确
检查乱码的方法,可用写日志函数来记录中文部分的数据是否乱码。如果乱码则确定是编码格式设置不一致,导致乱码。具体请检查编码格式参数input_charset、页面属性编码、网站项目整体编码等,确保传递数据时没有乱码。
E、notify_url页面里,有且只有输出SUCCESS,且必须保证为空白页面,无任何HTML标签、空格、回车换行等字符。
各开发语言输出SUCCESS代码:
ASP.NET:Response.Write("SUCCESS");
ASP:response.write "SUCCESS"
PHP:echo "SUCCESS";
JAVA:out.println("SUCCESS");
F、notify_url页面中不要有seesion或cookies,不要做页面自动跳转
第二步:检查服务器配置(以下为参考检查方向)
A、服务器是否开启写入权限
B、DNS解析,是否能够解析智付IP。
C、防火墙是否有拦截
D、端口443或80是否有开启,且不是假死状态,也没有被占用
E、 服务器的IP地址是否有做过更换,如果有做过更换,则请把notify_url页面文件重命名,参数notify_url的值也一并更新。
注意:
商户网站中对这笔交易做了多次处理(如付了一次钱,却反复充值多次)这类情况,按照解决方法修正了商户网站的程序或服务器后,请务必在页面跳转同步通知页面文件(return_url)与服务器异步通知页面文件(notify_url)中,在商户的业务逻辑处理的程序代码执行之前,一定要先判断该次处理是否已经被做过相同的处理(即,该笔交易在已经付过款后,商户网站里的订单是否已经做过订单更新),如:是否已经为会员充值过一次。没有做过相同的处理,才执行下面的程序。