【黄啊码】关于微信支付走过的坑

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

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

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

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

还有一种原因:

微信支付获取用户openid时,报出错误。原因是同时配置了http和https,微信网页oauth认证通知了两次

解决方法:

时都会重定向链接redirect_uri都会自动请求两次,由于并发导致了一些问题,

那么,为什么会请求两次呢?,调试时发现会访问两次,一次是301,页面重定向了,第二次跟第一次就差这个参数。加上后,不再报错。code 可以了。

https://open.weixin.qq.com/connect/oauth2/authorize?appid=xxx&redirect_uri=xxx&response_type=code&scope=snsapi_userinfo&state=STATE&connect_redirect=1#wechat_redirect

&connect_redirect=1 在WxPay.JsApiPay.php该位置加入这个参数

其实到这,我依然没解决问题,而此时,我突然想起来,get_open_id的http也是缺少s,所以我在此修改了http为https,结果成功了

Original: https://www.cnblogs.com/huangama/p/15190874.html
Author: 黄啊码
Title: 【黄啊码】关于微信支付走过的坑

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/562275/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球