local OpenPayMgr = class('OpenPayMgr') function OpenPayMgr:ctor() self.openID = "1oijtI" self.productCode = "62071860216202428267772989490827" self.openKey = "f7jMJSjCOYRX2kx7UQ4Ox5zZdAowUSe9" self.userId = "" self.roleName = "" self.serverName = "" self.roleLevel = 0 self.sign = "" self.baseUrl = "http://mia.hkhappygame.com/open/getPayUrl" LogError("---------OpenPayMgr --------------") self.getPayUrlWWW = nil self.CurPayUrl = nil self.postData = "" --62071860216202428267772989490827 self:RegisterNetEvents() self.IsInitVersionInfo = false self.VersionCfgWWw = nil end ---IOS -- 25053842546594917787640743618071 -- 2jqXkC -- oxlQZ8zN7QfrC6mMJ9P0pnvPjx8JutlS function OpenPayMgr:Clear() self.userId = "" self.roleName = "" self.serverName = "" self.roleLevel = 0 end function OpenPayMgr:Destroy() self:UnRegisterNetEvents() end function OpenPayMgr:SetOpenData(userId,roleName,roleLevel,serverName) self.userId = userId self.roleName = roleName self.serverName = serverName self.roleLevel = roleLevel self.platform = ManagerContainer.LuaGameMgr.platform if self.platform == "SDKHwQuick" then self.openID = "1oijtI" self.productCode = "62071860216202428267772989490827" self.openKey = "f7jMJSjCOYRX2kx7UQ4Ox5zZdAowUSe9" elseif self.platform == "SDKYOUYI_IOS" then self.openID = "2jqXkC" self.productCode = "25053842546594917787640743618071" self.openKey = "oxlQZ8zN7QfrC6mMJ9P0pnvPjx8JutlS" else -- self.openID = "2jqXkC" -- self.productCode = "25053842546594917787640743618071" -- self.openKey = "oxlQZ8zN7QfrC6mMJ9P0pnvPjx8JutlS" end self:GetVersionCfg() --LogError("---------OpenPayMgr -------------uid = "..userId.." roleName = "..roleName.." roleLevel = "..roleLevel.." serverName = "..serverName) end --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISimpleWeb, "https://www.baidu.com", nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2) function OpenPayMgr:RegisterNetEvents() ManagerContainer.NetManager:NetRegister(ProtoMsgId.SC_MD5_GET_ACK, self.OnGetMD5InfoAck, self) end function OpenPayMgr:UnRegisterNetEvents() ManagerContainer.NetManager:UnRegisterPbIdCallback(ProtoMsgId.SC_MD5_GET_ACK) end function OpenPayMgr:Update() if self.getPayUrlWWW ~= nil and self.getPayUrlWWW.isDone then if self.getPayUrlWWW.error and self.getPayUrlWWW.error ~= '' then LogError("获取支付页面失败!!!!") else LogError(self.getPayUrlWWW.text) local ok, result = RO_XPCALL(JSON.decode, debug.traceback, JSON, self.getPayUrlWWW.text) LogError("result = "..Inspect(result)) if ok and result.status then self.CurPayUrl ="http://" ..result.data.payUrl LogError("PayUrl = [[[["..self.CurPayUrl.."]]]]") --ManagerContainer.LuaUIMgr:Open(Enum.UIPageName.UISimpleWeb, self.CurPayUrl, nil, nil, nil, Enum.UISibling[Enum.UIType.Top] - 2) UnityEngine.Application.OpenURL(self.CurPayUrl) else LogError("获取支付页面失败!!!!") end end self.getPayUrlWWW:Dispose() self.getPayUrlWWW = nil end end function OpenPayMgr:Pay(goodsId, goodsName, goodsDesc, count, amount, cpOrderId, cbUrl, extrasParams) local goodsNameNew = amount.."_商品" local goodsIdNew = "" if self.platform == "SDKHwQuick" then goodsIdNew = "product_"..amount.."_ro" elseif self.platform == "SDKYOUYI_IOS" then goodsIdNew = "intention"..amount else --goodsIdNew = "intention"..amount goodsIdNew = "product_"..amount.."_ro" end local exstr = "{\"platform\":\""..self.platform.."_MyCard\",\"cpOrderId\":\""..cpOrderId.."\"}" local url,params = self:GetOpenPayUrl(goodsIdNew, goodsNameNew, goodsDesc, count, amount, cpOrderId, cbUrl, exstr) local sortParams= {} for kv in pairs(params) do if kv ~= nil then table.insert(sortParams,kv) end end table.sort(sortParams,function (a,b) return a < b end) local paaramsStr = "" for _, k in pairs(sortParams) do --LogError("["..k.."] = "..params[k]) paaramsStr = paaramsStr..k.."="..params[k].."&" end paaramsStr= paaramsStr.. self.openKey --LogError("url = "..url) LogError("paaramsStr = "..paaramsStr) self.postData = url ManagerContainer.NetManager:SendMessage(ProtoMsgId.CS_MD5_GET_REQ, {md5 = paaramsStr}) end function OpenPayMgr:GetOpenPayUrl(goodsId, goodsName, goodsDesc, count, amount, cpOrderId, cbUrl, extrasParams) local params= {} local url ="" --"https://mia.hkhappygame.com/open/getPayUrl?" -- openId string 必传 开放平台开发者身份id,由QuickSDK分配 url = url .. "openId=" .. self.openID params['openId'] = self.openID -- productCode string 必传 产品CODE,在QuickSDK后台获取 url = url .. "&productCode=" .. self.productCode params['productCode'] = self.productCode -- userId string 必传 SDK用户的账号ID url = url .. "&userId=" .. self.userId params['userId'] = self.userId -- goodsId string 必传 游戏商品id url = url .. "&goodsId=" .. goodsId params['goodsId'] = goodsId -- cpOrderNostring 选传游戏订单号 url = url .. "&cpOrderNostring=" .. cpOrderId params['cpOrderNostring'] = cpOrderId -- orderSubject string 必传 订单标题 url = url .. "&orderSubject=" .. goodsDesc params['orderSubject'] = goodsDesc -- roleName string必传 用户角色名 url = url .. "&roleName=" .. self.roleName params['roleName'] = self.roleName -- serverName string必传游戏服务器名 url = url .. "&serverName=" .. self.serverName params['serverName'] = self.serverName -- goodsName string必传 商品名称 url = url .. "&goodsName=" .. goodsName params['goodsName'] = goodsName -- roleLevel int 必传 用户角色等级 url = url .. "&roleLevel=" .. self.roleLevel params['roleLevel'] = self.roleLevel -- extrasParams string必传 订单保留参数,原样返回给cp url = url .. "&extrasParams=" .. extrasParams params['extrasParams'] = extrasParams -- callbackUrl string 选传订单回调地址,就是通知cp服务器发货的通知地址 url = url .. "&callbackUrl=" .. cbUrl params['callbackUrl'] = cbUrl -- payType string 选传 支付方式ID,ID获取请参照SDK后台“平台管理”>“支付对照表”。支持多种支付方式,多个支付方式以“|”隔开,比如:12|13|23注意:支付方式ID需满足后台勾选已经支持的第三方支付方式,否则无法显示指定支付方式渠道 --url = url .. "&payType=" .. "14" --params['payType'] = "14" -- countryCode string 选传 国家代码,如CHN。获取请参照SDK后台“平台管理”>“地区管理”注意:国家代码需满足后台勾选已经支持的第三方支付方式,否则无法显示指定国家的支付 url = url .. "&countryCode=" .. "TWN"--"en-US" params['countryCode'] = "TWN"--"en-US" -- clientLang string 必传 支付中心语言包,填写地区语言代码,如en-US。默认为中文繁体 url = url .. "&clientLang=" .. "zh-tw"--"en-US" params['clientLang'] = "zh-tw"--"en-US" -- payVersion int 选传 第三方支付版本,默认不填写为SDK常规版本。取固定值为:2. 表示平台单独处理版本,此版本平台需传金额和币种进行支付并且SDK不参与商品金额的转换由平台自身处理,平台根据自身情况酌情考虑使用。 -- amount float 选传 订单金额。如果payVersion的值为2,则必传amount字段 url = url .. "&amount=" .. amount params['amount'] = amount -- currency string 选传 选传 订单支付的币种代码。如果payVersion的值为2,则必传currency字段注意:支付币种代码必须为SDK后台货币管理里面所支持的货币代码 url = url .. "¤cy=" .. "USD" params['currency'] = "USD" -- sign string 必传 签名串,算法详见第三章签名算法描述 url = url .. "&sign=" return url,params end function OpenPayMgr:OnGetMD5InfoAck(data) if ManagerContainer.NetManager:IsErrorData(data) then return end if data.md5 then self.postData= self.postData..data.md5 else return end LogError("md5 = "..data.md5) if self.getPayUrlWWW then self.getPayUrlWWW:Dispose() self.getPayUrlWWW = nil end --LogError("Url = [[["..self.baseUrl.."]]]") --LogError("postData = [[["..self.postData.."]]]") self.getPayUrlWWW = UnityEngine.WWW(self.baseUrl,self.postData) end function OpenPayMgr:GetVersionCfg() local url = PlatformPack.NOTIFY_URL .. "VersionCfg.json" ManagerContainer.LuaGameMgr:RequestHttpServer(url,function (text) self:OnGetVersionCfg(text) end) end function OpenPayMgr:OnGetVersionCfg(text) local cfgsJson self.versionCfgs = {} local ok, errors = RO_XPCALL(function() cfgsJson = JSON:decode(text) end, debug.traceback) if ok then for k,p in pairs(cfgsJson) do self.versionCfgs[p.Version] = p --LogError(Inspect(p)) end else LogError("[Notice].."..errors) end end function OpenPayMgr:GetCurVersionCfg(version) local cfg if self.versionCfgs==nil or self.versionCfgs[version] == nil then cfg = { Version = version, AndroidPayMode = -1, IOSPayMode = -1 } else cfg = self.versionCfgs[version] end --LogError(Inspect(cfg)) return cfg end function OpenPayMgr:GetCurPayMode() local vs = UnityEngine.Application.version local vcfg = self:GetCurVersionCfg(vs) if self.platform == "SDKHwQuick" then return vcfg.AndroidPayMode + 0 elseif self.platform == "SDKYOUYI_IOS" then return vcfg.IOSPayMode + 0 else return vcfg.AndroidPayMode + 0 end end return OpenPayMgr