欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  后端开发

PHP 微信支付URL重定向获取code问题

程序员文章站 2022-03-26 16:20:04
...
微信支付的demo融进我的框架的时候,我的是OOP的写法,官方demo是原生的写法,我写了个方法去预处理微信支付,第一步获取code的时候 发给微信的 rediect_url重定向地址 返回调用我这预处理方法的时候,发现SESSION不能用了,这导致了不能回到获取订单信息的方法里进执行支付的模板了

代码如下:

//进入订单支付模板

function dopay($order='')
{
if($pay=='weixin')
{
$this->weixinpay()

}

$this->dispaly('dopay.html');

}

function weixinpay()
{

 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参数的,不如报错

}

回复内容:

微信支付的demo融进我的框架的时候,我的是OOP的写法,官方demo是原生的写法,我写了个方法去预处理微信支付,第一步获取code的时候 发给微信的 rediect_url重定向地址 返回调用我这预处理方法的时候,发现SESSION不能用了,这导致了不能回到获取订单信息的方法里进执行支付的模板了

代码如下:

//进入订单支付模板

function dopay($order='')
{
if($pay=='weixin')
{
$this->weixinpay()

}

$this->dispaly('dopay.html');

}

function weixinpay()
{

 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参数的,不如报错

}

微信js公众号支付步骤: 1.后端生成js package 2.前端发起支付 3.支付完成后页面js callback 4.后端callback ; 中间不涉及楼主说的code操作

相关标签: php