这就是值得吐槽的点了。腾讯的很多API 下载下来基本上都不能上手即用。都需要自己慢慢填坑
encryptedData解码编译报错,如何解决?微信小程序会对一些敏感数据加密,会输出一个encryptedData,然后对其解密,得到需要的json,(官方文档 https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/signature.html#加密数据解密算法),里面提供了一个示例代码的下载,链接:https://res.wx.qq.com/wxdoc/dist/assets/media/aes-sample.eae1f364.zip 里面node文件夹两个js文件,demo、WXBizDataCrypt,但拿来后直接调用运行,居然报错 ReferenceError: Buffer is not defined,这个Buffer为什么没定义呢? 出错语句为 var sessionKey = new Buffer(this.sessionKey, 'base64'), WXBizDataCrypt.js全部代码如下 var crypto = require('crypto') function WXBizDataCrypt(appId, sessionKey) { this.appId = appId this.sessionKey = sessionKey } WXBizDataCrypt.prototype.decryptData = function (encryptedData, iv) { // base64 decode var sessionKey = new Buffer(this.sessionKey, 'base64') encryptedData = new Buffer(encryptedData, 'base64') iv = new Buffer(iv, 'base64') try { // 解密 var decipher = crypto.createDecipheriv('aes-128-cbc', sessionKey, iv) // 设置自动 padding 为 true,删除填充补位 decipher.setAutoPadding(true) var decoded = decipher.update(encryptedData, 'binary', 'utf8') decoded += decipher.final('utf8') decoded = JSON.parse(decoded) } catch (err) { throw new Error('Illegal Buffer') } if (decoded.watermark.appid !== this.appId) { throw new Error('Illegal Buffer') } return decoded } module.exports = WXBizDataCrypt
2024-05-18