錯誤:未定義數組索引: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,結果成功了