逍遥西游后台的gamesign数值详细解说
部分后台可能出现后台发送物品客户端不到账情况
那么是因为什么原因呢


那是因为
gamesign数值 后台和服务端不匹配所导致的

那么我们就要去检查我们的后台和服务端的gamesign数值





服务端位置在:/home/nomogaserver/paycenter/src/gamelogicw/rlchnl/

quick.lua 这个文件内所记录的就是gamesign数值

由于原始文件内的gamesign数值 比较混淆

不容易修改和查找

那么我们就提供了一份可供修改的
quick.lua 文件



文件内容:

  1. local httpc = require "http.httpc"
  2. local cjson = require "cjson"
  3. local md5 = require "md5"
  4. local crypt = require "crypt"
  5. requiregamelogic "objects.payordermanager"
  6. requiregamelogic "objects.gmcmdmanager"
  7. require "util.sysutil"
  8. local skynet = require "skynet"
  9. local tableutil = require "util.tableutil"


  10. --------------------------------------------------------------------------------------
  11. local xml = require("xmlSimple").newParser()
  12. require('bit32')
  13. require('string')

  14. function getByte(data, flag)
  15.     local array = {}
  16.     local lens = string.len(data)
  17.     if (flag == false)
  18.     then
  19.         for i=1,lens do
  20.             array[i] = string.byte(data, i)
  21.         end
  22.         return array
  23.     else
  24.         for i=1,lens do
  25.             array[i-1] = string.byte(data, i)
  26.         end
  27.     end
  28.     return array,lens
  29. end

  30. function getChars(bytes)
  31.     local array = {}
  32.     for key, val in pairs(bytes) do
  33.         array[key] = string.char(val)
  34.     end
  35.     return array
  36. end

  37. function encryptData(data, keys)
  38.     local result = ""
  39.     local dataArr = getByte(data, false)
  40.     local keyArr,keyLen = getByte(keys, true)
  41.     for index,value in pairs(dataArr) do
  42.         result = result.."@"..tostring((0xFF and value) + (0xFF and keyArr[(index-1) % keyLen]))
  43.     end
  44.     return result
  45. end

  46. function decryptData(data, keys)
  47.     local result = ""
  48.     local dataArr = string.split(data, '@')
  49.     local keyArr,keyLen = getByte(keys, true)
  50.     for index,value in pairs(dataArr) do
  51.           bytes =  tonumber(value) - (0xFF and keyArr[(index-1) % keyLen])
  52.           result = result..string.char(bytes)
  53.     end
  54.     return result
  55. end

  56. function string.split( str,reps )
  57.     local resultStrList = {}
  58.     string.gsub(str,'[^'..reps..']+',function ( w )
  59.         table.insert(resultStrList,w)
  60.     end)
  61.     return resultStrList
  62. end
  63. --------------------------------------------------------------------------------------



  64. if not rlchnl_quick then
  65.         rlchnl_quick = {
  66.                 typeflag = "quick",        -- 这个flag会与支付数据一起落地,不能修改
  67.                 order_tablename = "quick_pay_order",
  68.                 testmode = false,
  69.                 basedt = {},
  70.                 gameId2Flag = {},
  71.                 payedOrderCache = {
  72.                         --[[
  73.                         [gf/gameflag] = {
  74.                                 [kid] = {
  75.                                         [acctId] = {
  76.                                                 bodyObj,bodyObj,bodyObj,...
  77.                                         }        
  78.                                 },
  79.                         },
  80.                         ]]
  81.                 },
  82.                 urls = {
  83.                         logincheckf = "sdk.g.uc.cn",
  84.                         logincheckt = "sdk.test4.g.uc.cn",
  85.                 },
  86.                 payordermanager = object_payordermanager.new(),
  87.                 gmcmdmanager = object_gmcmdmanager.new(),
  88.         }
  89. end

  90.         
  91. skynet.error("string:urlencode" .. string.urlencode("gf=xiyou#kid=md_yios_1#rid=10022#gid=2#did=2"))

  92. rlchnl_quick.basedt.xiyou = {
  93.         apiKey = "4e1c27908606818f73df9620b7a778",
  94.         cpId = 41096,
  95.         gameId = 552521,
  96. }

  97. --[[
  98.         西游传奇在UC-SDK接入参数如下:
  99.         apiKey:4e1c27908606818f73df9620b7a7785c
  100.         cpId:41096
  101.         gameId:552521

  102.         *了解参数及相关接口说明,请查看:http://doc.game.open.uc.cn/doc/detail/21#doc

  103. ]]

  104. -----------------------------------------------------------------------------

  105. for gameflag,gdt in pairs(rlchnl_quick.basedt) do
  106.         rlchnl_quick.gameId2Flag[gdt.gameId] = gameflag
  107. end

  108. function rlchnl_quick:getAccount(accountId)
  109.         local account = string.format("%s@quick",accountId)
  110.         return account
  111. end

  112. function rlchnl_quick:init()
  113.         self.payordermanager.rlchnlObj = rlchnl_quick
  114.         self.payordermanager.tablename = "quick_pay_cache"
  115.         self.payordermanager.order_tablename = self.order_tablename
  116.         print("MD:",self.payordermanager)
  117.         self.payordermanager:loadPayedOrderCache()
  118.         self.gmcmdmanager.rlchnlObj = rlchnl_quick
  119. end

  120. ------------------------------------------------------------------------------

  121. function rlchnl_quick:genUniqueId()
  122.         local now = os.time()
  123.         if now ~= self.unique_sec then
  124.                 self.unique_sec = now
  125.                 self.unique_id = 1
  126.         else
  127.                 self.unique_id = self.unique_id + 1
  128.         end
  129.         return self.unique_sec * 1000 + self.unique_id
  130. end

  131. function rlchnl_quick:comfirmFinishOrder(kid,orderid,...)
  132.         rlchnl_init:comfirmFinishOrder(self,kid,orderid,...)
  133. end

  134. --------------------------------------------------------------
  135. function rlchnl_quick.nethttp_echo2(reqArgs,bodyObj)
  136.         return "nethttp_echo"
  137. end

  138. function rlchnl_quick.nethttp_echo(reqArgs,bodyObj,bRedirect)
  139.         if bRedirect then
  140.                 return false,rlchnl_quick.nethttp_echo2(reqArgs,bodyObj)
  141.         else
  142.                 return rlchnl_quick.nethttp_echo2(reqArgs,bodyObj)
  143.         end
  144. end


  145. function rlchnl_quick.checksign()


  146. end

  147. function rlchnl_quick.nethttp_payed2(reqArgs,bodyObj)

  148.     local nSign = string.format("%s%s%s",
  149.                                                                         bodyObj.nt_data,
  150.                                     bodyObj.sign,
  151.                                                                         "fdgfdsg12321321321sd")
  152.     g_serverinfo:loggerex("quickpaytest","w before md5 nSign 2",nSign)
  153.         nSign = md5.sumhexa(nSign)
  154.     bodyObj.nSign = nSign
  155.         local bSignRs = false
  156.         if bodyObj.md5Sign == nSign then
  157.                 bSignRs = true
  158.         else
  159.                 g_serverinfo:loggerex("quickpaytest","w rlchnl_quick.nethttp_payed2 sign error",bodyObj)
  160.         return "sign error"..nSign
  161.         end

  162.         local ff = decryptData(bodyObj.nt_data, "0244407911396383213237468493135538279")
  163.         g_serverinfo:loggerex("quickpaytest","xml data = ",ff)
  164.         local parsedXml = xml:ParseXmlText(ff)
  165.     --g_serverinfo:loggerex("quickpaytest","w rlchnl_quick.nethttp_payed2 bodyObj= ",bodyObj)

  166.      local bodyCache = {
  167.             data = {
  168.                 orderid = parsedXml.quicksdk_message.message.order_no:value(),
  169.                             username = parsedXml.quicksdk_message.message.channel_uid:value(),
  170.                 gameid="2005",
  171.                 roleid=parsedXml.quicksdk_message.message.channel_uid:value(),
  172.                 serverid=0,
  173.                 paytype=0,
  174.                 amount=tonumber(parsedXml.quicksdk_message.message.amount:value()),
  175.                 paytime=tonumber(os.time()),
  176.                             attach = crypt.base64decode(parsedXml.quicksdk_message.message.extras_params:value()),
  177.                 sign = bodyObj.md5Sign
  178.             }
  179.         }

  180.     g_serverinfo:loggerex("quickpaytest","print xml data bodyCache", bodyCache)

  181.         local oldBodyObj = g_gamedb:gdbQuery(rlchnl_quick.order_tablename,bodyCache.data.orderid)
  182.         if oldBodyObj then
  183.                 if bSignRs then
  184.                         return "SUCCESS"
  185.                 else
  186.                         return "fail"
  187.                 end
  188.         else
  189.                 local checkRs = false
  190.                 if bSignRs then
  191.                         local gf,kid,rid,gid = rlchnl_quick.payordermanager:parseCbInfo(bodyCache.data.attach)
  192.                         if gf and kid and rid and gid then
  193.                                 rid = tonumber(rid)
  194.                                 gid = tonumber(gid)
  195.                                 --bodyObj.data = bodyObj or {}
  196.                                 bodyCache.data.rid = rid
  197.                                 bodyCache.data.cbinfo = {
  198.                                         gf                 = gf,
  199.                                         kid         = kid,
  200.                                         rid         = rid,
  201.                                         gid         = gid,
  202.                                         sta         = 0,
  203.                                         date        = os.date("%Y-%m-%d") ,
  204.                                         time         = os.date("%H:%M:%S") ,
  205.                                 }
  206.                                 rlchnl_quick.payordermanager:cacheBodyObj(rid,bodyCache,gf,kid,rid,gid)
  207.                                 checkRs = true
  208.                         else
  209.                                 g_serverinfo:loggerex("quickpaytest","test",bodyCache)
  210.                         end
  211.                 else
  212.                 end

  213.         g_serverinfo:loggerex("quickpaytest","w 123 ",bodyCache)
  214.                 g_gamedb:gdbInsert(rlchnl_quick.order_tablename,bodyCache.data.orderid,bodyCache)
  215.         g_serverinfo:loggerex("quickpaytest","w gbInsert data= ",bodyCache)
  216.                 if bSignRs and checkRs then
  217.             g_serverinfo:loggerex("quickpaytest","w gbInsert success",bodyCache)
  218.                         return "SUCCESS"
  219.                 else
  220.                         return "fail"
  221.                 end
  222.         end
  223. end

  224. function rlchnl_quick.nethttp_payed(reqArgs,bodyObj,bRedirect)
  225.     g_serverinfo:loggerex("quickpaytest","w rlchnl_quick.nethttp_payed", bodyObj)
  226.         if bRedirect then
  227.                 local gf,kid,rid,gid,did = rlchnl_quick.payordermanager:parseCbInfo(bodyObj.data.callbackInfo)
  228.                 did = tonumber(did or 0)
  229.                 if did == 2 then
  230.                         return true,rlchnl_quick.nethttp_payed2(reqArgs,bodyObj,bRedirect)
  231.                 else
  232.                         return false
  233.                 end
  234.         else
  235.                 return rlchnl_quick.nethttp_payed2(reqArgs,bodyObj,bRedirect)
  236.         end
  237. end


  238. function rlchnl_quick.nethttp_gmcmd(reqArgs,bodyObj)
  239.         --Form data
  240.         --[[
  241.                 kid
  242.             cmd
  243.             sign
  244.         ]]

  245.     local nSign = string.format("%s%s%s",
  246.             bodyObj.kid,
  247.             bodyObj.content,
  248.             "<font color="red">www.duozy.cn</font>")

  249.     g_serverinfo:loggerex("quickgmcmdtest","w before md5 nSign 2",nSign)
  250.         nSign = md5.sumhexa(nSign)
  251.     bodyObj.nSign = nSign
  252.         local bSignRs = false
  253.         if bodyObj.sign == nSign        or   bodyObj.sign == "<font color="red">www.duozy.cn</font>"  then
  254.                 bSignRs = true
  255.         else
  256.                 g_serverinfo:loggerex("quickgmcmdtest","w rlchnl_quick.nethttp_gmcmd sign error",bodyObj)
  257.         return "sign error05"
  258.         end

  259.     g_serverinfo:loggerex("quickgmcmdtest","w rlchnl_quick.nethttp_gmcmd bodyObj= ",bodyObj)
  260.         
  261.         local server_kid_map = {
  262.             [1] = "md_s_1",
  263.             [2] = "md_s_2",
  264.         }

  265.     local getsid = string.gmatch( bodyObj.kid, "%d+")
  266.         local mserverId = getsid()
  267.     --local server_kid = server_kid_map[tonumber(mserverId)]  
  268.         local server_kid = "md_s_"..mserverId        
  269.         --g_serverinfo:loggerex("quickgmcmdtest","w rlchnl_quick 123 ",mserverId, server_kid, server_kid_map)
  270.     if server_kid == nil then
  271.             return "gf error"
  272.     end

  273.         local bodyCache = {
  274.                    gf = "xiyou",
  275.                     kid = server_kid,
  276.                     cmd = bodyObj.content,
  277.         }

  278.     g_serverinfo:loggerex("quickgmcmdtest","w rlchnl_quick.nethttp_gmcmd bodyCache= ",bodyCache)
  279.         

  280.         --local bodyCache = {
  281.     --               gf = bodyObj.gf,
  282.     --                kid = bodyObj.kid,
  283.     --                cmd = bodyObj.content,
  284.     --   }

  285.         rlchnl_quick.gmcmdmanager:cacheBodyObj(bodyCache)

  286.     --[[local gfCache = rlchnl_dashi.gmCmdCache[bodyObj.gf]
  287.     if not gfCache then
  288.             gfCache = {}
  289.     end
  290.     local kidCache = gfCache[bodyObj.kid]
  291.     if not kidCache then
  292.             kidCache = {}
  293.     end
  294.     kidCache[#kidCache + 1] = bodyObj.content        --]]
  295.         return "OK"

  296. end


  297. ----------------------------------------------------------------
  298. local scmdMap = {
  299.         echo         = rlchnl_quick.nethttp_echo,
  300.         payed         = rlchnl_quick.nethttp_payed,
  301.         gmcmd         = rlchnl_quick.nethttp_gmcmd,
  302. }

  303. ---------------------------------------------------------------

  304. function rlchnl_quick.nethttpcommand(subpath,reqArgs,bRedirect)
  305.         return net_reqnet.nethttpcommand_sub(subpath,reqArgs,scmdMap,bRedirect)
  306. end

  307. return rlchnl_quick
复制代码
其中www.duozy.cn为修改
gamesign数值

大家可以直接搜索 www.duozy.cn 进行替换也可以

由于编码的原因可能会导致轻微错乱
我会给打包一份单独的文件可供下载

普通带授权后台的  
QQ图片20191219100238.png
这种带授权的gamesign数值 修改位置为:/user/gmquery.php
这个文件gmquery.php  内修改  gamesign数值
  1. $url = "http://134.175.49.56:8001/quick/gmcmd?sign=874804605&kid=md_s_1&content=" . $send;
复制代码

874804605代表
的是 gamesign数值


那么 繁华后台 所需要修改 gamesign数值的位置

QQ图片20191219101027.png
圈出来的位置为gamesign数值


需要注意的就是 我们的后台 gamesign数值 一定要和服务端匹配
如果只修改后台的gamesign数值 是无法使用的
如果只修改服务端也是无法使用的
很多人都只修改了后台 所以没有办法使用
请点击此处下载

请先注册会员后再进行下载

已注册会员,请先登录后下载

文件名称: 
下载次数:0  文件大小:5.27 KB  售价:5 资源币[记录]
下载权限: 不限  以上或 VIP会员   [购买VIP]   [充值积分]  [免费积分]  [兑换积分]






温馨提示:
1、在论坛里发表的文章仅代表作者本人的观点,与本网站立场无关。
2、论坛的所有内容都不保证其准确性,有效性,时间性。阅读本站内容因误导等因素而造成的损失本站不承担连带责任。
3、当政府机关依照法定程序要求披露信息时,论坛均得免责。
4、若因线路及非本站所能控制范围的故障导致暂停服务期间造成的一切不便与损失,论坛不负任何责任。
5、注册会员通过任何手段和方法针对论坛进行破坏,我们有权对其行为作出处理。并保留进一步追究其责任的权利。




上一篇:混奖励水贴不小心点了抽奖 币没了
下一篇:梦幻诛仙不显示登陆界面问题解决流程
回复

使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

  • TA的每日心情

    2019-12-19 08:08
  • 签到天数: 49 天

    连续签到: 15 天

    [LV.5]常住居民I

    发表于 2019-12-19 10:56:49 | 显示全部楼层
    沙发
    这必须得支持一下~~~
    回复

    使用道具 举报

  • TA的每日心情
    难过
    2019-12-19 09:07
  • 签到天数: 12 天

    连续签到: 7 天

    [LV.3]偶尔看看II

    发表于 2019-12-19 11:25:36 | 显示全部楼层
    板凳
    逍遥西游-解放双手。炼化锁修改、根据上次点击自动加锁!
    回复

    使用道具 举报


    QQ|关于我们|手机版|小黑屋|多资源交流论坛 ( 鲁ICP备18025140号-4 )

    多资源网手游源码交流 X3.4  © 2018-2020 DuoZy.Cn