Compare commits

...

1 Commits

Author SHA1 Message Date
huanghaipeng 0808489f16 同步测试服务器代码 2026-09-02 17:34:36 +08:00
34 changed files with 190 additions and 253 deletions

View File

@ -1,7 +1,7 @@
import cloud from '@lafjs/cloud';
import * as crypto from 'crypto';
const appid = 'wx30f74367b3d3e7a6'; // 微信小程序 AppId
const appsecret = 'a3417fe674feadb77809d8f9a365190d'; // 微信小程序 AppSecret
const appsecret = process.env.WX_MINIGAME_APP_SECRET; // 微信小程序 AppSecret
//定时获取Token
export default async function (ctx: FunctionContext) {
@ -44,10 +44,10 @@ async function getWxToken1() {
}
async function PostToken(wxToken) {
const token = `rR0KncGAzwyjSjaxCcJvtkbfVhkszLiI`;
const token = process.env.GRAVITY_ACCESS_TOKEN;
const url = `https://backend.gravity-engine.com/event_center/api/v1/base/wx/access_token/refresh/?access_token=${token}`;
const time = Math.floor(Date.now() / 1000);
const appkey = `1RU5blZdYzulktjApFONuwgQJx7erwzDfdPoig0yM9opSbIq32BTH4Kvj6hfcmir`;
const appkey = process.env.GRAVITY_APP_KEY;
const str: string = `app_key=${appkey}&wx_access_token=${wxToken}&current_time=${time}`;
const sign: string = crypto.createHash('md5').update(str).digest('hex').toLowerCase();
const data = {

View File

@ -2,7 +2,7 @@ import cloud from '@lafjs/cloud'
const db = cloud.database();
const COLLECTION = "ab_config";
const DEFAULT_ADMIN_TOKEN = "abtest-admin-token";
const DEFAULT_ADMIN_TOKEN = process.env.AB_ADMIN_TOKEN;
export default async function (ctx: FunctionContext) {
const action = ctx.body?.action || ctx.query?.action || "list";

View File

@ -1,10 +1,10 @@
import cloud from '@lafjs/cloud'
const db = cloud.database();
export default async function (ctx: FunctionContext) {
await db.collection("sRank").where({ _id: "69fabd35b4d89b170da4bf5e" }).update({ total: null });
await db.collection("sRank").where({ _id: process.env.SRANK_ID }).update({ total: null });
await db.collection("users").update({ levelTJ: 0, addLevel: 0 }, { multi: true });
await db.collection("usersAd").update({ levelTJ: 0, addLevel: 0 }, { multi: true });
await db.collection("sRank").where({ _id: "69fabd35b4d89b170da4bf5e" }).update({ total: null });
await db.collection("sRank").where({ _id: process.env.SRANK_ID }).update({ total: null });
cloud.shared.set("iosOrder", {});
return { data: 'hi, laf' }
}

View File

@ -1,37 +1,15 @@
import cloud from '@lafjs/cloud'
const db = cloud.database();
import Utils from "@/Utils";
export default async function (ctx: FunctionContext) {
let code = ctx.body.code;
if (!code) {
return { data: "code无效" };
let cdk = ctx.body.cdk;
cdk = cdk.toLowerCase();
let info = await db.collection("idcount").where({ _id: process.env.IDCOUNT_NAME }).getOne();
let count = info.data.count;
if (count.includes(cdk)) {
return { code: 0, data: "兑换码已存在" };
}
let type = ctx.body.type;
let res = await db.collection("cdk").where({ code: code }).getOne();
if (type == 1) {
if (res.data && res.data.code == code) {
return { data: "兑换码" + code + "已存在" };
}
let ret = await db.collection("cdk").add({
code: code,
creatTime: new Date(Date.now() + 8 * 3600000),
start: ctx.body.start_time,
end_time: ctx.body.end_time,
})
if (ret.id) {
return { data: "兑换码" + code + "保存成功" };
} else {
return { data: "兑换码" + code + "保存失败" };
}
} else if (type == 2) {
if (!res.data) {
return { data: "兑换码不存在" };
}
let ret1 = await db.collection("cdk").where({ code: code }).remove({ multi: true });
if (ret1.ok) {
return { data: "兑换码" + code + "删除成功" };
} else {
return { data: "兑换码" + code + "删除失败" };
}
}
}
count.push(cdk);
await db.collection("idcount").where({ _id: process.env.IDCOUNT_NAME }).update({ count: count });
return { code: 1, data: "兑换码保存成功" };
}

View File

@ -32,7 +32,7 @@ export default async function (ctx: FunctionContext) {
let headArr = res.data.headArr;
if (!headArr) {
headArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17]; ];
headArr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17] ];
}

View File

@ -8,7 +8,7 @@ export default async function (ctx: FunctionContext) {
if (gameName == "iaa") {
res1 = await db.collection("rank").where({ _id: "" }).getOne();
} else {
res1 = await db.collection("rank").where({ _id: "69fac0d98463a95668c5e5d9" }).getOne();
res1 = await db.collection("rank").where({ _id: process.env.RANK_ID }).getOne();
}
let rank = JSON.parse(res1.data.rank)
let list = [];

View File

@ -2,13 +2,11 @@ import cloud from '@lafjs/cloud'
const db = cloud.database();
import Utils from "@/Utils";
export default async function (ctx: FunctionContext) {
const uid = ctx.body.uid;
let db1 = "69fabd35b4d89b170da4bf5e";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
db1 = "69fabd418463a95668c5e5d3";
}
let rankInfo = await db.collection("sRank").where({ _id: db1 }).getOne();
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// db1 = "69fabd418463a95668c5e5d3";
// }
let rankInfo = await db.collection("sRank").where({ _id: process.env.SRANK_id }).getOne();
//console.log(rankInfo);
return { code: 1, data: rankInfo.data.total, msg: "成功" };
}

View File

@ -1,80 +1,30 @@
import cloud from '@lafjs/cloud'
const db = cloud.database();
import Utils from "@/Utils";
const taskTarget = {
levelPass: 3,
share: 1,
useEnergy: 10,
useProp: 3,
}
export default async function (ctx: FunctionContext) {
const uid = ctx.body.uid;
const taskType = JSON.parse(ctx.body.taskType);
if (!uid) {
return { code: 0, data: null, msg: "未获取到uid" };
}
if (!taskType) {
return { code: 0, data: null, msg: "未获取到taskType" }
}
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
let res = await db.collection(dbname).where({ _id: uid }).getOne();
if (res.data == null) {
return { code: 0, data: null, msg: "未获取到用户信息" };
}
const token1 = ctx.body.token;
if (res.data && res.data.token) {
let istoken = Utils.checkToken(token1, res.data.token);
if (!istoken) {
return { code: 0, data: null, msg: "token校验失败" };
if (!res.data) {
return {
code: 0, data: { id: null, name: null, useravatar: null, useravatarIcon: null }, msg: "未获取到玩家信息"
}
}
let task = res.data.task;
if (task) {
task = JSON.parse(task);
} else {
task = {
levelPass: {
value: 0,
state: 0,
},
share: {
value: 0,
state: 0,
},
useEnergy: {
value: 0,
state: 0,
},
useProp: {
value: 0,
state: 0,
}
}
return {
code: 1,
data: {
id: res.data._id,
name: res.data.username,
useravatar: res.data.useravatar,
useravatarIcon: res.data.useravatarIcon
},
msg: "成功"
}
for (var key in task) {
task[key].target = taskTarget[key];
}
for (let i = 0; i < taskType.length; i++) {
if (!task[taskType[i]]) {
return { code: 0, data: null, msg: "请输入正确task类型" };
}
if (task[taskType[i]].value < task[taskType[i]].target) {
return { code: 0, data: null, msg: "请先完成任务" };
}
if (task[taskType[i]].state == 2) {
return { code: 0, data: null, msg: "不能重复领取奖励" };
}
task[taskType[i]].state = 2;
}
let data = {
task: task,
taskTime: Date.now() + 8 * 3600000
}
await db.collection(dbname).where({ _id: uid }).update({ task: JSON.stringify(task), taskTime: Date.now() + 8 * 3600000 });
return { code: 1, data: data, msg: "领取成功" };
}

View File

@ -7,10 +7,10 @@ export default async function (ctx: FunctionContext) {
return { code: 0, data: null, msg: "未获取到uid" };
}
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
let res = await db.collection(dbname).where({ _id: uid }).getOne();
if (!res.data) {
return {

View File

@ -1,3 +1,9 @@
import cloud from '@lafjs/cloud'
export default async function (ctx: FunctionContext) {
console.log('Hello World')
return { data: 'hi, laf' }
}
export type JungleRewardType = "coin" | "freeze" | "hammer" | "magic_wand" | "infinite_health";
export interface JungleRewardConfig {

View File

@ -6,10 +6,10 @@ export default async function (ctx: FunctionContext) {
const uid = ctx.body.uid;
const event = ctx.body.event;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -14,8 +14,8 @@ import {
const JungleConfig: any = JungleConfigModule as any;
const db = cloud.database();
import crypto from 'crypto';
const mchid = "1719895437";//商户id
const serialNo = "2A97ED6ED441E55600EBC8830B9EC889ED41496E";//证书序列号
const mchid = process.env.WX_MCH_ID;//商户id
const serialNo = process.env.WX_MCH_CERT_SERIAL_NO;//证书序列号
const ThinkingData = require('thinkingdata-node');
import Ip2region from 'ip2region';
const query = new Ip2region();
@ -32,20 +32,20 @@ export default async function (ctx: FunctionContext) {
const from = body.from;
const supportsWucaiMigration = Number(body.wucai_capability) >= 1;
let dbname = "users";
const gameName = body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (from === "wucai" && dbname !== "users") {
return wucaiLoginFail("WUCAI_UNSUPPORTED_GAME", "五彩账号迁移仅支持主用户库");
}
if (from === "wucai" && !supportsWucaiMigration) {
return wucaiLoginFail("WUCAI_CLIENT_UPGRADE_REQUIRED", "当前客户端不支持五彩账号迁移,请更新游戏");
}
let idname = "69faba99b4d89b170da4bf56";
if (gameName == "iaa") {
idname = "69fabaacb4d89b170da4bf57";
}
let idname = process.env.IDCOUNT_NAME;
// if (gameName == "iaa") {
// idname = "69fabaacb4d89b170da4bf57";
// }
let info = await getWXOpenId(code, dbname);
if (!info) {
return;
@ -359,7 +359,7 @@ const propName = {
async function getWXOpenId(code, dbname) {
let appid = "wx30f74367b3d3e7a6";
let appsecret = "a3417fe674feadb77809d8f9a365190d";
let appsecret = process.env.WX_MINIGAME_APP_SECRET;
if (dbname == "usersAd") {
appid = "";
appsecret = "";
@ -516,7 +516,7 @@ function getABTestGroupValue(abTests: any, layerKey: string) {
/**获取订单*/
async function getOrder(outTradeNo) {
const url = `https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/${outTradeNo}?mchid=1719895437`;
const url = `https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/${outTradeNo}?mchid=${mchid}`;
const nonceStr = crypto.randomBytes(16).toString('hex');
const timestamp = Math.floor(Date.now() / 1000).toString();
let au = await sign(outTradeNo, nonceStr, timestamp);
@ -532,7 +532,7 @@ async function getOrder(outTradeNo) {
return data;
}
async function sign(outTradeNo, nonceStr, timestamp) {
const data = `GET\n/v3/pay/transactions/out-trade-no/${outTradeNo}?mchid=1719895437\n${timestamp}\n${nonceStr}\n\n`
const data = `GET\n/v3/pay/transactions/out-trade-no/${outTradeNo}?mchid=${mchid}\n${timestamp}\n${nonceStr}\n\n`
// 创建签名对象
const sign = crypto.createSign('RSA-SHA256');
// 更新签名内容

View File

@ -4,10 +4,10 @@ import Utils from "@/Utils";
export default async function (ctx: FunctionContext) {
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
let res = await db.collection(dbname).where({ _id: uid }).getOne();
const token1 = ctx.body.token;
if (res.data && res.data.token) {

View File

@ -11,10 +11,10 @@ export default async function (ctx: FunctionContext) {
return { code: 0, data: null, msg: "未获取到uid" };
}
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
let res = await db.collection(dbname).where({ _id: uid }).getOne();
const token1 = ctx.body.token;
if (res.data && res.data.token) {

View File

@ -11,10 +11,10 @@ export default async function (ctx: FunctionContext) {
return { code: 0, data: null, msg: "未获取到uid" };
}
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
let res = await db.collection(dbname).where({ _id: uid }).getOne();
const token1 = ctx.body.token;
if (res.data && res.data.token) {

View File

@ -7,10 +7,10 @@ export default async function (ctx: FunctionContext) {
return { code: 0, data: null, msg: "参数错误" };
}
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
let res = await db.collection(dbname).where({ _id: uid }).getOne();
if (res.data == null) {
return { code: 0, data: null, msg: "未获取到玩家数据" };

View File

@ -3,49 +3,49 @@ const { MongoClient } = require('mongodb');
const db1 = cloud.database();
/**查询备份数据库 */
export default async function (ctx: FunctionContext) {
const uri = 'mongodb://root:nlwrr6cr@dbconn.sealoshzh.site:48953/?directConnection=true';
const dbName = 'sealaf-cno56wxmj7';
// const uri = process.env.BACKUP_MONGODB_URI;
// const dbName = 'sealaf-cno56wxmj7';
// let res = await db1.collection("users").where({ totalLevel: { $gt: 10000 } }).update({ totalLevel:0},{multi:true});
// return res;
let data = [];
// let data = [];
// for(let i=0;i<res.data.length;i++){
// data.push(res.data[i].openid);
// }
console.log(data);
return data;
const client = new MongoClient(uri);
try {
await client.connect();
const db = client.db(dbName);
const collections = await db.listCollections().toArray();
const collectionName = 'users';
const exists = collections.some((item) => item.name === collectionName);
if (!exists) {
console.log(`collection "${collectionName}" not found`);
return;
}
for (let i = 0; i < 3; i++) {
console.log(data[i]);
const user = await db.collection(collectionName).findOne({ _id: data[i] });
let data1 = {
endLevelNum: user.endLevelNum || 0,
totalLevel: user.totalLevel || user.levelAmount,
userLevel: user.userLevel || 0,
forcedUpdate: true,
}
if (user) {
//data1.coinAmount += 10000;
//console.log(data1);
let res22 = await db1.collection("users").where({ _id: data[i] }).update(data1);
//console.log(res22)
}
}
} catch (err) {
console.error('MongoDB error:', err);
} finally {
console.log("断开连接")
await client.close();
}
// console.log(data);
// return data;
// const client = new MongoClient(uri);
// try {
// await client.connect();
// const db = client.db(dbName);
// const collections = await db.listCollections().toArray();
// const collectionName = 'users';
// const exists = collections.some((item) => item.name === collectionName);
// if (!exists) {
// console.log(`collection "${collectionName}" not found`);
// return;
// }
// for (let i = 0; i < 3; i++) {
// console.log(data[i]);
// const user = await db.collection(collectionName).findOne({ _id: data[i] });
// let data1 = {
// endLevelNum: user.endLevelNum || 0,
// totalLevel: user.totalLevel || user.levelAmount,
// userLevel: user.userLevel || 0,
// forcedUpdate: true,
// }
// if (user) {
// //data1.coinAmount += 10000;
// //console.log(data1);
// let res22 = await db1.collection("users").where({ _id: data[i] }).update(data1);
// //console.log(res22)
// }
// }
// } catch (err) {
// console.error('MongoDB error:', err);
// } finally {
// console.log("断开连接")
// await client.close();
// }
// let res = await db1.collection("users").where({ endLevelNum:99999999999999 }).get();
// let data=[];
// for(let i=0;i<res.data.length;i++){

View File

@ -4,10 +4,10 @@ import Utils from "@/Utils";
export default async function (ctx: FunctionContext) {
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!uid) {
return { code: 0, data: null, msg: "未获取到uid" };
}

View File

@ -5,10 +5,10 @@ export default async function (ctx: FunctionContext) {
const action = ctx.body.action;
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -6,10 +6,10 @@ export default async function (ctx: FunctionContext) {
const action = ctx.body.action;
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -5,10 +5,10 @@ export default async function (ctx: FunctionContext) {
let uid = ctx.body.uid;
let winStreak = ctx.body.winStreak;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
let res = await db.collection(dbname).where({ _id: uid }).getOne();
const token1 = ctx.body.token;
if (res.data && res.data.token) {

View File

@ -4,10 +4,10 @@ export default async function (ctx: FunctionContext) {
let otherUid = ctx.body.otherUid;
let uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!uid) {
return { code: 0, data: null, msg: "参数错误" };
}

View File

@ -6,10 +6,10 @@ export default async function (ctx: FunctionContext) {
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -2,8 +2,8 @@ import cloud from '@lafjs/cloud';
const db = cloud.database();
import crypto from 'crypto';
import { createHash } from 'crypto';
const mchid = "1719895437";//商户id
const serialNo = "2A97ED6ED441E55600EBC8830B9EC889ED41496E";//证书序列号
const mchid = process.env.WX_MCH_ID;//商户id
const serialNo = process.env.WX_MCH_CERT_SERIAL_NO;//证书序列号
const geoip = require('geoip-lite');
const db1 = cloud.mongo.db;
export default async function (ctx: FunctionContext) {
@ -172,6 +172,10 @@ export default async function (ctx: FunctionContext) {
// }
// }
// return rank;
return {
code: 1,
msg: 'ok'
}
}
function stringToHash(input: string, algorithm: 'sha1' | 'sha256' | 'sha512' = 'sha256'): string {
return createHash(algorithm).update(input).digest('hex');

View File

@ -5,10 +5,10 @@ export default async function (ctx: FunctionContext) {
const action = ctx.body.action;
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -5,10 +5,10 @@ export default async function (ctx: FunctionContext) {
const action = ctx.body.action;
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -7,13 +7,13 @@ export default async function (ctx: FunctionContext) {
const action = ctx.body.action;
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
// const gameName = ctx.body.gameName;
const isWuXian = ctx.body.isWuXian;
let db1 = "69fabd35b4d89b170da4bf5e";
if (gameName == "iaa") {
dbname = "usersAd";
db1 = "69fabd418463a95668c5e5d3";
}
let db1 = process.env.SRANK_ID;
// if (gameName == "iaa") {
// dbname = "usersAd";
// db1 = "69fabd418463a95668c5e5d3";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -5,10 +5,10 @@ export default async function (ctx: FunctionContext) {
const action = ctx.body.action;
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -5,10 +5,10 @@ export default async function (ctx: FunctionContext) {
const action = ctx.body.action;
const uid = ctx.body.uid;
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
// const gameName = ctx.body.gameName;
// if (gameName == "iaa") {
// dbname = "usersAd";
// }
if (!action) {
return { code: 0, data: null, msg: "未获取到action" };
}

View File

@ -1,9 +1,9 @@
import cloud from '@lafjs/cloud'
const token = "nika123";
const EncodingAESKey = "XcdOFaZOQjmyBqYHxWAITtrmq11YaZQ63DeEZAAgYJt";
const mchid = "1719895437";//商户id
const serialNo = "2A97ED6ED441E55600EBC8830B9EC889ED41496E";//证书序列号
const appid = "wx30f74367b3d3e7a6";
// const token = "nika123";
// const EncodingAESKey = "XcdOFaZOQjmyBqYHxWAITtrmq11YaZQ63DeEZAAgYJt";
const mchid = process.env.WX_MCH_ID;//商户id
const serialNo = process.env.WX_MCH_CERT_SERIAL_NO;//证书序列号
const appid = process.env.WX_MINIGAME_APP_ID;
import crypto from 'crypto';
const db = cloud.database();
export default async function (ctx: FunctionContext) {
@ -35,7 +35,7 @@ async function getOrder(openid, toatal, outTradeNo, timestamp, nonceStr) {
"mchid": mchid,
"description": "消消王者道具购买",
"out_trade_no": outTradeNo,
"notify_url": "https://q6rvwvtnga.sealoshzh.site/wx/iosPayCall",
"notify_url": process.env.WX_PAY_NOTIFY_URL,
"amount": { "total": Number(toatal), "currency": "CNY" },
"payer": { "openid": openid }
}
@ -85,7 +85,7 @@ async function frontsign(data) {
// 更新签名内容
sign.update(data);
// 获取存储桶
const bucket = cloud.storage.bucket('j3k323ol-colorblock-oss');
const bucket = cloud.storage.bucket(process.env.WX_PAY_PRIVATE_KEY_BUCKET);
// 获取文件列表
const res = await bucket.readFile('apiclient_key.pem');
const privateKeyPem = await res.Body.transformToString();

View File

@ -2,8 +2,8 @@ import cloud from '@lafjs/cloud'
import crypto from 'crypto';
import * as JungleConfigModule from "@/jungleConfig";
const JungleConfig: any = JungleConfigModule as any;
const mchid = "1719895437";//商户id
const serialNo = "2A97ED6ED441E55600EBC8830B9EC889ED41496E";//证书序列号
const mchid = process.env.WX_MCH_ID;//商户id
const serialNo = process.env.WX_MCH_CERT_SERIAL_NO;//证书序列号
const db = cloud.database();
const ThinkingData = require('thinkingdata-node');
export default async function (ctx: FunctionContext) {
@ -106,7 +106,7 @@ const getClientIp = (req) => {
};
/**获取订单*/
async function getOrder(outTradeNo) {
const url = `https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/${outTradeNo}?mchid=1719895437`;
const url = `https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/${outTradeNo}?mchid=${mchid}`;
const nonceStr = crypto.randomBytes(16).toString('hex');
const timestamp = Math.floor(Date.now() / 1000).toString();
let au = await sign(outTradeNo, nonceStr, timestamp);
@ -126,13 +126,13 @@ async function getOrder(outTradeNo) {
}
}
async function sign(outTradeNo, nonceStr, timestamp) {
const data = `GET\n/v3/pay/transactions/out-trade-no/${outTradeNo}?mchid=1719895437\n${timestamp}\n${nonceStr}\n\n`
const data = `GET\n/v3/pay/transactions/out-trade-no/${outTradeNo}?mchid=${mchid}\n${timestamp}\n${nonceStr}\n\n`
// 创建签名对象
const sign = crypto.createSign('RSA-SHA256');
// 更新签名内容
sign.update(data);
// 获取存储桶
const bucket = cloud.storage.bucket('j3k323ol-colorblock-oss');
const bucket = cloud.storage.bucket(process.env.WX_PAY_PRIVATE_KEY_BUCKET);
// 获取文件列表
const res = await bucket.readFile('apiclient_key.pem');
const privateKeyPem = await res.Body.transformToString();

View File

@ -40,7 +40,7 @@ export default async function (ctx: FunctionContext) {
});
let session_key = user.data.session_key;
const signature = hmacSha256(session_key, signData);
let key = "GmsJF53hOi2CVkEeSg2Wlst9V9RDINKG";
let key = process.env.WX_MIDAS_PAY_SIGN_KEY;
let data = 'requestMidasPaymentGameItem' + '&' + signData;
const paySig = hmacSha256(key, data);
await db.collection("order").add({

View File

@ -40,7 +40,7 @@ export default async function (ctx: FunctionContext) {
});
let session_key = user.data.session_key;
const signature = hmacSha256(session_key, signData);
let key = "GmsJF53hOi2CVkEeSg2Wlst9V9RDINKG";
let key = process.env.WX_MIDAS_PAY_SIGN_KEY;
let data = 'requestMidasPaymentGameItem' + '&' + signData;
const paySig = hmacSha256(key, data);
await db.collection("order").add({

View File

@ -151,9 +151,10 @@ async function sead(order, userInfo, ip) {
console.log("未找到distinctId无法上传数数")
return;
}
let id = '95993f9ab6f1402a87abe5147827e5e0';
let id = '95993f9ab6f1402a87abe5147827e5e0';// 数数测试账号
if (userInfo.isDebug != "true") {
id = '40e3d5c5f2af49a4a074205564ce5dbb';
id = '40e3d5c5f2af49a4a074205564ce5dbb';// 数数正式账号
}
let teSDK = ThinkingData.initWithBatchMode(id, 'https://data.nika4fun.com/sync_data', {
dryRun: false, // report data to TE or not