35 lines
1.7 KiB
TypeScript
35 lines
1.7 KiB
TypeScript
import * as GoldMinerPaymentModule from "@/goldMiner/legacyPayment";
|
|
const GoldMinerPayment: any = GoldMinerPaymentModule;
|
|
import cloud from '@lafjs/cloud'
|
|
import { isUpgradeOrder } from '@/passCheckUpgrade';
|
|
const db = cloud.database();
|
|
export default async function (ctx: FunctionContext) {
|
|
let outTradeNo = ctx.body.outTradeNo;
|
|
if (!outTradeNo) {
|
|
return { code: 0, data: null, msg: "未获取到outTradeNo" };
|
|
}
|
|
const order = await db.collection("order").where({ outTradeNo: outTradeNo }).getOne();
|
|
if (!order.data) {
|
|
return { code: 0, data: null, msg: "未获取到充值订单" };
|
|
}
|
|
// 黄金矿工订单只交付活动资格,不能从通用领取入口伪造支付或重复发金币。
|
|
if (order.data.goldMiner || String(order.data.itemid || "").startsWith("gold_miner")) {
|
|
return GoldMinerPayment.paymentInfo(ctx.body, order.data);
|
|
}
|
|
// 月卡由 monthlyCard 在成功加时后完成订单,避免两次请求之间断线导致无法补发。
|
|
if (isUpgradeOrder(order.data)) return { code: 0, msg: '请在新版战令中完成发放' };
|
|
if (order.data.itemid !== "month_Card") {
|
|
await db.collection("order").where({ outTradeNo: outTradeNo }).update({ state: 2, getTime: new Date(Date.now() + 8 * 3600000) });
|
|
}
|
|
if (/^reborn_Gift(?:_[2-5])?$/.test(order.data.itemid)) {
|
|
const user = await db.collection("users").where({ _id: ctx.body.uid }).getOne();
|
|
if (!user.data || user.data.openid !== order.data.openid) {
|
|
return { code: 0, data: null, msg: "充值订单不属于当前玩家" };
|
|
}
|
|
if (order.data.state !== 1 && order.data.state !== 2) {
|
|
return { code: 0, data: null, msg: "充值尚未成功" };
|
|
}
|
|
}
|
|
return { code: 1, data: "ok", msg: "成功" };
|
|
}
|