10287 【英文】1折活动(修复不同折扣下代币支付及异常充值下自动转化代币数值均为原价的bug;)
1个文件已修改
22 ■■■■ 已修改文件
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py 22 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
ServerPython/ZoneServerGroup/map1_8G/MapServer/MapServerData/Script/Player/PlayerCoin.py
@@ -322,22 +322,22 @@
                该充值视为成功,并转化为对应代币,可以理解为类似充值点券,代币可用于下次充值时支付;
    '''
    orderInfo = addDRDict.get("orderInfo", "")
    orderCoin = addDRDict.get("orderCoin", 0)
    payCoin = addDRDict.get("payCoin", 0)
    payOrderType = addDRDict.get("payOrderType", PayOrderType_Default)
    if not orderCoin or not orderInfo:
    if not payCoin or not orderInfo:
        DataRecordPack.DR_CTGError(curPlayer, errorInfo, addDRDict)
        return
    eventName = addDRDict.get("eventName", "ExchangePayCoin")
    playerID = curPlayer.GetPlayerID()
    befPayCoin = PlayerControl.GetPayCoin(curPlayer)
    drDict = {ChConfig.Def_Give_Reason_SonKey:orderInfo, "payOrderType":payOrderType, "orderInfo":orderInfo}
    PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_PayCoin, orderCoin, eventName, drDict)
    PlayerControl.GiveMoney(curPlayer, ShareDefine.TYPE_Price_PayCoin, payCoin, eventName, drDict)
    aftPayCoin = PlayerControl.GetPayCoin(curPlayer)
    GameWorld.Log("充值转化为代币: orderInfo=%s,orderCoin=%s,payOrderType=%s,eventName=%s,befPayCoin=%s,aftPayCoin=%s,errorInfo=%s"
                  % (orderInfo, orderCoin, payOrderType, eventName, befPayCoin, aftPayCoin, errorInfo), playerID)
    GameWorld.Log("充值转化为代币: orderInfo=%s,payCoin=%s,payOrderType=%s,eventName=%s,befPayCoin=%s,aftPayCoin=%s,errorInfo=%s"
                  % (orderInfo, payCoin, payOrderType, eventName, befPayCoin, aftPayCoin, errorInfo), playerID)
    
    addItemList = []
    paramList = [orderInfo, orderCoin]
    paramList = [orderInfo, payCoin]
    PlayerControl.SendMailByKey("ExchangeToPayCoin", [playerID], addItemList, paramList)
    
    if payOrderType != PayOrderType_PayCoin:
@@ -449,11 +449,13 @@
    discountState = PlayerSuperDiscount.GetSuperDiscountState(curPlayer)
    GameWorld.Log("英文1折充值验证至尊卡: orderInfo=%s,orderCoin=%s,orderID=%s" % (orderInfo, orderCoin, orderID), curPlayer.GetPlayerID())
    orderCoinUsd = orderCoin # 入库的是美元分
    payCoin = orderCoin
    orderCoin = CommFunc.RMBToCoin(ipyData.GetPayRMBNum()) # 游戏内orderCoin为原价
    usdMoney = ipyData.GetUsdMoney() if discountState else ipyData.GetPayRMBNum()
    GameWorld.Log("    转化后: orderInfo=%s,orderCoin=%s,orderCoinUsd=%s" % (orderInfo, orderCoin, orderCoinUsd), curPlayer.GetPlayerID())
    GameWorld.Log("    转化后: orderInfo=%s,orderCoin=%s,orderCoinUsd=%s,payCoin=%s" % (orderInfo, orderCoin, orderCoinUsd, payCoin), curPlayer.GetPlayerID())
    addDRDict["orderCoin"] = orderCoin
    addDRDict["orderCoinUsd"] = orderCoinUsd
    addDRDict["payCoin"] = payCoin # 英文1折版有游戏内折扣(越南版只有支付折扣,游戏内均为原价),所以英文1折版相当于实际折扣价值coin
    GameWorld.Log("    充值验证: orderCoinUsd=%s,usdMoney=%s,discountState=%s" % (orderCoinUsd, usdMoney, discountState), curPlayer.GetPlayerID())
    if orderCoinUsd != CommFunc.RMBToCoin(usdMoney, 100):
        DataRecordPack.DR_CTGError(curPlayer, "The orderCoinUsd is not equal to the ipyData's UsdMoney(%s)! discountState=%s" % (usdMoney, discountState), addDRDict)
@@ -467,9 +469,9 @@
                    GameWorld.ErrLog("代币可不用于支付代币充值!appID=%s,orderInfo=%s" % (appID, orderInfo), curPlayer.GetPlayerID())
                    return
        #直接扣,类似充值扣钱,这里是发放物品,可能会有发放失败的当做 CTGError 处理
        if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_PayCoin, orderCoin, eventName, {ChConfig.Def_Cost_Reason_SonKey:orderInfo, "orderInfo":orderInfo}):
            GameWorld.ErrLog("代币不足! appID=%s,orderInfo=%s,orderCoin=%s,curPayCoin=%s"
                             % (appID, orderInfo, orderCoin, PlayerControl.GetPayCoin(curPlayer)), curPlayer.GetPlayerID())
        if not PlayerControl.PayMoney(curPlayer, ShareDefine.TYPE_Price_PayCoin, payCoin, eventName, {ChConfig.Def_Cost_Reason_SonKey:orderInfo, "orderInfo":orderInfo}):
            GameWorld.ErrLog("代币不足! appID=%s,orderInfo=%s,payCoin=%s,curPayCoin=%s"
                             % (appID, orderInfo, payCoin, PlayerControl.GetPayCoin(curPlayer)), curPlayer.GetPlayerID())
            return
        
    addDRDict["payOrderType"] = payOrderType