微信云开发官网
该配置的已经配置,抽奖时一直转圈不会停,还会提示网络异常 [图片]
云开发模拟器生成二维码可以支付,真机调试就说缺少total_fee,奇葩?找不到原因,是因为没上线么,还是哪里需要配置,微信真是奇葩,无语了,文档也好少,根本不明白为啥产生这个问题,怎么解决? const cloud = require('wx-server-sdk') cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) exports.main = async (event, context) => { const res = await cloud.cloudPay.unifiedOrder({ "body" : event.msg, // 商品描述 "outTradeNo" : event.outTradeNo, // 商户订单号 "spbillCreateIp" : "127.0.0.1", // 终端 IP "subMchId" : "16xxxx", // 商户号 "totalFee" : event.totalFee, // 总金额 "envId": "xxxxx", // 云函数环境名称 "functionName": "payback" // 支付结果通知回调云函数名 }) return res }
用户提交注册信息后,使用 [代码]watch[代码] 方法成功监听到数据已提交。然而,当我在数据提交后立即进行查询时,却无法获取到刚刚提交的数据。 补充:如果新建数据后,刷新小程序,调用同一个查询函数,会获取到数据。 app.router("SignUp", async (ctx, next) => { const { nickName, documentType, nationality } = event.value; const collections = [ { name: "Users", data: { nickName, nationality, open_id: wxContext.OPENID, status: status.PENDING_REDRIVE, }, }, { name: "CertData", data: { documentType, }, }, ]; try { const result = await db.runTransaction(async (transaction) => { const uploadPromises = collections.map(async (collection) => { const params = { unionid_id: wxContext.UNIONID, createAt, ...collection.data, }; const { _id } = await transaction.collection(collection.name).add({ data: params }); return { _id, type: collection.name }; }); return Promise.all(uploadPromises); }); ctx.body = { data: result }; } catch (error) { console.error("Transaction error: ", error); ctx.body = { error: error.message }; } }); [图片]
说一下没有子商户,只有商户号,就是用的以前的支付接口,这是云开发没有后端代码那个notify_url不写还不行, 不知道哪里有问题, 签名在微信工具里验证通过,调用下单接口就报签名错误,希望会的人答疑解惑一下,谢谢啦 //2 openid 就是支付用户的识别号 const mch_id = 'xxx '; // 商户号 const key = 'xxxxx'; // 商户密钥 const cloud = require('wx-server-sdk') const rp = require('request-promise') const crypto = require('crypto') cloud.init() function getSign(args) { let sa = [] for (let k in args) sa.push(k + '=' + args[k]) sa.push('key=' + key) console.log(sa.join('&')) return crypto.createHash('md5').update(sa.join('&'), 'utf8').digest('hex').toUpperCase() } function getXml(args) { let sa = [] for (let k in args) sa.push('<' + k + '>' + args[k] + '</' + k + '>') sa.push('<sign>' + getSign(args) + '</sign>') let axml = '<xml>' + sa.join('') + '</xml>' console.log("最后签名:",axml) return axml } function getNonceStr(){ var chars = ['0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z']; var nums=""; for(var i=0;i<32;i++){ var id = parseInt(Math.random()*61); nums+=chars[id]; } nums= nums.toLowerCase() return nums ; } exports.main = async (event, context) => { const wxContext = cloud.getWXContext() const appId = appid = wxContext.APPID console.log("appid是:", appid, appId) console.log("key是:", key) const openid = wxContext.OPENID // const attach = 'attach' const body = event.msg; const total_fee = event.totalFee; const notify_url = "http://127.0.0.1" const spbill_create_ip = "127.0.0.1" const fee_type = "CNY" // const nonceStr = nonce_str = Math.random().toString(36).substr(2, 15) const nonceStr = nonce_str = getNonceStr() const timeStamp = parseInt(Date.now() / 1000) + '' const out_trade_no = event.outTradeNo; const trade_type = "JSAPI" const sign_type = "MD5" const xmlArgs = { appid, // attach, body, fee_type, mch_id, nonce_str, notify_url, openid, out_trade_no, sign_type, spbill_create_ip, total_fee, trade_type, } let xml = (await rp({ url: "https://api.mch.weixin.qq.com/pay/unifiedorder", method: 'POST', body: getXml(xmlArgs) })).toString("utf-8") console.log("签名是:",xml) if (xml.indexOf('prepay_id') < 0) return xml let prepay_id = xml.split("<prepay_id><![CDATA[")[1].split("]]></prepay_id>")[0] let payArgs = { appId, nonceStr, package: ('prepay_id=' + prepay_id), signType: 'MD5', timeStamp } return { ...payArgs, paySign: getSign(payArgs) } }
console.log(event); console.log('cloud.openapi.phonenumber.getPhoneNumber', cloud.openapi.phonenumber.getPhoneNumber); const data = await cloud.openapi.phonenumber.getPhoneNumber({ code: event.code }); console.log('Phone number result:', result); console.log(data); event.code有值,我通过测试真机获取的code值,但是一直报这个错误 Error: errCode: 40029 | errMsg: openapi.phonenumber.getPhoneNumber:fail invalid code hint: [ukKEWXore-k5T0Ga] rid: 6717ab8d-5595451b-2597bed3
在这个文档中 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/guide/database/security-rules.html#%E7%A4%BA%E4%BE%8B-1%EF%BC%9A%E7%BE%A4%E8%81%8A 有下面这个数据库安全规则: [图片] 以及这个集合字段结构: [图片] 然后,我按照这个文档,新建一个同样的 room 集合: [图片] 然后把安全规则改为和文档中一致: [图片] 规则如下: { "read": "auth.openid in get('database.room.${doc._id}').members", "write": false } 现在,已经确保文档中有一个members数组,并且当前用户的openid在这个数组中,然后使用下面的代码读取数据: getApp().cloud.database().collection('room').where({ _id: '9c1e6a3167178ee4108f089b78b14371' }).get() 此时抛出如下的权限不足错误: [图片] 就算把代码改成如下形式也依然有这个错误: getApp().cloud.database().collection('room').doc('9c1e6a3167178ee4108f089b78b14371').get() 那么,要如何才能读取这个数据呢? 如果可以读取,好像文档并没有讲解如何读取?如果没有办法读取,那就表示微信文档有错误?
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/customer-message/trans.htmlhttps://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/customer-message/trans.html 因为现在用代码给客户发的消息,客服在接入后是看不到的,如何解决这个问题?
在使用微信云开发云数据库时,如果安全规则为: { "read": "auth.openid in doc.users" } ,此时如何读取数据? (这里忽略write权限,暂时只考虑read权限。) 无论我使用: const _ = db.command const res = await db.collection('xxx') .where({ users: _.all(['{openid}']), }) .get() 或者使用: const _ = db.command const res = await db.collection('xxx') .where({ users: _.elemMatch(_.eq('{openid}')) }) .get() 都会抛出 Error: errCode: -502003 database permission denied | errMsg: Permission denied 权限不足的错误。 我的目的是,只要是用户的 _openid 在文档的 users 这个字段中,就有读取权限。 但是目前无论怎么写查询语句,都会抛出这个权限不足的错误,请问如何处理? ======= 补充 ======= 我把这个问题重新整理后,提了一个新的关联问题: https://developers.weixin.qq.com/community/develop/doc/000a2c023f08b83f0652b6a5e6ac00?fromCreate=0
cloud.tencent.com [图片]
[图片] 云开发静态部署报错:Cannot read properties of undefined (reading 'EnvType')
[图片][图片] 想使用之前的cms内容管理,创建时候强制使用数据库管理系统? 这个使用起来不直观,没有之前的cms内容管理方便 如何创建cms内容管理?着急使用
如下图,已经完成了新建APIs的工作: [图片] 但是在「云开发连接器」下拉选框这里依旧找不到任何可选项(刷新也没有用),如何解决? [图片]
wx.cloud.database 已经是参数化查询了吗?我试着用$gt:0之类的注入不成功 const db = wx.cloud.database(); console.log(this.data.JINGQUEag) db.collection('COA').where({ 科目:this.data.JINGQUEag, })
请问在微信云开发.云后台里,为什么没有看到有创建APIS的页面入口了呢?有谁知道在哪儿能打开并创建APIS的入口页面呢? [图片]
报错无法连接 ERR_CONNECTION_REFUSED
[图片]我云开发中安装的用户个人中心的模板,如何才能链接到我自己的小程序项目中的个人中心里面去[图片]
基础库3.6.1,微信版本号1.06.2409140 在云函数中使用startTransaction()API是,无法使用rollback和commit两个API。且开发工具中对于db.startTransaction()的信息,显示的是(method) DB.Database.startTransaction(): Promise<any>,而不是Promise<Transaction>[图片]
云开发的小程序,甲方要求上线前开展信息安全风险测评,有没有懂的大佬,测评怎么做?不会要几万块吧?
下载源码修改配置后上传 zip 文件 部署,提示部署失败 [图片]
在学习中,想实现一个置顶功能,用云函数定时器,到时间删除字段实现取消置顶功能,调用成功,返回的结果是null,是什么问题? [图片] [图片] 云函数代码: 定时器: { "permissions": { "openapi": [ ] }, "triggers":[ { "name":"mytimer", "type":"timer", "config":"*/30 * * * * * *" } ] } 执行代码: // 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() const db = cloud.database() const _ = db.command // 云函数入口函数 exports.main = async (event, context) => { exports.schedule = { run:async() => { const currentTime = new Date().getTime(); return await db.collection("wehicle").where({timelength:topping.timelength}).watchChanges({ onChange:snapshot => { snapshot.docs.forEach(doc => { if(doc.topping.timelength < currentTime){ await db.collection("wehicle").doc(doc._id).update({ data:{ topping:_.remove() } }) } }) } }) }, } }
小程序示例
小程序官方示例Demo,包含云开发示例。
小程序示例
扫码体验
可以提供一下环境ID和具体的小程序内的报错信息,图片里只有控制台