用hostagor主机测试支付宝集成,无论如何都收不到异步通知,查看access log发现来自支付宝的请求全部被拒,出现406(406 not acceptable)错误,虽然找到了错误原因,却无法解决。

hostagotor默认开启mod_security,其它安全策略尚不知晓,但服务器会屏蔽一些关键词,导致无法发表评论,甚至不能发布新文章。

自己用curl模拟支付宝异步通知post请求,结果如下:

  1. user agent和Referer为空,接收正常
  2. 使用常见的user agent且referer为空,接收正常
  3. user agent设为“Mozilla/4.0”,其它的不管怎么改都会出现406错误

被拒绝的原因就是支付宝使用的user agent “Mozilla/4.0”,有人建议支付宝更改user agent,至少到目前为止还没什么变化。

结论,如果你使用hostgator主机,将无法正常接收支付宝异步通知。如果你的.htaccess有屏蔽恶意爬虫的代码,或者屏蔽空referer请求,也会导致异步通知被拒绝。

6条留言

  1. 其实也好解决!搞一个数据中转就OK了!进行重新严重就好了!不过只限于私人的项目!~要是插件的话不会改就苦逼了

  2. @打死我也不告诉你说道:
    ·

    好奇怪为什么支付宝不能做到paypal一样,一个号就能收钱了(服务费倒是学到paypal的了)。

  3. 这个问题就是我之前遇到的,搞得我半死的,多亏博主提醒,才发现。

    1. 还有人说这个user agent是Great Chinese Firewall的,总之很坑爹,很无奈。

评论功能已关闭