关于微信支付走过的坑

错误:未定义数组索引:openid 。经过检查发现是 :微信支付授权获取 openId {“errcode”:40163,“errmsg”:“code been used”,}

原因为:微信支付code 只能使用一次,当第二次重复使用时就会出现此错误。

WxPay.JsApiPay.php【这个应该是老版本的做法,或者说经过二次跳转的做法】

逻辑为将获取到的openid以code为名存入session;当再次请求时,查询该次请求中以code为名的session是否存在,以此防止二次使用code。

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"); exit(); } else { //获取code码,以获取openid $code = $_GET['code']; if(session("?$code")){ $openid = $this->getOpenidFromMp($code); }else{ $openid= session($code); } session($code, $openid);// 为解决code been used return $openid; } }

关于微信支付走过的坑

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zypjjz.html