關於微信支付走過的坑
錯誤:未定義數組索引: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 可以了。
//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,結果成功了