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