miduo_client/Assets/ManagedResources/~Lua/Modules/Pay/PayManager.lua

200 lines
7.2 KiB
Lua
Raw Normal View History

--[[
2020-05-09 13:31:21 +08:00
* @ClassName PayManager
* @Description
* @Date 2019/6/25 20:14
* @Author MagicianJoker, fengliudianshao@outlook.com
* @Copyright Copyright (c) 2019, MagicianJoker
--]]
PayManager = {}
local this = PayManager
--初始化
function this.Initialize()
Game.GlobalEvent:AddEvent(GameEvent.MoneyPay.OnPayResultSuccess, this.onSdkPayResult)
2020-05-09 13:31:21 +08:00
end
----- 请求支付
----- @param context
---- {
---- Id, -- required, 商品ID
---- BuyNum, -- optional, 购买个数(默认1
---- }
----
----
this.EventTrigger = {}
function this.onSdkPayResult(id)
LogRed("收到sdk支付成功回调商品id = "..id)
if this.EventTrigger[id] then
this.EventTrigger[id](id)
this.EventTrigger[id] = nil
end
2021-03-17 17:36:50 +08:00
local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, id)
if rechargeConfig then
local Price = tostring(rechargeConfig.Price)
CustomEventManager.SendCustomEvent("mhtPay", Price ,"4")
end
end
-- 这里发过来的是sdk的orderID
function this.RechargeSuccessOrder(msg)
LogRed("充值成功orderId = "..tostring(msg.orderId))
-- 订单id特殊传值
CustomEventManager.SendCustomEvent("PayOrderId", tostring(msg.orderId) ,"0")
end
function this.Pay(id, func)
if not RECHARGEABLE then
return
end
LogRed("发起购买商品的请求商品id = "..id)
if not func then
func = function()end
end
-- 请求游戏服务器的orderId
NetManager.RequestPayOrderId(id, function(orderId)
-- if this.EventTrigger[id] then
-- LogError("重复发起购买商品的请求商品id = "..id..", uid = "..PlayerManager.uid)
-- PopupTipPanel.ShowTip("您有一个相同的订单正在处理,请稍后再试")
-- return
-- end
LogRed("发起购买商品的请求订单id = "..orderId)
this.EventTrigger[id] = func
CheckRedPointStatus(RedPointType.GrowthPackage)--成长礼包的红点检测
--直购商品
local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, id)
local yhqNum=BagManager.GetItemCountById(108)
if yhqNum>=rechargeConfig.Price and rechargeConfig.Price>0 then
local sureFunc=function()
NetManager.SendYHQBuyGoodRequest(id)
end
local cancelFunc=function()
if AppConst.isSDKLogin and rechargeConfig.Price > 0 then
PayManager.SdkPay({ Id = id, orderId = orderId })
else
NetManager.RequestBuyGiftGoods(id, function(msg)
this.onSdkPayResult(id)
end)
end
end
local args={}
args[1]="该礼包可通过消耗代金券获得,是否继续充值"
args[2]="代金券购买"
args[3]="直接充值"
args[4]=sureFunc
args[5]=cancelFunc
UIManager.OpenPanel(UIName.GMCommonConfirmPanel,args)
return
end
2022-09-20 17:04:48 +08:00
if rechargeConfig.BuyType==1 then --人民币
if AppConst.isSDKLogin and rechargeConfig.Price > 0 then
PayManager.SdkPay({ Id = id, orderId = orderId })
else
NetManager.RequestBuyGiftGoods(id, function(msg)
this.onSdkPayResult(id)
end)
end
elseif rechargeConfig.BuyType==2 then --gm余额购买
NetManager.SendGmBuyGoodRequest(id)
elseif rechargeConfig.BuyType==3 then --rmb/gm余额购买
local sureFunc=function()
2022-11-10 13:45:03 +08:00
NetManager.SendGmBuyGoodRequest(id)
2022-09-20 17:04:48 +08:00
end
local cancelFunc=function()
if AppConst.isSDKLogin and rechargeConfig.Price > 0 then
PayManager.SdkPay({ Id = id, orderId = orderId })
else
NetManager.RequestBuyGiftGoods(id, function(msg)
this.onSdkPayResult(id)
end)
end
end
local args={}
args[1]="该福利可以通过GM修改器获得是否继续充值"
args[2]="GM修改器"
args[3]="直接充值"
args[4]=sureFunc
args[5]=cancelFunc
UIManager.OpenPanel(UIName.GMCommonConfirmPanel,args)
end
2022-09-20 17:04:48 +08:00
end)
end
function this.SdkPay(context)
2020-05-09 13:31:21 +08:00
local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, context.Id)
local payData = table.clone(context)
payData.Name = rechargeConfig.Name
payData.Desc = rechargeConfig.Desc
payData.Price = rechargeConfig.Price
payData.Type = rechargeConfig.Type
2020-08-27 19:18:31 +08:00
-- 判断计费点
2021-05-31 17:31:31 +08:00
local field = PackageManager.GetRechargeField()
if field and rechargeConfig[field] and rechargeConfig[field] ~= "" then
payData.RechargeId = rechargeConfig[field]
2020-08-27 19:18:31 +08:00
else
payData.RechargeId = rechargeConfig.Id
end
2023-06-12 14:31:23 +08:00
LogError("paydata.RechargeId=="..payData.RechargeId)
2020-05-09 13:31:21 +08:00
this.RequestPay(payData)
end
function this.RequestPay(context)
2020-08-22 15:31:14 +08:00
local price = MoneyUtil.GetMoney(context.Price)
2020-07-15 13:44:37 +08:00
SDKMgr.onPayCallback = function(payResp)
Log("onPayCallback::"..payResp)
2020-05-09 13:31:21 +08:00
local str = string.split(payResp, "#")
2020-07-17 11:39:24 +08:00
local result = tonumber(str[1])
2020-08-22 15:31:14 +08:00
-- local orderId = str[2]
if result == SDK_RESULT.SUCCESS then
2020-08-22 15:31:14 +08:00
elseif result == SDK_RESULT.FAILED then
2020-08-22 15:31:14 +08:00
2020-07-17 11:39:24 +08:00
else
2020-05-09 13:31:21 +08:00
--PopupTipPanel.ShowTip("取消充值" .. result)
2020-07-17 11:39:24 +08:00
-- DataCenterManager.CommitPayStatus(
-- "IN_GAME_"..context.Type,
-- SDKMgr:GetPayOrderID(),
-- "INVALID",
-- tostring(context.Price)
-- )
2020-05-09 13:31:21 +08:00
end
end
2020-07-15 13:44:37 +08:00
local params = SDK.SDKPayArgs.New()
2020-08-27 19:18:31 +08:00
params.productId = context.RechargeId
2020-05-09 13:31:21 +08:00
params.productName = context.Name or ""
params.productDesc = context.Desc or ""
params.price = price -- 以分为单位
2020-05-09 13:31:21 +08:00
params.ratio = 1
params.buyNum = context.BuyNum or 1
params.coinNum = BagManager.GetItemCountById(16)
2020-07-17 11:39:24 +08:00
-- 服务器相关
2020-05-09 13:31:21 +08:00
params.zoneId = PlayerManager.serverInfo.server_id
params.serverID = PlayerManager.serverInfo.server_id
params.serverName = PlayerManager.serverInfo.name
2020-07-17 11:39:24 +08:00
-- 角色相关
params.roleID = tostring(PlayerManager.uid).."_"..tostring(context.Id).."_"..PackageManager.GetCCCode().."_"..AppConst.Platform--.."_"..tostring(context.orderId or "0").."_"..tostring(LoginManager.ServerId)
2020-05-09 13:31:21 +08:00
params.roleName = PlayerManager.nickName
params.roleLevel = PlayerManager.level
params.vip = tostring(VipManager.GetVipLevel())
params.guildID = PlayerManager.familyId
2020-07-17 11:39:24 +08:00
-- 其他
2020-05-09 13:31:21 +08:00
params.payNotifyUrl = ""
params.extension = tostring(PlayerManager.uid).."_"..tostring(context.Id).."_"..PackageManager.GetCCCode().."_"..AppConst.Platform--.."_"..tostring(context.orderId or "0").."_"..tostring(LoginManager.ServerId)
2020-07-15 13:44:37 +08:00
SDKMgr:Pay(params)
--
ThinkingAnalyticsManager.Track("create_order", {
goods_id = context.Id,
goods_name = context.Name,
2020-08-22 15:31:14 +08:00
order_money_amount = price,
2020-07-27 17:48:33 +08:00
Bundle_id = AppConst.SdkPackageName,
})
2020-05-09 13:31:21 +08:00
end
2020-06-23 18:36:24 +08:00
return this