|
|
@@ -1,16 +1,22 @@
|
|
|
local OpenPayMgr = class('OpenPayMgr')
|
|
|
function OpenPayMgr:ctor()
|
|
|
self.openID = "1oijtI"
|
|
|
- self.productCode = "f7jMJSjCOYRX2kx7UQ4Ox5zZdAowUSe9"
|
|
|
+ self.productCode = "62071860216202428267772989490827"
|
|
|
+ --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 = ""
|
|
|
+
|
|
|
+ self:RegisterNetEvents()
|
|
|
end
|
|
|
|
|
|
function OpenPayMgr:Clear()
|
|
|
@@ -30,15 +36,16 @@ function OpenPayMgr:SetOpenData(userId,roleName,roleLevel,serverName)
|
|
|
self.roleName = roleName
|
|
|
self.serverName = serverName
|
|
|
self.roleLevel = roleLevel
|
|
|
+ self.platform = ManagerContainer.LuaGameMgr.platform
|
|
|
--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
|
|
|
|
|
|
|
|
|
@@ -49,10 +56,14 @@ function OpenPayMgr:Update()
|
|
|
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 = result.data
|
|
|
+
|
|
|
+ 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)
|
|
|
+ else
|
|
|
+ LogError("获取支付页面失败!!!!")
|
|
|
end
|
|
|
|
|
|
end
|
|
|
@@ -63,56 +74,114 @@ function OpenPayMgr:Update()
|
|
|
end
|
|
|
|
|
|
function OpenPayMgr:Pay(goodsId, goodsName, goodsDesc, count, amount, cpOrderId, cbUrl, extrasParams)
|
|
|
- local url = self:GetOpenPayUrl(goodsId, goodsName, goodsDesc, count, amount, cpOrderId, cbUrl, extrasParams)
|
|
|
- if self.getPayUrlWWW then
|
|
|
- self.getPayUrlWWW:Dispose()
|
|
|
- self.getPayUrlWWW = nil
|
|
|
+ local goodsNameNew = amount.."-商品"
|
|
|
+ local exstr = "{\"platform\"="..self.platform.."}"
|
|
|
+ local url,params = self:GetOpenPayUrl(goodsId, 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
|
|
|
- self.getPayUrlWWW = UnityEngine.WWW(url)
|
|
|
+ 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 url = "https://mia.hkhappygame.com/open/getPayUrl?"
|
|
|
+
|
|
|
+ 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
|
|
|
-- payTypestring 选传 支付方式ID,ID获取请参照SDK后台“平台管理”>“支付对照表”。支持多种支付方式,多个支付方式以“|”隔开,比如:12|13|23注意:支付方式ID需满足后台勾选已经支持的第三方支付方式,否则无法显示指定支付方式渠道
|
|
|
|
|
|
- -- countryCode string 选传国家代码,如CHN。获取请参照SDK后台“平台管理”>“地区管理”注意:国家代码需满足后台勾选已经支持的第三方支付方式,否则无法显示指定国家的支付
|
|
|
+ -- countryCode string 选传 国家代码,如CHN。获取请参照SDK后台“平台管理”>“地区管理”注意:国家代码需满足后台勾选已经支持的第三方支付方式,否则无法显示指定国家的支付
|
|
|
|
|
|
-- clientLang string 必传 支付中心语言包,填写地区语言代码,如en-US。默认为中文繁体
|
|
|
-
|
|
|
+ url = url .. "&clientLang=" .. "zh-cn"--"en-US"
|
|
|
+ params['clientLang'] = "zh-cn"--"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后台货币管理里面所支持的货币代码
|
|
|
|
|
|
-- sign string 必传 签名串,算法详见第三章签名算法描述
|
|
|
- url = url .. "&sign=" .. self.sign
|
|
|
- return url
|
|
|
+ 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
|
|
|
|
|
|
return OpenPayMgr
|