(1)首先做支付的商业网站,需要能够上网(支付成功后,需要进行参数回传验证,如果上不了网,responseText就直接为false) (2)notify_url这个不能进行验证,比如继承父类Page,做一些session验证之类的。这样很有可能直接就跳转到别处 (3)notify_url会按照一定的频率,发送验证请求,一旦返回success,则中断。这时候 也不能在response.write("success")之后,做跳转,这样会影响输出success (4)因为这个页面是post请求的,所以页面里面不能出现querystring这样的获取参数的方式,这样获取的值是空值,需要以post的获取方式进行获取:request.form["param"] (5)程序执行完后必须打印输出“success”(不包含引号)。如果商户反馈给支付宝的字符不是success这7个字符,支付宝服务器会不断重发通知,直到超过24小时22分钟。在25小时内完成6~10次通知(通知频率:5s,2m,10m,15m,1h,2h,6h,15h)。 (6)notify_url.aspx(asp.net)这个页面中不能有html标签、换行、空格等字符(索性直接清掉)
客户端接入了支付宝付款,支付过程调用服务器端进行签名,客户端完成了付款,支付宝也正常收到了订单及付款信息,证明付款成功。但是在签名和客户端中指定的notify_url却一直没有被执行。 测试的程序如下,(没有写验签的代码) - <?php
- require_once('../config.php');
- $log = new Log();
-
- foreach($_POST as $k => $v){
- $content .= $k. "=>" . $v . "|";
- }
-
- $content .= "test " . time();
-
-
- $log->i($content);
- ?>
查找了好久,差点就要给支付宝技术客服打电话了。后面发现有同病相怜的 http://www./?p=92
原来是安全校验码没有上传(商户RSA公钥)
登陆:http://b.alipay.com
点击 PID、Key进入页面,在安全校验码(key)中,RSA加密添加密钥
至此,异步回调的流程就成功了
|