import cloud from '@lafjs/cloud' import * as crypto from 'crypto'; const db = cloud.database(); const ThinkingData = require('thinkingdata-node'); export default async function (ctx: FunctionContext) { let uid = ctx.body.uid; let outTradeNo = ctx.body.outTradeNo; let user = await db.collection("users").where({ _id: uid }).getOne(); if (user.data == null) { return { code: 0, data: null, msg: "未获取到玩家数据" }; } let res = await db.collection("order").where({ outTradeNo: outTradeNo }).getOne(); if (res.data.state == 1) { return { code: 1, data: { pay_state: 2 }, msg: "成功" }; } else if (res.data.state == 2) { return { code: 1, data: { pay_state: 1, }, msg: "已领取奖励" } } else { return { code: 0, data: { pay_state: 1, }, msg: "充值未成功" } }; // let time =Date.now(); // let uid = ctx.body.uid; // let outTradeNo = ctx.body.outTradeNo; // let user = await db.collection("users").where({ _id: uid }).getOne(); // if (user.data == null) { // return { code: 0, data: null, msg: "未获取到玩家数据" }; // } // let res = await db.collection("order").where({ outTradeNo: outTradeNo }).getOne(); // if (res.data.state == 1) { // return { code: 1, data:{ // pay_state:2 // }, msg: "成功" }; // }else{ // return {code:1,data:{ // pay_state:1, // },msg:"失败"} // }; // let session_key = user.data.session_key; // let token = cloud.shared.get('wxaccess_token'); // if (!token) { // return { code: 0, data: null, msg: "token获取失败" }; // } // const info = { // "openid": user.data.openid, // "offer_id": "1450390549", // "ts": Math.floor(Date.now() / 1000), // "zone_id": "1", // "env": 0, // "out_trade_no": outTradeNo, // "biz_id": 2 // } // const signature = hmacSha256(session_key, JSON.stringify(info)); // const key = "4HfZwqLjVkLb6s4TfIxRGKaTxgvvL1rl"; // let data = '/wxa/game/queryorderinfo' + '&' + JSON.stringify(info); // const pay_sig = hmacSha256(key, data); // const url = `https://api.weixin.qq.com/wxa/game/queryorderinfo?access_token=${token}&signature=${signature}&sig_method=hmac_sha256&pay_sig=${pay_sig}`; // const response = await cloud.fetch(url, { // url: url, // method: 'POST', // headers: { // 'Content-Type': 'application/json;charset=utf-8' // }, // data: JSON.stringify(info) // }) // // console.log("查询充值结果"); // // console.log(response.data); // let ret = await db.collection("order").where({ "outTradeNo": outTradeNo }).getOne(); // let payment_name = ""; // if (ret.data) { // if(propName[ret.data.itemid]){ // payment_name = propName[ret.data.itemid]; // }else{ // payment_name = ret.data.itemid; // } // } // response.data.payment_name=payment_name; // response.data.goodsPrice=ret.data.goodsPrice; // //console.error("充值结果"); // //console.log(response.data); // if (response.data.pay_state==2){ // let res = await db.collection("order").where({ outTradeNo:outTradeNo}).getOne(); // // console.log(res); // // console.log // if(res.data&&res.data.state==0){ // await db.collection("order").where({ outTradeNo:outTradeNo}).update({ state: 1 }); // sead(res.data, user.data, getClientIp(ctx)); // console.error("充值结果:"+(Date.now()-time)); // } // } //return { code: 1, data: response.data, msg: "成功" }; } const propName = { "金币包1": "gold_1", "金币包2": "gold_2", "金币包3": "gold_3", "金币包4": "gold_4", "金币包5": "gold_5", "金币包6": "gold_6", "无限体力组合包1": "unlimited_health_bundle_1", "无限体力组合包2": "unlimited_health_bundle_2", "无限体力组合包3": "unlimited_health_bundle_3", "局内购买冻结": "freeze_in_game", "局内购买锤子": "hammer_in_game", "局内购买魔棒": "wand_in_gamerefill", "补满体力": "health", "新手礼包": "starter_pack", }; function hmacSha256(sessionKey, signData) { const hmac = crypto.createHmac('sha256', sessionKey); hmac.update(signData); return hmac.digest('hex'); } const getClientIp = (req) => { return ( req.headers['x-forwarded-for']?.split(',')[0]?.trim() || // 代理链中的第一个 IP req.headers['x-real-ip'] || // Nginx 配置的 real-ip req.socket.remoteAddress // 原始 IP(可能是代理) ); }; async function sead(order, userInfo, ip) { console.error("上传数数"); //db.collection("susu").add({order: order,time: Date.now()}); if (!userInfo.distinctId) { console.log("未找到distinctId无法上传数数") return; } let id = '87d18958cea145f29d3265470ecd3486'; if (userInfo.isDebug != "true") { id = '121591378fc1423893deb12041413eb3'; } let teSDK = ThinkingData.initWithBatchMode(id, 'https://data.nika4fun.com/sync_data', { dryRun: false, // report data to TE or not deviceId: "123456789",//设备唯一标识 }); let trackEvent = { accountId: order.openid, distinctId: userInfo.distinctId,//访客id event: 'payment', time: new Date(Date.now() + 8 * 3600000), ip: ip, properties: { order_id: order.outTradeNo, pay_amount: order.goodsPrice, payment_name: order.itemid, payment_num: order.itemCount, payment_type: "Android", current_level: userInfo.levelAmount, //当前关卡等级 number current_health: userInfo.healthAmount, //当前体力值 tmp_coin: userInfo.coinAmount,//当前金币 version: "1.6", user_id: userInfo._id, //用户id pay_user: userInfo.pay_user, register_time: userInfo.register_time }, callback(e) {if (e) {}} }; teSDK.track(trackEvent); teSDK.close(); return; }