From 49c764a2e0bed93cec50c77480fcb24e0cdc97c3 Mon Sep 17 00:00:00 2001 From: 陆恒 Date: Mon, 18 May 2020 11:04:15 +0800 Subject: [PATCH] 提现接入后端SDK --- src/HttpServer/logic/constdef.go | 5 +++-- src/HttpServer/logic/datadef.go | 31 +++++++++++++++++++++++++++++++ src/HttpServer/logic/function.go | 148 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 176 insertions(+), 8 deletions(-) diff --git a/src/HttpServer/logic/constdef.go b/src/HttpServer/logic/constdef.go index d730a5c..144b547 100644 --- a/src/HttpServer/logic/constdef.go +++ b/src/HttpServer/logic/constdef.go @@ -42,8 +42,9 @@ const ( ) const ( - XIAOXINGXING_SERVERKEY = "33e0c3238c108a36d87025544c6a2d2f" - XIAOXINGXING_SDKURL = "https://testapi-gamesdk.d3games.com/" + XIAOXINGXING_SERVERKEY = "33e0c3238c108a36d87025544c6a2d2f" + XIAOXINGXING_SERVERKEYTEST = "e2cd22102143cdcd9c181f962d031685" + XIAOXINGXING_SDKURL = "https://testapi-gamesdk.d3games.com/" ) const ( diff --git a/src/HttpServer/logic/datadef.go b/src/HttpServer/logic/datadef.go index 27a3419..9f14a48 100644 --- a/src/HttpServer/logic/datadef.go +++ b/src/HttpServer/logic/datadef.go @@ -287,6 +287,22 @@ type UserData struct { Achieve AchieveMentInfo //玩家成就完成相关数据 } +//---------------------------------------------------------------------------------------------------------------------- + +type TixianDesc struct { + Sign string `json:"sign"` + Sign_type string `json:"sign_type"` + Time_stamp string `json:"time_stamp"` + Gameid string `json:"gameid"` + Channel string `json:"channel"` + Uid int `json:"uid"` + Typ int `json:"typ"` + Money int `json:"money"` + Openid string `json:"openid"` + Nickname string `json:"nickname"` + Headurl string `json:"headurl"` +} + type AddCoinDesc struct { Sign string `json:"sign"` Sign_type string `json:"sign_type"` @@ -298,6 +314,16 @@ type AddCoinDesc struct { Typ int `json:"typ"` } +type AddCoinResultData struct { + Mycoin int `json:"mycoin"` +} + +type AddCoinResp struct { + Code string `json:"code"` + Msg string `json:"msg"` + Data AddCoinResultData `json:"data"` +} + type GetCoinDesc struct { Sign string `json:"sign"` Sign_type string `json:"sign_type"` @@ -306,3 +332,8 @@ type GetCoinDesc struct { Channel string `json:"channel"` Uid int `json:"uid"` } + +type GetCashResp struct { + Code string `json:"code"` + Msg string `json:"msg"` +} diff --git a/src/HttpServer/logic/function.go b/src/HttpServer/logic/function.go index d32c1e4..04e0143 100644 --- a/src/HttpServer/logic/function.go +++ b/src/HttpServer/logic/function.go @@ -785,10 +785,59 @@ func DoHttpPost(bys []byte) (string, error) { } func GetCoinFromSdk(uuid int, gameid string, channel string) (int, error) { - + var paramlist []string var params GetCoinDesc params.Sign_type = "md5" - return 0, nil + params.Gameid = gameid + params.Channel = channel + params.Uid = uuid + params.Time_stamp = strconv.Itoa(int(time.Now().Unix())) + signtypestr := "md5=" + params.Sign_type + timestampstr := "time_stamp=" + strconv.Itoa(int(time.Now().Unix())) + paramgameid := "gameid=" + gameid + pchannel := "channel=" + channel + puid := "uid=" + strconv.Itoa(uuid) + paramlist = append(paramlist, signtypestr) + paramlist = append(paramlist, timestampstr) + paramlist = append(paramlist, paramgameid) + paramlist = append(paramlist, pchannel) + paramlist = append(paramlist, puid) + + sumparam := GettotalParam(paramlist) + //加serverkey + signsum := sumparam + XIAOXINGXING_SERVERKEYTEST + logger.Info("GetCoinFromSdk sumparam=%v", signsum) + + //进行hash + sign := GetHashValue(signsum) + params.Sign = sign + + bys, err := json.Marshal(¶ms) + if err != nil { + logger.Error("GetCoinFromSdk failed=%v", err) + return 0, err + } + res, err := DoHttpPost(bys) + if err != nil { + logger.Error("GetCoinFromSdk failed=%v", err) + return 0, err + } + + logger.Info("GetCoinFromSdk res=%v", res) + + var resp AddCoinResp + err = json.Unmarshal([]byte(res), &resp) + if err != nil { + logger.Error("GetCoinFromSdk failed=%v", err) + return 0, err + } + + if resp.Code != "0" { + logger.Error("GetCoinFromSdk failed=%v", resp.Msg) + return 0, err + } + + return resp.Data.Mycoin, nil } func AddCoinToSdk(uuid int, goldnum int, gameid string, channel string, atype int) (int, error) { @@ -810,7 +859,7 @@ func AddCoinToSdk(uuid int, goldnum int, gameid string, channel string, atype in sumparam := GettotalParam(paramlist) //加serverkey - signsum := sumparam + XIAOXINGXING_SERVERKEY + signsum := sumparam + XIAOXINGXING_SERVERKEYTEST logger.Info("AddCoinToSdk sumparam=%v", signsum) //进行hash @@ -838,10 +887,97 @@ func AddCoinToSdk(uuid int, goldnum int, gameid string, channel string, atype in } logger.Info("AddCoinToSdk res=%v", res) - return 0, nil + var resp AddCoinResp + err = json.Unmarshal([]byte(res), &resp) + if err != nil { + logger.Error("AddCoinToSdk failed=%v", err) + return 0, err + } + + if resp.Code != "0" { + logger.Error("AddCoinToSdk failed=%v", resp.Msg) + return 0, err + } + return resp.Data.Mycoin, nil } func GetCashFromSDK(uuid int, goldnum int, gameid, channel, openid, nickname, headurl string) (int, error) { - //先不接 - return 0, nil + if goldnum == 0 || uuid == 0 || gameid == "" || channel == "" || openid == "" || nickname == "" || headurl == "" { + logger.Error("GetCashFromSDK param empty") + return 0, errors.New("param empty") + } + var paramlist []string + var params TixianDesc + params.Sign_type = "md5" + params.Gameid = gameid + params.Channel = channel + params.Uid = uuid + params.Time_stamp = strconv.Itoa(int(time.Now().Unix())) + params.Headurl = headurl + params.Money = goldnum + params.Openid = openid + params.Nickname = nickname + params.Typ = 1 + signtypestr := "md5=" + params.Sign_type + timestampstr := "time_stamp=" + strconv.Itoa(int(time.Now().Unix())) + paramgameid := "gameid=" + gameid + pchannel := "channel=" + channel + puid := "uid=" + strconv.Itoa(uuid) + phead := "headurl=" + headurl + pnickname := "nickname=" + nickname + popenid := "openid=" + openid + pmoney := "money=" + strconv.Itoa(goldnum) + ptype := "typ=" + "6" //微信 + paramlist = append(paramlist, signtypestr) + paramlist = append(paramlist, timestampstr) + paramlist = append(paramlist, paramgameid) + paramlist = append(paramlist, pchannel) + paramlist = append(paramlist, puid) + paramlist = append(paramlist, phead) + paramlist = append(paramlist, pnickname) + paramlist = append(paramlist, popenid) + paramlist = append(paramlist, pmoney) + paramlist = append(paramlist, ptype) + + sumparam := GettotalParam(paramlist) + //加serverkey + signsum := sumparam + XIAOXINGXING_SERVERKEYTEST + logger.Info("GetCashFromSDK sumparam=%v", signsum) + + //进行hash + sign := GetHashValue(signsum) + params.Sign = sign + + bys, err := json.Marshal(¶ms) + if err != nil { + logger.Error("GetCashFromSDK failed=%v", err) + return 0, err + } + res, err := DoHttpPost(bys) + if err != nil { + logger.Error("GetCashFromSDK failed=%v", err) + return 0, err + } + + logger.Info("GetCashFromSDK res=%v", res) + + var resp GetCashResp + err = json.Unmarshal([]byte(res), &resp) + if err != nil { + logger.Error("GetCashFromSDK failed=%v", err) + return 0, err + } + + if resp.Code != "0" { + logger.Error("GetCashFromSDK failed=%v", resp.Msg) + return 0, err + } + + //拉取一下新的金币值 + newnum, err := GetCoinFromSdk(uuid, gameid, channel) + if err != nil { + logger.Error("GetCashFromSDK failed=%v", err) + return 0, err + } + return newnum, nil } -- libgit2 0.21.0