Bläddra i källkod

俄罗斯支付和登录sdk

lt 9 månader sedan
förälder
incheckning
4830d59259

+ 71 - 3
RO_Server_Trunk-branch_0.1.39/roserver/auth/model/auth_msg.go

@@ -1,7 +1,9 @@
 package model
 
 import (
+	"crypto/md5"
 	"encoding/base64"
+	"encoding/hex"
 	"encoding/json"
 	"io"
 	"net/http"
@@ -95,10 +97,10 @@ func init() {
 			// } else {
 			// 	LoginRet(ev, int32(serverproto.ErrorCode_ERROR_SDK_LOGIN_FAILED))
 			// }
-			case model.SDKPlatform_Quick_Ios:
+			case model.SDKPlatform_Ru_Ios:
 				fallthrough
-			case model.SDKPlatform_Quick_Android:
-				LoginVerifyGNQuickSign(cliId.SessID, cliId.ServiceID, msg.Platform, msg.PlatformToken, msg.OpenId)
+			case model.SDKPlatform_Ru_Android:
+				LoginVerifyRUSign(cliId.SessID, cliId.ServiceID, msg.Platform, msg.PlatformToken, msg.OpenId)
 			}
 			return
 
@@ -539,6 +541,72 @@ func LoginVerifyGNQuickSign(clientId uint64, GateServiceNode string, platform st
 	}()
 }
 
