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

141 lines
4.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

--[[
* @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)
end
----- 请求支付
----- @param context
---- {
---- Id, -- required, 商品ID
---- BuyNum, -- optional, 购买个数(默认1
---- }
----
----
this.EventTrigger = {}
function this.onSdkPayResult(id)
LogError("收到sdk支付成功回调商品id = "..id)
if this.EventTrigger[id] then
this.EventTrigger[id](id)
this.EventTrigger[id] = nil
end
local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, id)
if rechargeConfig then
local Price = tostring(rechargeConfig.Price)
CustomEventManager.SendCustomEvent("mhtPay", Price ,"4")
end
end
function this.Pay(id, func)
if not func then
func = function()end
end
-- if this.EventTrigger[id] then
-- LogError("重复发起购买商品的请求商品id = "..id..", uid = "..PlayerManager.uid)
-- PopupTipPanel.ShowTip("您有一个相同的订单正在处理,请稍后再试")
-- return
-- end
this.EventTrigger[id] = func
LogError("发起购买商品的请求商品id = "..id)
CheckRedPointStatus(RedPointType.GrowthPackage)--成长礼包的红点检测
--直购商品
local rechargeConfig = ConfigManager.GetConfigData(ConfigName.RechargeCommodityConfig, id)
if AppConst.isSDKLogin and rechargeConfig.Price > 0 then
PayManager.SdkPay({ Id = id })
else
NetManager.RequestBuyGiftGoods(id, function(msg)
this.onSdkPayResult(id)
end)
end
end
function this.SdkPay(context)
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
-- 判断计费点
if AppConst.SdkPackageName == "com.tcxazcsb.pass" or AppConst.SdkPackageName == "com.tcxaz.pass" then -- 海外GP 测试+正式
payData.RechargeId = rechargeConfig.RechargeId
elseif AppConst.SdkPackageName == "com.jltest.www" then -- 海外Ios测试
payData.RechargeId = rechargeConfig.RechargeId2
elseif AppConst.SdkPackageName == "com.tcxhw.project" then -- 海外Ios正式
payData.RechargeId = rechargeConfig.RechargeId3
else
payData.RechargeId = rechargeConfig.Id
end
this.RequestPay(payData)
end
function this.RequestPay(context)
local price = MoneyUtil.GetMoney(context.Price)
SDKMgr.onPayCallback = function(payResp)
Log("onPayCallback::"..payResp)
local str = string.split(payResp, "#")
local result = tonumber(str[1])
-- local orderId = str[2]
if result == SDK_RESULT.SUCCESS then
elseif result == SDK_RESULT.FAILED then
else
--PopupTipPanel.ShowTip("取消充值" .. result)
-- DataCenterManager.CommitPayStatus(
-- "IN_GAME_"..context.Type,
-- SDKMgr:GetPayOrderID(),
-- "INVALID",
-- tostring(context.Price)
-- )
end
end
local params = SDK.SDKPayArgs.New()
params.productId = context.RechargeId
params.productName = context.Name or ""
params.productDesc = context.Desc or ""
params.price = price * 100 -- 以分为单位
params.ratio = 1
params.buyNum = context.BuyNum or 1
params.coinNum = BagManager.GetItemCountById(16)
-- 服务器相关
params.zoneId = PlayerManager.serverInfo.server_id
params.serverID = PlayerManager.serverInfo.server_id
params.serverName = PlayerManager.serverInfo.name
-- 角色相关
params.roleID = tostring(PlayerManager.uid).."_"..tostring(context.Id)
params.roleName = PlayerManager.nickName
params.roleLevel = PlayerManager.level
params.vip = tostring(VipManager.GetVipLevel())
params.guildID = PlayerManager.familyId
-- 其他
params.payNotifyUrl = ""
params.extension = tostring(context.Id)--string.format("%s_%s_%s", PlayerManager.uid, context.Id, VersionManager:GetVersionInfo("subChannel"))--tostring(context.Id)
--string.format("%s_%s_%s_%s_%s_%s",
-- AppConst.OpenId,context.Id,context.Price,PlayerManager.uid,
-- PlayerManager.serverInfo.server_id,PlayerManager.serverInfo.name)
SDKMgr:Pay(params)
--
ThinkingAnalyticsManager.Track("create_order", {
goods_id = context.Id,
goods_name = context.Name,
order_money_amount = price,
Bundle_id = AppConst.SdkPackageName,
})
end
return this