第一次做支付宝支付,由于不能在线上单独测试,所以只能在外网上建立一个临时的页面接收支付宝异步回调的数据,然后再拿回到本地,修改回调处理接收数据的方式post变成get,拼接一下参数走一下回调,方法很笨。

 

 

现在我在外网测试页面用http_build_query函数直接把$_POST数组生成query_string,直接输出query_string,会出现一个有趣的现象,其中的参数&not会被解析成¬这个字符,大爷的,请注意这不是支付宝那边返回的数据不正确,而是我这边输出

在浏览器解析出现了问题,后来我手动把¬改成&not,最后测试,成功了,签名正确!

 

其实另外还有一个问题也会造成数字签名不一致,就是需要签名的参数中掺杂了其他参数,如果是url上一定要带上的,记得在签名验证前把不需要签名的参数给过滤掉,这样就没问题了。

posted on 2016-06-07 17:13  坠落的数字  阅读(11117)  评论(1编辑  收藏  举报