云函数:
const cloud = require('wx-server-sdk'); //初始化云函数
cloud.init({
env: {
database: 'zhatuche001-9ed94', //数据库操作的默认环境
storage: 'zhatuche001-9ed94', //文件存储的默认环境
functions: 'zhatuche001-9ed94', //调用其它云函数的默认环境
traceUser: true, //是否将来方用户记录在后台中
//cloud: DYNAMIC_CURRENT_ENV//// API 调用都保持和云函数当前所在环境一致
}
});
const db = cloud.database(); //获取数据库的引用 无参数,用默认环境
const _ = db.command
exports.main = async (event, context) =>{
const wxContext = cloud.getWXContext()
const OPENID=wxContext.OPENID
const {
DangHao,
SJ_str32
}=ShengCeng_DH_SJ()//获取单号和随机字符串
//const JingEr=ShangPing[XuanZe[0]][XuanZe[1]].SuoDe.JiaGe//商品价格
const JingEr=1//先订义下单金额为0.01元
//++++++++++++++++++++++++++调用统一下单接口 开始
const res=await cloud.cloudPay.unifiedOrder({
envId: 'ZhiFu', //结果通知回调云函数环境(必要)
functionName: 'zhatuche001-9ed94', //结果通知回调云函数名(必要)
subMchId: '1611281096', //子商户号(必要)
//nonceStr: SJ_str32, //随机字符串(必要)
nonceStr:'12345678901234567890123456789012',//先强行凑够32位
body: '金币/钻石购买', //商品描述(必要)
attach: '虚拟商品,不退不换', //附加数据(非必要)
outTradeNo: DangHao, //商户订单号(必要)
totalFee: JingEr, //总金额(必要)
spbillCreateIp: '127.0.0.1', //终端IP(必要)
tradeType: 'JSAPI', //交易类型(必要)
openid: OPENID, //用户标识符(必要)
})
res.DangHao=DangHao;//单号
res.JingEr=JingEr;//下单所选金额
let payData=event.payDate//结果
payData.DangHao=DangHao//单号
payData.ZhiFuZhuangTai=false//支付状态 未支付
payData.JingEr=JingEr//支付的金额
payData.openId=OPENID//用户的openid
payData.ShiJian=new Date()//创建时间
payData.DingDang=res//订单
//拦截处理 为保持数据库字段一至性
if(res.returnCode == 'SUCCESS' && res.resultCode == 'SUCCESS'){
//在云数据库中写入未支付的订单信息
let FangHuiNeiRong=await db.collection('ZhiFu').add({
data:PayData
})
//将该记录的_id携带 返回给用户端
res._id=FangHuiNeiRong._id
return res;
}else{
return res
}
}
/**
* 生成订单号和随机字符串
* 返回单号和随32位随机字符串
*/
function ShengCeng_DH_SJ(){
const str = 'ABCDEFGHJKMNPQRSTWXYZabcdefhijkmnprstwxyz2345678'; //****默认去掉了容易混淆的字符oOLl,9gq,Vv,Uu,I1
let SJ_str32=''//32位随机字符串
for(let i=0;i<32;i++){
/**
* charAt:返回字符串中第几个字符
* Math.floor:对值进行下舍入
* Math.random:返回0-1之间的随机数
* 全文:
*/
SJ_str32+=str.charAt(Math.floor(Math.random()*str.length))
}
let DangHao=''//订单号
let ShiJian=new Date().getTime()-8*60*60*1000
for(let i=0;i<6;i++){//6位随机数,用于加在时间戳后面
DangHao+=Math.floor(Math.random() * 10)
}
DangHao='COP'+ShiJian+DangHao
return{
DangHao,
SJ_str32
}
}
提示错误:
Error: cloud.callFunction:fail -404011 cloud function execution error. 云函数执行错误
云端堆栈信息(error stack)(requestId b6953493-d87f-11eb-a5d4-525400b8ee5a, callid 1624932856834-0.046614243876275774):
Error: cloudPay.unifiedOrder:fail -501001 resource system error. source.on is not a function
at toSDKError (:42847/var/user/node_modules/wx-server-sdk/index.js:8088)
at Object.returnAsFinalCloudSDKError (:42847/var/user/node_modules/wx-server-sdk/index.js:8059)
at callCloudPayAPI (:42847/var/user/node_modules/wx-server-sdk/index.js:941)
求问:source.on是什么东西?怎么解决
package.json:
{
"name": "ZhiFu",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC",
"dependencies": {
"wx-server-sdk": "latest"
}
}
你好,麻烦补充下requestID