本文将和大家分享一下微信支付JsApi 40163错误以及解决方案代码。

错误:

未定义数组索引:openid 。

经过检查发现是 :微信支付授权获取 openId {“errcode”:40163,“errmsg”:“code been used”,}

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

解决相关参考:https://www.e-learn.cn/content/php/1102683

参考中的方法本人尝试无果,故自己根据原因重写:

经排查发现问题出在:

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);

Header("Location: $url");

exit();

} else {

//获取code码,以获取openid

$code = $_GET['code'];

$openid = $this->getOpenidFromMp($code);

return $openid;

}

}

改后代码为:/**

*

* 通过跳转获取用户的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");

exit();

} else {

//获取code码,以获取openid

$code = $_GET['code'];

if(session("?$code")){

$openid = $this->getOpenidFromMp($code);

}else{

$openid= session($code);

}

session($code, $openid);// ###### 2019.03.01 加 为解决code been used

return $openid;

}

}

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

40163 php,【PHP】微信支付JsApi 40163错误相关推荐

  1. 微信支付JsApi 40163错误

    微信支付JsApi 40163错误 错误: 未定义数组索引:openid . 经过检查发现是 :微信支付授权获取 openId {"errcode":40163,"err ...

  2. jsapi支付签名_PHP实现微信支付(jsapi支付)流程步骤详解

    最近接触到一个项目,涉及到微信支付,搞微信开发这么久以来,还没搞过支付,之前也就搞过公众号发红包,感谢前辈们的探索,我看了他们的博文,让我少走了很多弯路. 前期准备: 1.微信认证服务号,并且开通了微 ...

  3. php如何接入微信支付接口,PHP实现微信支付(jsapi支付)流程的方法

    最近接触到一个项目,涉及到微信支付,搞微信开发这么久以来,还没搞过支付,之前也就搞过公众号发红包,感谢前辈们的探索,我看了他们的博文,让我少走了很多弯路. 前期准备: 1.微信认证服务号,并且开通了微 ...

  4. 关于IOS调用微信支付jsapi不起作用的解决方法

    关于IOS调用微信支付jsapi不起作用的解决方法 参考文章: (1)关于IOS调用微信支付jsapi不起作用的解决方法 (2)https://www.cnblogs.com/randy619/p/5 ...

  5. ThinkPHP中实现微信支付(jsapi支付)流程

    之前写过一篇文章讲了 PHP实现微信支付(jsapi支付)流程 ,详见文章: PHP实现微信支付(jsapi支付)流程. 当时的环境是没有使用框架的,直接在一个域名指向的目录下边新建目录之后访问该目录 ...

  6. PHP实现微信支付(jsapi支付)流程

    最近接触到一个项目,涉及到微信支付,搞微信开发这么久以来,还没搞过支付,之前也就搞过公众号发红包,感谢前辈们的探索,我看了他们的博文,让我少走了很多弯路. 前期准备:  1.微信认证服务号,并且开通了 ...

  7. php微信支付jsapi,ThinkPHP实现微信支付(jsapi支付)

    这篇文章主要介绍了ThinkPHP实现微信支付(jsapi支付)流程教程详解,需要的朋友可以参考下 之前写过一篇文章讲了PHP实现微信支付(jsapi支付)流程 ,详见文章:PHP实现微信支付(jsa ...

  8. jsp页面微信支付接口_微信支付 JSAPI 开发中的问题

    前言:这篇文章讲的是利用微信官方提供的JSPAI接口,实现微信网页支付.希望在看之前,要确认一下几件事情,否则会让您在解决问题是很费解. ① 接口文档版本号是V3.3(在官方提供的PHP DEMO中的 ...

  9. 一次性解决微信支付-JSAPI支付问题(想把微信支付JSAPI文档撰写者按在地上摩擦)

    最近一个项目需要接入微信支付,所以在现有的项目中接入这个功能,但是最终发现,微信支付是个大坑,至少我认为微信支付文档的撰写者应该是小学水平,又或者是幼儿园水平,写文档的能力简直无语,很多关键性的细节居 ...

  10. 微信支付JSAPI(公众号支付)接口调用

    来看微信支付jsapi接口是怎么调用的 步骤一:获取微信支付四大参数 首先要想支持微信支付,必须拥有两个账号 微信公众平台:账户 公众APPID,APPSECEPT ,微信商户平台商户ID, API密 ...

最新文章

  1. 2020年最畅销的20款电动汽车,特斯拉和五菱你偏向谁?
  2. JVM 的内存结构和内存分配
  3. nyoj-Color the necklace(Ploya定理 + 欧拉函数 + 扩展欧几里得(求逆元))
  4. 第08课:从自然语言处理角度看 HMM 和 CRF
  5. App.vue文件報錯
  6. 首次打开(更新版本)APP向导界面
  7. PHP中的$_SERVER['PATH_INFO']
  8. 基于springboot的考研学习平台
  9. 利用pandas对MovieLens电影数据分析
  10. OpenGL学习(六)纹理与obj格式模型的读取
  11. 18个免费替代Photoshop的图像编辑软件
  12. c语言中switch0,C语言switch0.ppt
  13. [INSTALL_FAILED_ALREADY_EXISTS]
  14. H5 会动的皮卡丘动画
  15. 再论iPhone Push Notification
  16. 欧拉函数φ(x)相关性质及计算
  17. C++中string.size()函数 踩坑
  18. 路径和(cdq分治)
  19. 计算机重复重启,计算机反复重启
  20. StataJournal来啦!随便看(2001-2020)更新到2020年第2期

热门文章

  1. 大数据服务节点配置参考
  2. EBS R12中SLA子分类帐与子模块的关联关系
  3. word2016文档怎样添加封面?简单技巧!word文档如何设置加入封面?
  4. 合适新手入门的串口屏学习分享
  5. matlab学习---矩阵求最大值,赋值
  6. php微商城微信支付教程,微信支付接口配置教程(微商城版)
  7. 计算机图形学的网络课程
  8. Delphi控件大全
  9. 解决/**/嵌套问题---条件编译:#if 0 statement #endif 帅帅哒洋办法
  10. USB数据采集卡:labjack T7、T7 Pro系列的技术特点