记录换框架之后微信支付的坑

记录换框架之后微信支付的坑

从CI框架换到Yii1.1,微信支付上面遇到了很多问题,不只是因为yii查看报错信息有点儿费劲,还因为整个系统有些许混乱。

遇到的问题:
1、公众号支付获取code在redirect_uri生效并跳转之后没有参数传回来。
2、H5支付成功后的跳转页面问题。

第一个问题,获取code失败,现象就是redirect_uri的地址没有被拼上获取的code,只是单纯的跳转到了redirect_uri的地址。
经过排查发现了两个问题:
第一个坑是redirect_uri在经过微信的sdk处理后,host部分之后的内容被重复了两次,且没有被正常的连接在一起。
这个问题查看了sdk代码后发现:
箭头指向的第一行就是微信SDK本来的代码
箭头指向的第一行就是微信原先的代码,WxPay.JsApiPay.php文件中的GetOpenid()中REQUEST_URI和QUERY_STRING中是有重复的部分的,因此删掉了QUERY_STRING只保留了前两个,这样地址重复的问题解决了。
然后第二个坑就是redirect_uri是不能带有get传参的,换的yii框架之前没有把URL重写成PATH,只能使用?r=controller/function的方式访问,因为已经有很多对外接口是按照传参形式设置的,因此不能改配置。最后想了个方法,在根目录放了专门用于接收code的php文件,在sdk里把访问的文件名写死,不再需要获取当前地址了。这样在这个wx_get_code.php中从GET传参中拿取微信传来的数据,拼接上本该有的r=controller/function以及其他的各种传参(比如订单号之类的信息),header跳转回当时请求微信支付的页面,问题解决。

第二个问题,H5支付成功后的跳转,这里我没有在微信的开发文档中看到redirect_url参数,微信默认会调回到发起支付申请的页面,在网站找到了解决方案,记录一下。


在H5支付即将跳转到发起支付申请的页面之前,将mweb_url中拼入redirect_url参数,值是urlencode处理想要跳转的地址,再跳转,这样微信支付成功后就会自动跳转了。(后来看到这个参数写在了微信H5支付的开发步骤&常见问题里,没有出现在单独的API参数介绍中)

这是目前遇到的两个坑。

完了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值