解决THINKPHP 支付宝接口异步notify 无效可能的问题。

支付成功后,发现alipayReturn 正常~

AlipayNotify 怎么搞都不正常,好像支付宝就是不能POST过来。

经过多次测试和调试,终于发现几个问题。

1.首先支付宝Notify 调用的这个控制器Controller,不能有访问权限的问题。

我把它继承了HomeController控制器,这个控制器必须登录后才能访问,所以肯定是不行的。

2.支付宝Notify URL地址中不能有?XX=XXX 不能有传参的写法。

权限问题发现并解决后,发现支付宝不回调我的Notify Url 我写成其他的地址就可以。很是纳闷,然后找问题看支付宝官方代码,发现一行注释    

$notify_url = U('Home/Alipay/alipayNotify', '', true, true);
//需http://格式的完整路径,不能加?id=123这类自定义参数

这时发现 我的U方法生成的URL地址中 是有?的。原来问题在这里。

http://v1.admexpress.cn/index.php?s=/Home/Alipay/alipayNotify

只要把THINKPHP 的URL模式改成 PATCHINFO模式即可!

修改Application/Common/Conf/config.php 公用配置文件中的URL模式即可。

   'URL_MODEL'            => 1, //URL模式
   //原来默认是3 兼容模式会产生?
   //改成1,PATCHINFO模式即可!


你可能感兴趣的:(解决THINKPHP 支付宝接口异步notify 无效可能的问题。)