PHP微信支付JsApi 40163错误解决方案
发布时间:2022-06-22 13:39 所属栏目:121 来源:互联网
导读:本文将和大家分享一下微信支付JsApi 40163错误以及解决方案代码。 错误:未定义数组索引:openid 。 经过检查发现是 :微信支付授权获取 openId {errcode:40163,errmsg:code been used,} 原因为:微信支付code 只能使用一次,当第二次重复使用时就会出现此错
本文将和大家分享一下微信支付JsApi 40163错误以及解决方案代码。 错误:未定义数组索引:openid 。 经过检查发现是 :微信支付授权获取 openId {“errcode”:40163,“errmsg”:“code been used”,} 原因为:微信支付code 只能使用一次,当第二次重复使用时就会出现此错误。 参考中的方法本人尝试无果,故自己根据原因重写: 经排查发现问题出在: WxPay.JsApiPay.php中的GetOpenid方法,源码为: 通过跳转获取用户的openid,跳转流程如下: 1、设置自己需要调回的url及其其他参数,跳转到微信服务器https://open.weixin.qq.com/connect/oauth2/authorize 2、微信服务处理完成之后会跳转回用户redirect_uri地址,此时会带上一些参数,如:code * * @return 用户的openid */ public function GetOpenid() { //通过code获得openid if (!isset($_GET['code']) ){ //触发微信返回code码 $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); $url = $this->__CreateOauthUrlForCode($baseUrl); 改后代码为: 通过跳转获取用户的openid,跳转流程如下: 1、设置自己需要调回的url及其其他参数,跳转到微信服务器https://open.weixin.qq.com/connect/oauth2/authorize 2、微信服务处理完成之后会跳转回用户redirect_uri地址,此时会带上一些参数,如:code * * @return 用户的openid */ public function GetOpenid() { //通过code获得openid if (!isset($_GET['code']) ){ //触发微信返回code码 $baseUrl = urlencode('http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']); $url = $this->__CreateOauthUrlForCode($baseUrl); Header("Location: $url"); 逻辑为将获取到的openid以code为名存入session;当再次请求时,查询该次请求中以code为名的session是否存在,以此防止二次使用code。 (编辑:ASP站长网) |
相关内容
网友评论
推荐文章
热点阅读