开发框架:
Thinkphp 3.2
问题:
微信支付中所有的请求参数都已经添加好了,在发起支付请求之后,出现了加载图片,但并没有成功拉起来需要输入密码的界面,在安卓与IOS手机上都显示了不同的结果,安卓上直接显示失败,IOS上则提示请求的路径没有注册
解决:
根据以上两个手机系统显示的提示信息进行排查,请求的路径为: http://abc.com/Wap/Order/Pay/id/1.html , 则微信认为请求的目录为http://abc.com/Wap/Order/Pay/id/ ,这个时候在微信支付的授权目录中就需要有这个目录,但我们在框架里的处理却不是这样的, Wap 是模块,Order 控制器,Pay是方法,id 是参数,我们的理解是配置的授权目录是 http://abc.com/Wap 这就导致了目录不一致
解决方法1: 直接修改微信支付的授权目录为 http://abc.com/Wap/Order/id 但这样的话,如果有多个地方使用到支付,就需要配置很多个地址,写得太死了
解决方法2: 由于是基于 Thinkphp 3.2 的,同时开启了URL_MODEL =2 [pathinfo模式] ,把这个修改为其它模式就好,如果是其它模式,产生的URL就可能是如下的形式: http://abc.com?m=Wap&c=Order&a=Pay&id=1,但这样的URL可能对SEO的URL优化不是很友好