时间:2021-07-01 10:21:17 帮助过:3人阅读
代码如下:
//进入订单支付模板
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操作