|
|
@@ -1,4 +1,6 @@
|
|
|
import Msg from '../utils/msg'; // 确保路径是正确的
|
|
|
+import QuickAsy from '../utils/quickAsy';
|
|
|
+import { parseString } from 'xml2js';
|
|
|
import {
|
|
|
RefreshToken,
|
|
|
PackageName,
|
|
|
@@ -386,6 +388,114 @@ const appleCallPay = async (ctx) => {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+//qucik发货
|
|
|
+//扩展参数格式为${serverId};${productId}
|
|
|
+const CallPayQucik = async (ctx) => {
|
|
|
+ let ret = {
|
|
|
+ code: 0,
|
|
|
+ msg: '发货失败'
|
|
|
+ }
|
|
|
+ //sdk参数
|
|
|
+ let md5Key = "gaug5awijz5kdqfkzdmikjfrt4jbpv5f"
|
|
|
+ let callbackKey = "19404462610366331550315911887318"
|
|
|
+
|
|
|
+ let data = ctx.request.body
|
|
|
+ logger.info("qucik 回调参数",{"data":data})
|
|
|
+ let md5Sign = data.md5Sign
|
|
|
+ let ntData = data.nt_data
|
|
|
+ let verifySignData = QuickAsy.getSign(data,md5Key)
|
|
|
+ if(verifySignData != md5Sign){
|
|
|
+ logger.error("quick 调用md5Sign错误",{'$verifySignData':verifySignData,'md5Sign':md5Sign})
|
|
|
+ return ret
|
|
|
+ }
|
|
|
+ let xmlData = QuickAsy.decode(ntData,callbackKey)
|
|
|
+ const result = await new Promise((resolve, reject) => {
|
|
|
+ parseString(xmlData, (err, result) => {
|
|
|
+ if (err) {
|
|
|
+ return reject(err);
|
|
|
+ }
|
|
|
+ resolve(result);
|
|
|
+ });
|
|
|
+ });
|
|
|
+ const message = result.quicksdk_message.message[0];
|
|
|
+ const channel = message.channel[0];
|
|
|
+ const orgMemId = message.channel_uid[0];
|
|
|
+ const channelOrder = message.channel_order[0];
|
|
|
+ const orderId = message.game_order[0];//cp单号
|
|
|
+ const orderNo = message.order_no[0];//sdk订单号
|
|
|
+ const payTime = message.pay_time[0];
|
|
|
+ const orgProductPrice = message.amount[0]; //充值成功的金额
|
|
|
+ const status = message.status[0];//0成功
|
|
|
+ const extrasParams = message.extras_params[0];
|
|
|
+ if(status == 1){
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let extrasArr = extrasParams.split(";")
|
|
|
+ let serverId = extrasArr[0] //区服id
|
|
|
+ let orgProductId = extrasArr[1]//商品id
|
|
|
+
|
|
|
+
|
|
|
+ const orderInfo = (await Order.getOrder(orderId))[0]
|
|
|
+
|
|
|
+ if (!orderInfo) {
|
|
|
+ logger.info(`订单${orderId}不存在`)
|
|
|
+ ret.msg = `订单${orderId}不存在`
|
|
|
+ return ret
|
|
|
+ }
|
|
|
+
|
|
|
+ if (orderInfo.status == 2) {
|
|
|
+ logger.info(`订单${orderId}已经重复发货`)
|
|
|
+ ret.code = 1
|
|
|
+ ret.msg = `订单${orderId}已经重复发货`
|
|
|
+ return ret
|
|
|
+ }
|
|
|
+ let url = await getServerList(serverId, 'default')
|
|
|
+ if (!url) {
|
|
|
+ logger.info(`区服id错误: serverId ${serverId}`)
|
|
|
+ ret.msg = `区服id错误: serverId ${serverId}`
|
|
|
+ return ret
|
|
|
+ }
|
|
|
+ return ///=========
|
|
|
+ //发货
|
|
|
+ // 使用 Msg 类的 connect 方法连接到 WebSocket 服务器
|
|
|
+ let sendMsg = new Msg()
|
|
|
+ sendMsg.connect(url, Account);
|
|
|
+ logger.info(`订单${orderId} ${url}`)
|
|
|
+ // 在适当的时机,调用 CG_ASK_LOGIN 方法
|
|
|
+ let params = `{"account":"${orgMemId}","order":"${orgOderId}","id":${orgProductId},"cnt":100,"money":${orgProductPrice}}`
|
|
|
+ return new Promise((resolve) => {
|
|
|
+ setTimeout(async () => {
|
|
|
+ console.log("这个消息将在3秒后打印出来");
|
|
|
+ const send_res = sendMsg.CG_ASK_LOGIN(Account, 0, "", 'cn', 'CN', ctx.request.ip, params);
|
|
|
+ if (!send_res) {
|
|
|
+ resolve(ret);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ const update_time = formatDate(new Date())
|
|
|
+ const res = await Order.updateOrderStats(
|
|
|
+ orderId,
|
|
|
+ 2,
|
|
|
+ out_trade_no,
|
|
|
+ update_time
|
|
|
+ );
|
|
|
+
|
|
|
+ if (res.affectedRows <= 0) {
|
|
|
+ logger.info(`订单${orderId} 发货失败`)
|
|
|
+ ret.msg = '发货失败'
|
|
|
+ resolve(ret);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ ret.code = 1
|
|
|
+ ret.msg = '发货成功'
|
|
|
+ resolve(ret);
|
|
|
+
|
|
|
+ }, 1000);
|
|
|
+ });
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
const CallPay360 = async (ctx) => {
|
|
|
let ret = {
|
|
|
code: 0,
|
|
|
@@ -629,6 +739,7 @@ const checkVersion = async (ctx) => {
|
|
|
const checkUserToken = async (ctx) => {
|
|
|
}
|
|
|
|
|
|
+
|
|
|
class ApiController {
|
|
|
async createOrder(ctx) {
|
|
|
let {
|
|
|
@@ -681,7 +792,33 @@ class ApiController {
|
|
|
// ctx.body = data
|
|
|
}
|
|
|
|
|
|
+ //quick登陆
|
|
|
+ async quickUserLogin(ctx){
|
|
|
+ //sdk参数
|
|
|
+ let productCode = "68402796563185068148745974229755"
|
|
|
+
|
|
|
+ let data = ctx.request.body
|
|
|
+ let uid = data.uid
|
|
|
+ let token = data.token
|
|
|
+ let reqUrl = "http://checkuser.quickapi.net/v2/checkUserInfo?token="+token+"&uid="+uid+"product_code="+productCode
|
|
|
+ logger.info("quick登陆验证请求",{'params':data,'url':reqUrl})
|
|
|
+ const res = await axios.get(reqUrl)
|
|
|
+ logger.info("quick req",{"res":res.data})
|
|
|
+ if(res.data == '1'){
|
|
|
+ ctx.body = {
|
|
|
+ code: 200,
|
|
|
+ msg: 'success'
|
|
|
+ }
|
|
|
+ }else{
|
|
|
+ ctx.body = {
|
|
|
+ code: 0,
|
|
|
+ msg: 'fail'
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
async callPay(ctx) {
|
|
|
+ console.log(234234234)
|
|
|
let data = ctx.request.body
|
|
|
let platform = '360' // 默认360
|
|
|
|
|
|
@@ -714,6 +851,11 @@ class ApiController {
|
|
|
// console.log('发货结果', result)
|
|
|
// ctx.body = result
|
|
|
// break;
|
|
|
+ case 'quick':
|
|
|
+ var result = await CallPayQucik(ctx)
|
|
|
+ console.log('发货结果', result)
|
|
|
+ ctx.body = result
|
|
|
+ break;
|
|
|
default:
|
|
|
ctx.body = {
|
|
|
code: 0,
|