服務器是將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']);