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操作
推荐阅读
-
在vue中获取微信支付code及code被占用问题的解决方法
-
php开发微信支付获取用户地址
-
关于微信获取用户授权返回链接没有code的问题
-
解决微信H5静默授权获取code以及H5页面历史回退死循环问题
-
微信支付授权获取 openId {"errcode":40163,"errmsg":"code been used, hints: [ req_id: scqL1a02482017 ]"}
-
微信网页进入页面也可以获取有效的code,但是分享出去后,获取不到code,请问这个问题应该怎么解决呢?
-
基于OpenCart 开发支付宝,财付通,微信支付参数错误问题_php实例
-
微信支付获取prepay_id返回签名错误,官方demo中的签名方法MD5验证有问题
-
微信支付 php官方demo空白的问题
-
微信网页进入页面也可以获取有效的code,但是分享出去后,获取不到code,请问这个问题应该怎么解决呢?