小程序也绑定了云环境,其他支付那些功能都写完了没有问题,就在生成二维码这个地方提示没权限,我也检查了长度没有超出32个字符
我的日志如下:
返回结果
{"success":false,"error":"errCode: -604101 function has no permission to call this API | errMsg: system error: error code: -604101"}
日志
START RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3
Event RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3
2025-04-04T11:08:00.757Z 生成小程序码失败: CloudSDKError: errCode: -604101 function has no permission to call this API | errMsg: system error: error code: -604101
at callGeneralOpenAPI (/var/user/node_modules/wx-server-sdk/index.js:487:27)
at processTicksAndRejections (node:internal/process/task_queues:96:5)
at async callWXOpenAPI (/var/user/node_modules/wx-server-sdk/index.js:2364:28)
at async exports.main (/var/user/index.js:12:20) {
errCode: -604101,
errMsg: 'system error: error code: -604101'
}
Response RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3 RetMsg: {"success":false,"error":"errCode: -604101 function has no permission to call this API | errMsg: system error: error code: -604101"}
END RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3
Report RequestId: d0024bdd-3d12-4b8b-9a61-b7695bcf85f3 Duration: 180ms Memory: 256MB MemUsage: 22.613281MB
代码如下:
// 云函数入口文件
const cloud = require('wx-server-sdk')
cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV })
// 云函数入口函数
exports.main = async (event, context) => {
try {
const wxContext = cloud.getWXContext()
const openid = event.openid || wxContext.OPENID
// 生成小程序码(简化版)
const result = await cloud.openapi.wxacode.getUnlimited({
scene: `i=${openid}`, // 缩短键名以适应32字符限制
page: 'pages/index/index',
width: 430, // 使用更大的尺寸便于扫码
isHyaline: false, // 不透明背景
autoColor: false, // 不使用自动配色
lineColor: { r: 0, g: 0, b: 0 } // 黑色线条
})
// 上传到云存储
const uploadResult = await cloud.uploadFile({
cloudPath: `qrcodes/${openid}_${Date.now()}.jpg`,
fileContent: result.buffer
})
// 获取临时访问链接
const fileResult = await cloud.getTempFileURL({
fileList: [uploadResult.fileID]
})
return {
success: true,
fileID: uploadResult.fileID,
tempFileURL: fileResult.fileList[0].tempFileURL,
}
} catch (error) {
console.error('生成小程序码失败:', error)
return {
success: false,
error: error.message
}
}
}