活动:微信支付

This commit is contained in:
qiaoxin
2021-05-12 17:57:38 +08:00
parent 7e93c2e6a3
commit 2fc5017af8
11 changed files with 915 additions and 52 deletions

View File

@@ -6,6 +6,7 @@ import { addReward, stringToRewardParam, useGiftPackage } from '../../../service
import { dicRMB } from '../../../pubUtils/dictionary/DicRMB';
import { UserOrderModel } from '../../../db/UserOrder';
import _ = require('underscore');
import { applyOrderWX, checkOrderWX } from '../../../services/pay/weixinPay';
export default function (app: Application) {
return new orderHandler(app);
@@ -40,13 +41,43 @@ export class orderHandler {
let price = productInfo.price;//价格
let productType = productInfo.type;//类型
let message = productInfo.message;//商品信息
let localOrderID = genCode(32);//本地订单号
let orderID = '';//平台订单号
//生成订单号
let orderInfo = await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType);
return resResult(STATUS.SUCCESS, { orderInfo, productInfo });
let sdkOrderInfo = null;//客户端需要的平台订单信息
switch (payType) {
case PAY_TYPE.WX:
{
//生成订单号
let weixinOrder = await applyOrderWX(localOrderID, price * 100, message);
if (weixinOrder.code == 0) {
console.log('微信下单失败')
return resResult(STATUS.APPLY_ORDER_ERROR);
}
sdkOrderInfo = weixinOrder.data;
orderID = weixinOrder.data.prepayid;//微信订单号
break;
}
case PAY_TYPE.ALI:
{
break;
}
case PAY_TYPE.APPLE:
{
break;
}
default:
console.log('未知支付类型');
return resResult(STATUS.NO_PAY_TYPE);
}
await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType);
return resResult(STATUS.SUCCESS, { orderInfo: sdkOrderInfo, productInfo, localOrderID });
}
@@ -104,6 +135,20 @@ export class orderHandler {
switch (payType) {
case PAY_TYPE.WX:
{
let weixinResult = await checkOrderWX(localOrderID);
if (weixinResult.code == 0) {
console.log('微信订单查询失败')
return resResult(STATUS.ORDER_ERROR);
}
if (parseInt(weixinResult.data.total_fee) / 100 != price) {
console.log('订单价格错误')
return resResult(STATUS.PRICE_ERROR);
}
if (weixinResult.data.trade_state != "SUCCESS" ||
weixinResult.data.result_code != "SUCCESS" ||
weixinResult.data.return_code != "SUCCESS") {
return resResult(STATUS.NO_PAY);
}
break;
}
case PAY_TYPE.ALI: