Maison > Article > développement back-end > PHP 微信支付URL重定向获取code问题
微信支付的demo融进我的框架的时候,我的是OOP的写法,官方demo是原生的写法,我写了个方法去预处理微信支付,第一步获取code的时候 发给微信的 rediect_url重定向地址 返回调用我这预处理方法的时候,发现SESSION不能用了,这导致了不能回到获取订单信息的方法里进执行支付的模板了
代码如下:
//进入订单支付模板
function dopay($order='')
{
if($pay=='weixin')
{
$this->weixinpay()
<code>} $this->dispaly('dopay.html'); </code>
}
function weixinpay()
{
<code> if(!isset($_GET['code'])) { //触发微信返回code码 $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL); Header("Location: $url"); //注意这个重定向,是个巨大的坑,一旦请求微信,微信redidtc_url调用的是本方法,此时SESSION失效 //跳转之后访问这个方法但是,这个方法没调用去模板的方法,所以没法显示模板,之后我想用SESSION保存 } else { //获取code码,以获取openid $code = $_GET['code']; $jsApi->setCode($code); $openid = $jsApi->getOpenId(); } // 微信预支付代码。。。。。 //按理说已经成功预支付了,应该去显示模板了,但是由于此时是微信redidtc_url直接外网访问此方法的,所以上面的index方法来不及等本方法执行完毕 就没法调用模板了,问题来了 index -> weixinpay(微信预处理) -> 显示支付模板 weixinpay 去调用了微信,由于需要获取code,不得不调用自己,但是调用后,SESSION失效,如何去index方法呢? 注意:index方法是需要order_id参数的,不如报错 </code>
}
微信支付的demo融进我的框架的时候,我的是OOP的写法,官方demo是原生的写法,我写了个方法去预处理微信支付,第一步获取code的时候 发给微信的 rediect_url重定向地址 返回调用我这预处理方法的时候,发现SESSION不能用了,这导致了不能回到获取订单信息的方法里进执行支付的模板了
代码如下:
//进入订单支付模板
function dopay($order='')
{
if($pay=='weixin')
{
$this->weixinpay()
<code>} $this->dispaly('dopay.html'); </code>
}
function weixinpay()
{
<code> if(!isset($_GET['code'])) { //触发微信返回code码 $url = $jsApi->createOauthUrlForCode(WxPayConf_pub::JS_API_CALL_URL); Header("Location: $url"); //注意这个重定向,是个巨大的坑,一旦请求微信,微信redidtc_url调用的是本方法,此时SESSION失效 //跳转之后访问这个方法但是,这个方法没调用去模板的方法,所以没法显示模板,之后我想用SESSION保存 } else { //获取code码,以获取openid $code = $_GET['code']; $jsApi->setCode($code); $openid = $jsApi->getOpenId(); } // 微信预支付代码。。。。。 //按理说已经成功预支付了,应该去显示模板了,但是由于此时是微信redidtc_url直接外网访问此方法的,所以上面的index方法来不及等本方法执行完毕 就没法调用模板了,问题来了 index -> weixinpay(微信预处理) -> 显示支付模板 weixinpay 去调用了微信,由于需要获取code,不得不调用自己,但是调用后,SESSION失效,如何去index方法呢? 注意:index方法是需要order_id参数的,不如报错 </code>
}
微信js公众号支付步骤: 1.后端生成js package 2.前端发起支付 3.支付完成后页面js callback 4.后端callback ; 中间不涉及楼主说的code操作