+func LoginVerifyRUSign(clientId uint64, GateServiceNode string, platform string, token string, openId string) {
+	//authHttpAddr := ""
+	urlPath := ""
+	go func() {
+		defer func() {
+			//打印奔溃信息
+			if err := recover(); err != nil {
+				util.InfoF("onError data=%v \n%s\n", err, string(debug.Stack()))
+			}
+		}()
+
+		//tmpRequest := &rocommon.HTTPRequest{}
+		//tmpRequest.ReqCodecName = "httpjson"
+		//为海外quick做适配
+		// if platform == model.SDKPlatform_Hw_Quick {
+		gameserctKey := "80c648e7df8aaa72"
+		param := "accountid=" + openId + "&gameid=100252" + "&sessionid=" + token
+		hash := md5.Sum([]byte(param + gameserctKey))
+		sign := hex.EncodeToString(hash[:])
+		//authHttpAddr = ""
+		//authHttpAddr = "http://pxqg.hkhappygame.com"
+		urlPath = "http://sdk.szmsbdmy.com:8083/loginvalid.php?" + param + "&sign=" + sign
+		//tmpRequest.ResMsg = ""
+		util.InfoF("urlPath=%v", urlPath)
+
+		//parm := GetHttpNodeParam()
+		//parm.LisAddr = authHttpAddr
+		//httpNode := baseserver.CreateHttpConnector(parm)
+		resp, err := http.Get(urlPath)
+		if err != nil {
+			util.ErrorF("login sdk check error:%v", err)
+		}
+		defer resp.Body.Close() // 确保关闭响应体
+
+		// 读取响应体
+		body, err2 := io.ReadAll(resp.Body)
+		res := string(body)
+		//err := httpNode.(rocommon.HTTPConnector).Request("GET", urlPath, tmpRequest)
+		util.InfoF("tmpRequest.ResMsg:%v", res)
+		tmpResMsg := &SDKHwQuickLoginAuthCheckResp{
+			Status: true,
+		}
+		var resRu ResponseRu
+		err = json.Unmarshal(body, &resRu)
+		if err != nil {
+			util.ErrorF("auth login json Unmarshal err:%v", err)
+		}
+		tmpResMsg.Message = resRu.Code
+		tmpResMsg.ClientId = clientId
+		tmpResMsg.ServiceId = GateServiceNode
+		tmpResMsg.OpenId = openId
+		tmpResMsg.Platform = platform
+		if err2 != nil || tmpResMsg.Message != "0" {
+			tmpResMsg.Status = false
+			util.ErrorF("uid=%v http Request openid=%v err=%v", clientId, openId, err2)
+			util.ErrorF("uid=%v http Request2 openid=%v err=%v", clientId, openId, resRu.Msg)
+		}
+		GetAuthCheckMag().AddCheckList(tmpResMsg)
+	}()
+}
+
+type ResponseRu struct {
+	Code string `json:"code"`
+	Msg  string `json:"msg"`
+}
+
 // SDKUniLoginAuthCheckResp
 func DoLoginHwQuickVerifySign(res *SDKHwQuickLoginAuthCheckResp) {
 	util.InfoF("openid=%v DoLoginHWQuickVerifySign retCode=%v", res.OpenId, res.RetCode)

+ 2 - 0
RO_Server_Trunk-branch_0.1.39/roserver/baseserver/model/orm_common.go

@@ -18,6 +18,8 @@ const (
 	SDKPlatform_YouYi_IOS     = "SDKYOUYI_IOS"
 	SDKPlatform_Quick_Android = "Quick_Android"
 	SDKPlatform_Quick_Ios     = "Quick_IOS"
+	SDKPlatform_Ru_Android    = "ZT_Android"
+	SDKPlatform_Ru_Ios        = "ZT_IOS"
 
 	/* sub_platform
 	changemeng_xjgl    畅梦包

+ 1 - 0
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/main.go

@@ -124,6 +124,7 @@ func main() {
 
 		router.POST("/pay", msg.WebPayQuickNotify)                                 // SDKquick 畅梦nbSDK
 		router.POST("/pay/hwQucik", msg.WebPayHwQuickNotify)                       // 海外quick
+		router.POST("/pay/hwRu", msg.WebPayHwRuNotify)                             // 海外俄罗斯
 		router.POST("/pay/hwQucikFromS1GmWeb", msg.WebPayHwQuickNotifyFromS1GmWeb) // 海外quick 1服转发到其他服,这里接收
 		//router.POST("/pay/nb", msg.WebPayNBSDKNotify)	// 畅梦牛逼SDK
 		router.POST("/pay/uni", msg.WebPayUniSDKNotify)

+ 98 - 0
RO_Server_Trunk-branch_0.1.39/roserver/gmweb/msg/web_paymsg.go

@@ -162,6 +162,16 @@ type Extras struct {
 	CpOrderId   string `json:"cpOrderId"`
 }
 
+type ExtrasRu struct {
+	AccountId     string `json:"accountId"`
+	Money         string `json:"money"`
+	Addtime       string `json:"addtime"`
+	OrderId       string `json:"orderId"`
+	CustomorderId string `json:"customorderId"`
+	Paytype       string `json:"paytype"`
+	Success       string `json:"success"`
+}
+
 // 海外版quick回调
 func WebPayHwQuickNotify(c *gin.Context) {
 	//util.DebugF("支付回调信息:%v", c.Request.PostForm)
@@ -258,6 +268,94 @@ func WebPayHwQuickNotify(c *gin.Context) {
 	c.String(http.StatusOK, "SUCCESS")
 }
 
+func WebPayHwRuNotify(c *gin.Context) {
+	//util.DebugF("支付回调信息:%v", c.Request.PostForm)
+	params := make(map[string]string)
+	if err := c.Request.ParseForm(); err != nil {
+		util.InfoF("parseForm falied")
+		c.String(http.StatusOK, "FAILED")
+		return
+	}
+	util.DebugF("支付回调信息2:%v", c.Request.PostForm)
+	for key, value := range c.Request.PostForm {
+		params[key] = value[0] // 假设每个参数只有一个值
+	}
+	sign := params["sign"]
+	info2 := params["custominfo"]
+	info := strings.ReplaceAll(info2, "\\", "")
+	var extras Extras
+	err := json.Unmarshal([]byte(info), &extras)
+	if err != nil {
+		util.ErrorF("支付回调参数解析错误:%v", err)
+	}
+	util.InfoF("支付签名认证:%v   params:%v", extras, params)
+	if extras.Platform == "ZT_IOS" || extras.Bima == "ZT_IOS" {
+		util.ErrorF("ios 支付签名认证:%v", info)
+		newSign := getMd5Sign("80c648e7df8aaa72", params)
+		if newSign != sign {
+			util.ErrorF("签名错误%v", sign)
+			c.String(http.StatusOK, "FAILED")
+			return
+		}
+	} else if extras.Platform == "SDKYOUYI_IOS_MyCard" || extras.Platform == "SDKHwQuick_MyCard" {
+		util.ErrorF("mycard 支付签名认证:%v", info)
+		newSign := getMd5Sign("03422134397322604272901806704074", params)
+		if newSign != sign {
+			util.ErrorF("签名错误%v", sign)
+			c.String(http.StatusOK, "FAILED")
+			return
+		}
+	} else {
+		util.ErrorF("android 支付签名认证:%v", info)
+		newSign := getMd5Sign("80c648e7df8aaa72", params)
+		if newSign != sign {
+			util.ErrorF("签名错误%v", sign)
+			c.String(http.StatusOK, "FAILED")
+			return
+		}
+	}
+	uid := c.PostForm("account")
+	cpOrderId := c.PostForm("customorderid")
+	orderNo := c.PostForm("orderid")
+	payAmount := c.PostForm("money")
+	payCurrency := c.PostForm("currency")
+	payType := c.PostForm("paytype")
+	usdAmount := c.PostForm("doller")
+	ntfData := &WebNotifyData{}
+	ntfData.CpOrderId = cpOrderId
+	ntfData.SdkOrderId = orderNo
+	ntfData.PayMethod = payType
+	ntfData.PayCurrency = payCurrency
+	ntfData.PayTime = uint64(util.GetTimeSeconds())
+	ntfData.PayChannel = "qk_hw"
+	util.WarnF("paycallback uid=%v cpOrderNo=%v orderNo=%v payAmount=%v payCurrency=%v payType=%v usdAmount=%v",
+		uid, cpOrderId, orderNo, payAmount, payCurrency, payType, usdAmount)
+	f64, err := strconv.ParseFloat(usdAmount, 32)
+	if err != nil {
+		fmt.Println("Error:", err)
+		return
+	}
+	webPayNotify(ntfData, float32(f64), c)
+
+	//// 简单粗暴,直接给其他服转发,不需要确认是哪个服
+	//payPostRouter := service.GetServiceConfig().SDKConfig.PayPostRouter
+	//util.WarnF("paycallback payPostRouter:%v\n", payPostRouter)
+	//// 组装转发body
+	//params["sign"] = sign
+	//var routerStr strings.Builder
+	//for key, value := range params {
+	//	routerStr.WriteString(key)
+	//	routerStr.WriteString("=")
+	//	routerStr.WriteString(value)
+	//	routerStr.WriteString("&")
+	//}
+	//routerString := routerStr.String()
+	//util.WarnF("paycallback routerString:%v\n", routerString)
+	//go sendPosts(payPostRouter, routerString)
+
+	c.String(http.StatusOK, "success")
+}
+
 func sendPosts(urls []string, routerString string) {
 	for i := 0; i < len(urls); i++ {
 		sendPostToOtherServer(urls[i], []byte(routerString))