支付回调

This commit is contained in:
luying
2021-11-09 19:24:00 +08:00
parent 173481a60c
commit 106493b878
26 changed files with 424 additions and 135 deletions
@@ -89,7 +89,7 @@ export class GachaHandler {
}
// 给东西
// console.log('****', heroInfo)
let { heroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
let { heroes, resultHeroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
await addItems(roleId, roleName, sid, items);
// 更新数据
userGacha = await UserGachaModel.updateInfo(roleId, gachaId, activityId, {
@@ -102,7 +102,7 @@ export class GachaHandler {
await checkTask(roleId, sid, TASK_TYPE.GASHA, count, true, {});
//活动统计
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.GASHA, count)
for (let hero of heroes) {
for (let hero of resultHeroes) {
activityData.push({ hid: hero.hid, quality: hero.quality });
}
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.GACHA_QUALITY_COUNT, count, { heroes: activityData })
@@ -115,7 +115,9 @@ export class GachaHandler {
return resResult(STATUS.SUCCESS, {
gachaId, activityId,
freeCount, refFreeTime: resultRefFreeTime, count: userGacha.count, point: userGacha.point, floor, hope,
heroes, result: resultList
heroes: resultHeroes,
addHeros: heroes,
result: resultList
});
}
@@ -203,9 +205,9 @@ export class GachaHandler {
for (let i = 0; i < count; i++) {
heroInfo.push({ hid: hero, count: 1 })
}
let { heroes, goods } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
let { heroes, resultHeroes, goods } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
let resultList: GachaResult[] = [];
for (let h of heroes) {
for (let h of resultHeroes) {
let result = new GachaResult(contentId);
result.setHero(h.hid);
resultList.push(result);
@@ -232,7 +234,8 @@ export class GachaHandler {
point: userGacha.point,
turntable: userGacha.turntable,
result: resultList,
heroes
addHeros: heroes,
heroes: resultHeroes
});
}
@@ -95,7 +95,7 @@ export class NewHeroGachaHandler {
await ActivityNewHeroGachaModel.addRecord(serverId, activityId, roleId, hid, floorCount, JSON.stringify(resultList), hasGetFloor);
// 给东西
let { heroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
let { heroes, resultHeroes } = await createHeroes(roleId, roleName, sid, serverId, heroInfo);
await addItems(roleId, roleName, sid, items);
//固定奖励
let rewardParamArr: Array<RewardParam> = stringToRewardParam(item.commonReward);
@@ -103,7 +103,7 @@ export class NewHeroGachaHandler {
let commonResult = await addReward(roleId, roleName, sid, serverId, newRewardParamArr)
return resResult(STATUS.SUCCESS, {
hid, activityId, count, randomReward: { heroes, result: resultList }, commonReward: commonResult
hid, activityId, count, randomReward: { heroes: resultHeroes, result: resultList }, commonReward: commonResult
});
}
@@ -7,10 +7,8 @@ import _ = require('underscore');
import { applyOrderWX, checkOrderWX } from '../../../services/pay/weixinPay';
import { applyOrderALI, checkOrderALI } from '../../../services/pay/aliPay';
import { applyOrder37 } from '../../../services/pay/37Pay';
import { makeOrder } from '../../../services/orderService';
import { makeOrder, settleOrder, settleOrderAli, settleOrderWx } from '../../../services/orderService';
import { addRechargeMoney } from '../../../services/activity/rechargeMoneyService';
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
import { ServerlistModel } from '../../../db/Serverlist';
import { addVipRechargeMoney } from '../../../services/activity/vipRechargeMoneyService';
import { checkActivityTask } from '../../../services/taskService';
import { getActivityById } from '../../../services/activity/activityService';
@@ -91,6 +89,7 @@ export class orderHandler {
break;
}
case PAY_TYPE.TEST:
case PAY_TYPE.APPLE:
{
break;
@@ -123,9 +122,6 @@ export class orderHandler {
if (!orderInfo) {
return resResult(STATUS.NO_ORDER);
}
if (orderInfo.state == ORDER_STATE.RESULT_SUCCESS) {
return resResult(STATUS.DUPLICATE_ORDER);
}
//商品价格信息
let productInfo = dicRMB.get(orderInfo.productID)
@@ -134,89 +130,53 @@ export class orderHandler {
return resResult(STATUS.NO_PRODUCT_ID);
}
let productType = productInfo.type;//类型
let price = orderInfo.price;//下单时的价格
let payType = orderInfo.payType;//支付类型
let roleId = orderInfo.roleId;//角色
orderInfo = await UserOrderModel.check(roleId, localOrderID);
if (!orderInfo) {
return resResult(STATUS.DUPLICATE_ORDER);
}
switch (payType) {
switch (orderInfo.payType) {
case PAY_TYPE.TEST:
case PAY_TYPE.THREE_SEVEN:
case PAY_TYPE.APPLE:
{
break;
}
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);
let res = await settleOrderWx(orderInfo, serverId, sid);
if(res.code != 0) {
return resResult(res);
}
break;
}
case PAY_TYPE.ALI:
{
let aliResult = await checkOrderALI(localOrderID);
if (aliResult.code == 0) {
console.log('支付宝订单查询失败')
return resResult(STATUS.ORDER_ERROR);
let res = await settleOrderAli(orderInfo, serverId, sid);
if(res.code != 0) {
return resResult(res);
}
if (parseInt(aliResult.data.total_amount) != price) {
console.log('订单价格错误')
return resResult(STATUS.PRICE_ERROR);
}
if (aliResult.data.trade_status != "TRADE_SUCCESS") {
return resResult(STATUS.NO_PAY);
}
let aliOrderID = aliResult.data.trade_no;
await UserOrderModel.saveOrderID(roleId, localOrderID, aliOrderID);
break;
}
case PAY_TYPE.APPLE:
{
break;
}
default:
console.log('未知支付类型');
return resResult(STATUS.NO_PAY_TYPE);
}
//订单成功
orderInfo = await UserOrderModel.success(roleId, localOrderID);
if (orderInfo) {
//结算奖励
let result = await makeOrder(localOrderID, sid, orderInfo);
if (result.code !== 0) {//结算失败
console.log(`测试支付失败..... ${JSON.stringify(result)}`)
return resResult(result);
}
//推送
this.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
data: result.data,
price: price,
}), [{ uid: roleId, sid: sid }]);
//活动统计
await addRechargeMoney(roleId, serverId, price);
await addVipRechargeMoney(roleId, serverId, price);
//成长任务
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.ACTIVITY_RMB, price, { activityId: orderInfo.activityId })
console.log('结算完成', localOrderID)
return resResult(STATUS.SUCCESS, result.data);
console.log('结算完成', localOrderID)
let res: any = {};
try {
res = JSON.parse(orderInfo.rewardResult)
} catch(e) {
console.log('order rewardResult', e);
}
return resResult(STATUS.DUPLICATE_ORDER);
if(res.code && res.code != 0) {
return resResult(STATUS.APPLY_ORDER_ERROR);
}
return resResult(STATUS.SUCCESS, {
...res,
price: orderInfo.price,
state: orderInfo.state,
localOrderID: orderInfo.localOrderID
});
}
@@ -268,28 +228,13 @@ export class orderHandler {
await UserOrderModel.applyOrder(serverId, roleId, productID, localOrderID, orderID, price, payType, activityId, paramStr, message);
//订单成功
let orderInfo = await UserOrderModel.success(roleId, localOrderID);
if (orderInfo) {
//结算奖励
let result = await makeOrder(localOrderID, sid, orderInfo);
if (result.code !== 0) {//结算失败
console.log(`测试支付失败..... ${JSON.stringify(result)}`)
return resResult(result);
}
//推送
this.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
data: result.data,
price: price,
}), [{ uid: roleId, sid: sid }]);
//活动统计
await addRechargeMoney(roleId, serverId, price);
await addVipRechargeMoney(roleId, serverId, price);
//成长任务
await checkActivityTask(serverId, sid, roleId, TASK_TYPE.ACTIVITY_RMB, price, { activityId })
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, productType:${productType}, roleId:${roleId}, localOrderID:${localOrderID}, payType:${payType}`)
return resResult(STATUS.SUCCESS, result.data);
let orderInfo = await UserOrderModel.findOrder(localOrderID);
if(!orderInfo) {
return resResult(STATUS.NO_ORDER);
}
return resResult(STATUS.NO_ORDER, {});
let result = await settleOrder(orderInfo, serverId, sid);
orderInfo = await UserOrderModel.success(roleId, localOrderID, result);
console.log(`测试支付完成!!!!!!!!!!!!! serverId:${serverId}, productID:${productID}, productType:${productType}, roleId:${roleId}, localOrderID:${localOrderID}, payType:${payType}`)
return resResult(STATUS.SUCCESS, JSON.parse(result));
}
}
@@ -1,5 +1,6 @@
import { Application, ChannelService, HandlerService, } from 'pinus';
import { reloadResources } from '../../../pubUtils/data';
import { settleOrderFromRedisPub } from '../../../services/orderService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -21,4 +22,8 @@ export class OrderRemote {
public async reloadResources() {
reloadResources();
}
public async settleOrderFromRedisPub(message: string) {
await settleOrderFromRedisPub(message);
}
}
@@ -49,10 +49,10 @@ export class HeroHandler {
let costResult = await handleCost(roleId, sid, [{ id: pieceId, count: pieceCount }]);
if (!costResult) return resResult(STATUS.ROLE_MATERIAL_NOT_ENOUGH);
// createHero
let { heroes } = await createHero(roleId, roleName, sid, serverId, { hid, count: 1 });
let { heroes, resultHeroes } = await createHero(roleId, roleName, sid, serverId, { hid, count: 1 });
pushComposeOrangeHero(roleId, roleName, serverId, heroes[0]);
return resResult(STATUS.SUCCESS, { curHero: heroes[0] });
pushComposeOrangeHero(roleId, roleName, serverId, resultHeroes[0]);
return resResult(STATUS.SUCCESS, { curHero: resultHeroes[0], addHeros: heroes });
}
// 武将升级
@@ -710,8 +710,8 @@ export class HeroHandler {
}
let hero = await HeroModel.findByHidAndRole(hid, roleId);
if(!hero) {
let { heroes } = await createHero(roleId, roleName, sid, serverId, { hid, count: 1, ...params });
hero = heroes[0];
let { resultHeroes } = await createHero(roleId, roleName, sid, serverId, { hid, count: 1, ...params });
hero = resultHeroes[0];
}
hero = await HeroModel.updateHeroInfo(roleId, hid, params);
@@ -3,7 +3,7 @@ import { RoleModel, RoleUpdate } from './../../../db/Role';
import { HeroModel, HeroUpdate } from '../../../db/Hero';
import { resResult, decodeIdCntArrayStr, parseGoodStr, genCode } from '../../../pubUtils/util';
import { Application, BackendSession, pinus, HandlerService, } from 'pinus';
import { handleCost, addItems, createHeroes } from '../../../services/rewardService';
import { handleCost, addItems } from '../../../services/rewardService';
import { getTitle, getTeraph, gameData, getScollByStar, getFriendLvByExp, getHeroExpByLv, getExpByLv } from '../../../pubUtils/data';
import { SCHOOL, SCROLL, EXTERIOR, SCRIPT } from '../../../pubUtils/dicParam';
import { getAtrrNameById } from '../../../consts/constModules/abilityConst'