Compare commits
1 Commits
main
...
fix-server
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0808489f16 |
|
|
@ -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}¤t_time=${time}`;
|
||||
const sign: string = crypto.createHash('md5').update(str).digest('hex').toLowerCase();
|
||||
const data = {
|
||||
|
|
|
|||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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' }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: "兑换码保存成功" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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] ];
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -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 = [];
|
||||
|
|
|
|||
|
|
@ -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: "成功" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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: "领取成功" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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 {
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
// 更新签名内容
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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: "未获取到玩家数据" };
|
||||
|
|
|
|||
|
|
@ -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++){
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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: "参数错误" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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');
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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" };
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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();
|
||||
|
|
|
|||
|
|
@ -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({
|
||||
|
|
|
|||
|
|
@ -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({
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user