Files
ZYZ/game-server/app/services/pay/37Pay.ts

52 lines
1.6 KiB
TypeScript

import { SDK_37_CONST, STATUS } from "../../consts";
import { RoleModel } from "../../db/Role";
import { UserModel } from "../../db/User";
import { LoginValidateData37 } from "../../domain/sdk";
import { DicRMB } from "../../pubUtils/dictionary/DicRMB";
import { nowSeconds } from "../../pubUtils/timeUtil";
import { resResult } from "../../pubUtils/util";
import { get37Md5SignA } from "../../pubUtils/sdkUtil";
import { pinus } from "pinus";
/**
* 37支付下单
*
* @param {number} price 价格订单金额(分)
* @param {string} message 商品信息
* @param {string} localOrderID 本地订单号
*
*/
export async function applyOrder37(localOrderID: string, roleId: string, productInfo: DicRMB) {
let role = await RoleModel.findByRoleId(roleId);
let user = await UserModel.findUserByUid(role.userInfo.uid);
if(!user || !user.channelInfo || !(<LoginValidateData37>user.channelInfo).uid)
return {
code: -1, resData: resResult(STATUS.CHANNEL_INFO_NOT_FOUND)
}
let gameCoin = productInfo.gameCoin;
let ext = pinus.app.get('env');
let body = {
game_id: SDK_37_CONST.GAME_ID,
uid: (<LoginValidateData37>user.channelInfo).uid,
sid: role.serverId,
actor_id: role.roleId,
order_no: localOrderID,
money: productInfo.price,
game_coin: gameCoin,
product_id: productInfo.productID,
subject: productInfo.message,
time: nowSeconds(),
ext
}
let sign = get37Md5SignA(body, SDK_37_CONST.PAY_KEY);
return { code: 0, data: {
gameCoin,
timestamp: nowSeconds(),
ext,
sign: sign
}};
}