微信小程序登錄,服務端解密有幾率-41003


服務器是將unionId作為唯一id的,需要使用WXBizDataCrypt.decryptData將encryptedData解密出來。不過在調用WXBizDataCrypt.decryptData的時候總是會有30%的幾率解密失敗,返回errorCode -41003

服務器端語言:PHP

原因:

每次小程序獲取到iv的值中間有空格的,就會出錯

js傳輸 iv ,encryptedData 的時候用 encodeURIComponent 函數進行 urlencode (空格其實是符號:+ ?),PHP端接收的時候 urldecode 就可以了

wx.login({
        success:function(res){
          //請求后台獲取用戶openid
          if(res.code){
            var code = res.code
            wx.getUserInfo({
              success:function(data){
                console.log(data)
                var encryptedData = encodeURIComponent(data.encryptedData)
                var iv = encodeURIComponent(data.iv)
                var signature = data.signature
                var rawData = data.rawData
                //請求服務器
                https.login('Wxlogin/login.html', code, encryptedData, iv, signature, rawData)
              }
            })
          }
        }   
      })

  

PHP端

$encryptedData=urldecode($data['encryptedData']);
//echo json_encode($encryptedData);
$iv = urldecode($data['iv']);

  

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM