支付成功后,发现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模式即可!
原网址:http://m.oschina.net/blog/380403