uniapp云函数url化自动回复客服会话充值解决iso无法虚拟充值

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}&notify_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}&notify_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}&notify_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}&notify_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等
在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值