export function getQrCode(token, pageUrl, scene) {
// 注意 access_token 参数是必须放在url后面 其余参数 要在data里面
console.log("生成二维码入参", token, pageUrl, scene)
return new Promise((resolve, reject) => {
uni.request({
method: "POST",
url: `https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=${token}`,
data: {
page: pageUrl, // 需要打开的页面路径
scene: decodeURIComponent(scene), // 这个是需要传递的参数
check_path: false,
env_version: "release" // 正式版为 "release",体验版为 "trial",开发版为 "develop"。默认是正式版
},
responseType: 'arraybuffer', // 注意一定要加 不然返回的Buffer流会乱码 导致无法转base64
success: (result) => {
// 拿到buffer流 通过wx.arrayBufferToBase64 转成base64 在页面展示
// 如果请求时不加 responseType: 'arraybuffer' 拿到的buffer流转码会失败
const base64String = "data:image/png;base64," + wx.arrayBufferToBase64(result.data);
resolve(base64String);
},
fail: (err) => {
// 处理失败情况
console.log("生成二维码失败", err)
reject(err);
}
});
});
}这是常打开的画面是没有二维码的
但是在体验版里打开了微信调试工具就可以正常出现二维码了
同时我也维护了合法域名地址
api.weixin.qq.com 相关API为服务端接口,不能在小程序内调用。你要改成在服务端调用,小程序内请求你服务端的接口。