uniapp云函数url化智能客服xorpay个人账户充值解决iso无法虚拟充值
效果演示
云函数url化设置
小程序服务器配置
往下消息推送
token按时间更新具体文章看我这个链接https://blog.csdn.net/qq_21344043/article/details/127817970
个人支付平台链接:https://xorpay.com/
'use strict';
const md5 = require("md5");//上传到云公共模块
const db = uniCloud.database();
function time() {
var date = new Date();
//年
var Y = date.getFullYear();
//月
var M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
//日
var D = date.getDate() < 10 ? '0' + date.getDate() : date.getDate();
//时
var h = date.getHours();
//分
var m = date.getMinutes();
//秒
var s = date.getSeconds();
//价格加生成一个6位随机数,+年月日时间到秒order_id
var room_number = ''
var room_length = 6
var random = new Array(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
for (var i = 0; i < room_length; i++) {
//设置随机数范围,这设置为0 ~ 10
var index = Math.floor(Math.random() * 10);
//字符串拼接 将每次随机的字符 进行拼接
room_number += random[index];
}
return 'f'+room_number + Y + M + D + h + m + s
}
function isJSON(str) {
if (typeof str == 'string') {
try {
var obj = JSON.parse(str);
if (typeof obj == 'object' && obj) {
return true;
} else {
return false;
}
} catch (e) {
console.log('error:' + str + '!!!' + e);
return false;
}
} else {
return null;
console.log('It is not a string!')
}
}
exports.main = async (event, context) => {
const id = '你的'
const APP_ID = '你的';
const APP_SECRET = '你的';
const apiUrl = 'https://api.weixin.qq.com/cgi-bin/token';
let access_token = ''; //定义一个用来存放token的变量
let query = await db.collection('token').doc(id).get()
if (query.data[0].time < new Date().getTime() - 7200 * 1000) {
const res = await uniCloud.httpclient.request(apiUrl, {
method: 'GET',
timeout: 10000,
data: {
grant_type: 'client_credential',
appid: APP_ID,
secret: APP_SECRET
},
contentType: 'json', // 指定以application/json发送data内的数据
dataType: 'json' // 指定返回值为json格式,自动进行parse
})
access_token = res.data.access_token;
await db.collection('token').doc(id).update({
token: access_token,
time: new Date().getTime(),
})
// console.log("token时间有效期到已更新")
} else {
access_token = query.data[0].token;
}
//console.log("token的值", access_token)
let receiveMsg = {}
let order_id = ''
let FromUserName=''
let send = {}
if (event.body) {
if (isJSON(event.body)) {
receiveMsg = JSON.parse(event.body)
} else {
//url转jsion
var json = {}
var arr = event.body
var arr1 = arr.split('&')
for (var i = 0; i < arr1.length; i++) {
json[arr1[i].split("=")[0]] = arr1[i].split("=")[1];
}
//end
receiveMsg.MsgType = 'recharge';
order_id = json.order_id;
FromUserName=json.more;//客服消息回复openid
let decide = 110
switch (json.pay_price) {
//测试参数不用删除
case 0.01:
decide = 110;
break;
case 10:
decide = 110;
break;
case 20:
decide = 240;
break;
case 50:
decide = 700;
break;
case 100:
decide = 1800;
break;
}
//更新微信云数据库*.where({_openid:'${json.more}'})这个写法
const queryAlldata = {
"env": "killwar-t5ods",
"query": `db.collection('user').where({_openid:'${json.more}'}).update({data:{
integral: _.inc(${decide}),
balance: _.inc(${json.pay_price}),
integralrecord:_.push('${json.order_id}'),
}})`,
};
let update = await uniCloud.httpclient.request(
"https://api.weixin.qq.com/tcb/databaseupdate?access_token=" + access_token, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
dataType: "json",
data: JSON.stringify(queryAlldata),
});
console.log('充值返回状态', update, receiveMsg.MsgType)
}
}
if (receiveMsg.MsgType == "event") {
//进入客服会话时发送的欢迎语
send = {
touser: receiveMsg.FromUserName,
msgtype: "text",
text: {
content: '欢迎光临范范机器人为你服务回复1: 10元110钻石,回复2: 20元240钻石,回复3: 50元700钻石,回复4: 100元1800钻石,客服微信:fandeyang_warwolf',
}
}
} else if (receiveMsg.MsgType == "text") {
let data = {
'aid': '你的xorpay平台',
'name': '范的样钻石充值',
'pay_type': 'jsapi',
'price': '0.01',
'order_id': '01',
'notify_url': '你的url云函数地址', // 'notify_url': 'https://xorpay.com/main',
'order_uid': receiveMsg.FromUserName,
'secret': '你的xorpay平台秘钥',
'sign': '',
'more': receiveMsg.FromUserName,
}
switch (receiveMsg.Content) {
case '1':
data.price = '10';
data.order_id = data.price + time()
data.sign = md5.md5(data.name + data.pay_type + data.price + data.order_id + data.notify_url +
data.secret)
send = {
touser: receiveMsg.FromUserName,
msgtype: "link", //图文消息,网页卡片消息
link: {
title: "点击充值10元/110,回2:20元/240回3:50元/700,回4:100元/1800",
description: `单号:${data.order_id}`,
url: `https://xorpay.com/api/cashier/9987?name=${data.name}&pay_type=jsapi&price=${data.price}&order_uid=${data.order_uid}&order_id=${data.order_id}¬ify_url=${data.notify_url}&sign=${data.sign}&more=${data.more}`,
thumb_url: "https://6b69-killwar-t5ods-1300522769.tcb.qcloud.la/images/log.png"
}
}
break;
case '2':
data.price = '20';
data.order_id = data.price + time()
data.sign = md5.md5(data.name + data.pay_type + data.price + data.order_id + data.notify_url +
data.secret)
send = {
touser: receiveMsg.FromUserName,
msgtype: "link", //图文消息,网页卡片消息
link: {
title: "点击充值20元/240,回1:10元/110回3:50元/700,回4:100元/1800",
description: `单号:${data.order_id}`,
url: `https://xorpay.com/api/cashier/9987?name=${data.name}&pay_type=jsapi&price=${data.price}&order_uid=${data.order_uid}&order_id=${data.order_id}¬ify_url=${data.notify_url}&sign=${data.sign}&more=${data.more}`,
thumb_url: "https://6b69-killwar-t5ods-1300522769.tcb.qcloud.la/images/log.png"
}
}
break;
case '3':
data.price = '50';
data.order_id = data.price + time()
data.sign = md5.md5(data.name + data.pay_type + data.price + data.order_id + data.notify_url +
data.secret)
send = {
touser: receiveMsg.FromUserName,
msgtype: "link", //图文消息,网页卡片消息
link: {
title: "点击充值50元/700,回1:10元/110回2:20元/240,回4:100元/1800",
description: `单号:${data.order_id}`,
url: `https://xorpay.com/api/cashier/9987?name=${data.name}&pay_type=jsapi&price=${data.price}&order_uid=${data.order_uid}&order_id=${data.order_id}¬ify_url=${data.notify_url}&sign=${data.sign}&more=${data.more}`,
thumb_url: "https://6b69-killwar-t5ods-1300522769.tcb.qcloud.la/images/log.png"
}
}
break;
case '4':
data.price = '100';
data.order_id = data.price + time()
data.sign = md5.md5(data.name + data.pay_type + data.price + data.order_id + data.notify_url +
data.secret)
send = {
touser: receiveMsg.FromUserName,
msgtype: "link", //图文消息,网页卡片消息
link: {
title: "点击充值100元/1800,回1:10元/110回2:20元/240回3:50元/700",
description: `单号:${data.order_id}`,
url: `https://xorpay.com/api/cashier/9987?name=${data.name}&pay_type=jsapi&price=${data.price}&order_uid=${data.order_uid}&order_id=${data.order_id}¬ify_url=${data.notify_url}&sign=${data.sign}&more=${data.more}`,
thumb_url: "https://6b69-killwar-t5ods-1300522769.tcb.qcloud.la/images/log.png"
}
}
break;
default:
send = {
touser: receiveMsg.FromUserName,
msgtype: "text",
text: {
content: '不在机器人服务范围回复1: 充值10元到账110钻石,回复2: 充值20元到账240钻石,回复3: 充值50元到账700钻石,回复4: 充值100元到账1800钻石,客服微信:fandeyang_warwolf',
}
}
break;
}
} else if (receiveMsg.MsgType == "recharge") {
send = {
touser: FromUserName,
msgtype: "text",
text: {
content: `充值成功返回单号:${order_id}`,
}
}
} else {
send = {
touser: receiveMsg.FromUserName,
msgtype: "text",
text: {
content: '不在机器人服务范围回复1: 充值10元到账110钻石,回复2: 充值20元到账240钻石,回复3: 充值50元到账700钻石,回复4: 充值100元到账1800钻石,客服微信:fandeyang_warwolf',
}
}
}
//发送消息
await uniCloud.httpclient.request(
"https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=" + access_token, {
method: "POST",
headers: {
"Content-Type": "application/json"
},
dataType: "json",
data: send,
});
//返回数据给客户端
return "success";
};
软件体验 狼人杀法官语音助手,3人开房斗地主,更多技术欢迎沟通,代做项目开发网站unity3D等