我的逻辑:
// 解密手机号
export async function decryptPhoneNumber(e) {
const wxLogin = await wx.login();
const login = await http("/wechat/api/login", {
code: wxLogin.code
});
if (login.code !== 0) return;
uni.setStorageSync('openId', login.data.openid);
uni.setStorageSync('session-key', login.data.sessionKey);
// 1/3 解密手机号
const WXBizDataCrypt = require('@/utils/WXBizDataCrypt.js'); // 来源:https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#%E5%8A%A0%E5%AF%86%E6%95%B0%E6%8D%AE%E8%A7%A3%E5%AF%86%E7%AE%97%E6%B3%95
const pc = new WXBizDataCrypt($store.state.programInfo.appId, uni.getStorageSync('session-key'));
const data = pc.decryptData(e.detail.encryptedData, e.detail.iv); // 到这里 到这里到这里到这里到这里到这里到这里 报错,执行不下去了
// 2/3 存储手机号
const save = await saveUser({
phonenumber: data.phoneNumber
})
// 3/3 查询账户
const account = await queryAccount();
if (account.code !== 0) return;
return account.data;
}
WXBizDataCrypt.js文件是从微信官方获取的
这个错误可能是由于以下原因引起的:
加密数据无效:请确保你尝试解密的数据是有效的加密数据。检查数据来源,确保它是由微信后端加密并通过前端提供的。
加密/解密密钥不匹配:如果你在前端使用与后端不同的密钥进行解密,可能会出现此错误。请确保你使用与后端相同的密钥进行解密。
解密方法不正确:请确保你在前端使用的解密方法与后端使用的加密方法相匹配。不同的加密/解密算法需要使用相应的解密方法。