diff --git a/src/ProtocolCode.lua b/src/ProtocolCode.lua index 40b5061..5a0cb92 100644 --- a/src/ProtocolCode.lua +++ b/src/ProtocolCode.lua @@ -232,6 +232,7 @@ actionCodes = { Store_getTotalRechargeAwardRpc = 564, -- 累计充值 Store_monthCardRewardRpc = 565, --每日月卡+特刊奖励 Store_dyhxAndroidRechargeRpc = 566, -- 东银河充值 + Store_getCpOrderIdRpc = 567, -- 生成充值订单号 Store_biliCloudRechargeRpc = 596, Store_biliAndroidRechargeRpc = 597, diff --git a/src/actions/RoleAction.lua b/src/actions/RoleAction.lua index a2a7572..48dc759 100644 --- a/src/actions/RoleAction.lua +++ b/src/actions/RoleAction.lua @@ -334,6 +334,7 @@ function _M.loginRpc( agent, data ) local hangPass = role:getProperty("hangPass") role:mylog("login", {key1 = agent.ip:toArray(false, ":")[1], int1 = hangPass[1] or 0}) + role:onUploadLoginout(1, agent.client_fd) -- 是否是新设备 local deviced = cluster.query("center", "deviced") diff --git a/src/actions/StoreAction.lua b/src/actions/StoreAction.lua index 897d9be..d7e8944 100644 --- a/src/actions/StoreAction.lua +++ b/src/actions/StoreAction.lua @@ -280,6 +280,37 @@ function _M.dyhxAndroidRechargeRpc(agent, data) return true end +local rechargeHandler = { + ali = function(cp_order_id, rechargeId, result) + end, + wx = function(cp_order_id, rechargeId, result) + end, +} + +function _M.getCpOrderIdRpc(agent, data) + local role = agent.role + local msg = MsgPack.unpack(data) + local id = msg.id + local type = msg.skd_type or "" + local choose = msg.choose or "" + local dataSet = csvdb["shop_rechargeCsv"][id] + if not dataSet then return end + local roleId = role:getProperty("id") + + role.ignoreHeartbeat = true + --创建订单号 + local partnerOrderId = role:getPurchaseOrder(id,nil,choose) + + local result = {} + result["order"] = partnerOrderId + local handler = rechargeHandler[type] + if handler then + handler(partnerOrderId, id, result) + end + + SendPacket(actionCodes.Store_getCpOrderIdRpc, MsgPack.pack(result)) +end + function _M.purchaseOrderResult(agent, data) local role = agent.role diff --git a/src/agent.lua b/src/agent.lua index 6a21de6..651c425 100644 --- a/src/agent.lua +++ b/src/agent.lua @@ -295,6 +295,7 @@ function CMD.close() role:log("onLogout", {logtime = skynet.timex()-role:getProperty("ltime")}) role:mylog("logout", {int1 = skynet.timex()-role:getProperty("ltime")}) role:onOfflineEvent() + role:onUploadLoginout(0, agentInfo.client_fd) end function CMD.exit() diff --git a/src/models/RolePlugin.lua b/src/models/RolePlugin.lua index f1bf53b..786d09f 100644 --- a/src/models/RolePlugin.lua +++ b/src/models/RolePlugin.lua @@ -36,6 +36,26 @@ function RolePlugin.bind(Role) self:saveRoleData() end + -- 上报中宣数据 + function Role:onUploadLoginout(bt, session) + local uid = self:getProperty("uid") + local id = self:getProperty("id") + local time = skynet.timex() + local si = string.format("%s_%s", id, session) + local info = {{si = si, bt = bt, ot = time}} + + local codeurl = skynet.getenv("codeurl") + local content = { + ["si"] = si, + ["bt"] = bt, + ["ot"] = time, + ["uid"] = uid, + ["key"] = "zhaolugame20170831", + } + dump(content) + httpc.get(codeurl, "/collect?" .. httpGetFormatData(content), {}) + end + local function checkItemCount(self, itemId, count) local itemData = csvdb["itemCsv"][itemId] -- 种类 类型数量限制 @@ -2410,11 +2430,20 @@ function RolePlugin.bind(Role) end local rechargeId = back local rechargeData = csvdb["shop_rechargeCsv"][rechargeId] - if (params.is_mycard and rechargeData.twd * 100 ~= tonumber(params.amount)) or (not params.is_mycard and ((rechargeData.rmb * 100) / globalCsv.QArecharge) ~= tonumber(params.amount)) then - skynet.error(string.format("[recharge] fake order: %s, roleId: %d, order: %s, rmb %s, get %s", - params.transactionId, roleId, partnerOrderStr, rechargeData.rmb, params.amount - )) - return + if params.amount == 0 then + if params.product_id ~= rechargeData.iap_product_id then + skynet.error(string.format("[recharge] fake order: %s, roleId: %d, order: %s, rmb %s, get %s", + params.transactionId, roleId, partnerOrderStr, rechargeData.iap_product_id, params.product_id + )) + return + end + else + if (params.is_mycard and rechargeData.twd * 100 ~= tonumber(params.amount)) or (not params.is_mycard and ((rechargeData.rmb * 100) / globalCsv.QArecharge) ~= tonumber(params.amount)) then + skynet.error(string.format("[recharge] fake order: %s, roleId: %d, order: %s, rmb %s, get %s", + params.transactionId, roleId, partnerOrderStr, rechargeData.rmb, params.amount + )) + return + end end local status, reward = self:recharge({ -- libgit2 0.21.2