微信支付JsApi 40163错误
微信支付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获得openidif (!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获得openidif (!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 usedreturn $openid;}
}
逻辑为将获取到的openid以code为名存入session;当再次请求时,查询该次请求中以code为名的session是否存在,以此防止二次使用code。
微信支付JsApi 40163错误相关推荐
- jsapi支付签名_PHP实现微信支付(jsapi支付)流程步骤详解
最近接触到一个项目,涉及到微信支付,搞微信开发这么久以来,还没搞过支付,之前也就搞过公众号发红包,感谢前辈们的探索,我看了他们的博文,让我少走了很多弯路. 前期准备: 1.微信认证服务号,并且开通了微 ...
- php如何接入微信支付接口,PHP实现微信支付(jsapi支付)流程的方法
最近接触到一个项目,涉及到微信支付,搞微信开发这么久以来,还没搞过支付,之前也就搞过公众号发红包,感谢前辈们的探索,我看了他们的博文,让我少走了很多弯路. 前期准备: 1.微信认证服务号,并且开通了微 ...
- 关于IOS调用微信支付jsapi不起作用的解决方法
关于IOS调用微信支付jsapi不起作用的解决方法 参考文章: (1)关于IOS调用微信支付jsapi不起作用的解决方法 (2)https://www.cnblogs.com/randy619/p/5 ...
- ThinkPHP中实现微信支付(jsapi支付)流程
之前写过一篇文章讲了 PHP实现微信支付(jsapi支付)流程 ,详见文章: PHP实现微信支付(jsapi支付)流程. 当时的环境是没有使用框架的,直接在一个域名指向的目录下边新建目录之后访问该目录 ...
- PHP实现微信支付(jsapi支付)流程
最近接触到一个项目,涉及到微信支付,搞微信开发这么久以来,还没搞过支付,之前也就搞过公众号发红包,感谢前辈们的探索,我看了他们的博文,让我少走了很多弯路. 前期准备: 1.微信认证服务号,并且开通了 ...
- php微信支付jsapi,ThinkPHP实现微信支付(jsapi支付)
这篇文章主要介绍了ThinkPHP实现微信支付(jsapi支付)流程教程详解,需要的朋友可以参考下 之前写过一篇文章讲了PHP实现微信支付(jsapi支付)流程 ,详见文章:PHP实现微信支付(jsa ...
- jsp页面微信支付接口_微信支付 JSAPI 开发中的问题
前言:这篇文章讲的是利用微信官方提供的JSPAI接口,实现微信网页支付.希望在看之前,要确认一下几件事情,否则会让您在解决问题是很费解. ① 接口文档版本号是V3.3(在官方提供的PHP DEMO中的 ...
- 一次性解决微信支付-JSAPI支付问题(想把微信支付JSAPI文档撰写者按在地上摩擦)
最近一个项目需要接入微信支付,所以在现有的项目中接入这个功能,但是最终发现,微信支付是个大坑,至少我认为微信支付文档的撰写者应该是小学水平,又或者是幼儿园水平,写文档的能力简直无语,很多关键性的细节居 ...
- 微信支付JSAPI(公众号支付)接口调用
来看微信支付jsapi接口是怎么调用的 步骤一:获取微信支付四大参数 首先要想支持微信支付,必须拥有两个账号 微信公众平台:账户 公众APPID,APPSECEPT ,微信商户平台商户ID, API密 ...
最新文章
- 【转载】Oracle10g数据类型总结
- 管理之道(三) - 不要吝惜赞美
- SharePoint 2013开发入门探索(一)- 自定义列表
- java insert方法_【Oracle/Java】以Insert ALL方式向表中插入百万条记录,耗时9分17秒...
- 【job】面试中常见的笔试梳理
- 1到100的偶数之和是多少_什么白酒适合收藏,收藏多久出手,茅台五粮液老酒价格是多少?...
- redhat rhel 7中如何切换中英文输入法。
- Newcoder lxh裁木棍 (不开long double见祖宗 ceil前不加long long也去
- Android 给图片加边框
- 【2021-09-22 修订】【梳理】计算机网络:自顶向下方法 第二章 应用层(docx)
- 《炬丰科技-半导体工艺》MEMS 应用中不同厚光刻胶的比较研究
- 直播带货赚钱太难,一定要学会这5种方法,让你收益翻倍
- 7-1 复数类的操作
- 从本质如何理解机器学习
- 节假日api接口之获取指定日期的节假日信息
- ABAP里OO ALV选中或container alv里的选中方法
- tuxedo错误码6_TUXEDO错误解析
- 每日英语:Report: Chinese Consumers Increasingly Divided
- 大数据Spark超经典视频链接全集
- matlab fspecial用法,Matlab 的fspecial函数用法