用hostagor主机测试支付宝集成,无论如何都收不到异步通知,查看access log发现来自支付宝的请求全部被拒,出现406(406 not acceptable)错误,虽然找到了错误原因,却无法解决。
hostagotor默认开启mod_security,其它安全策略尚不知晓,但服务器会屏蔽一些关键词,导致无法发表评论,甚至不能发布新文章。
自己用curl模拟支付宝异步通知post请求,结果如下:
- user agent和Referer为空,接收正常
- 使用常见的user agent且referer为空,接收正常
- user agent设为“Mozilla/4.0”,其它的不管怎么改都会出现406错误
被拒绝的原因就是支付宝使用的user agent “Mozilla/4.0”,有人建议支付宝更改user agent,至少到目前为止还没什么变化。
结论,如果你使用hostgator主机,将无法正常接收支付宝异步通知。如果你的.htaccess有屏蔽恶意爬虫的代码,或者屏蔽空referer请求,也会导致异步通知被拒绝。
其实也好解决!搞一个数据中转就OK了!进行重新严重就好了!不过只限于私人的项目!~要是插件的话不会改就苦逼了
好奇怪为什么支付宝不能做到paypal一样,一个号就能收钱了(服务费倒是学到paypal的了)。
因为它在中国
这个问题就是我之前遇到的,搞得我半死的,多亏博主提醒,才发现。
支付宝这个建议是我提的…
还有人说这个user agent是Great Chinese Firewall的,总之很坑爹,很无奈。