印度包网
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

210 lines
4.5 KiB

package sn
import (
"crypto/md5"
"encoding/hex"
"encoding/json"
"fmt"
"github.com/liangdas/mqant/log"
"sort"
"strings"
)
const (
APIRlease = "https://api.nbetps.com/v2/launch_game"
APITest = "https://api.nbetps.com/v2/launch_game"
APICreateUserRlease = "https://api.nbetps.com/v1/create_user"
APICreateUserTest = "https://api.nbetps.com/v1/create_user"
APIControlRlease = "https://api.nbetps.com/v1/control"
APIControlTest = "https://api.nbetps.com/v1/control"
// LaunchGameURL = "/api/usr/ingame"
// GetGameListURL = "/api/game/loadlist"
// Lang = "hi"
)
type Agent struct {
MchId string `json:"mch_id"`
Key string `json:"key"`
}
var (
API = ""
APICreate = ""
APIControl = ""
AgentMap Agent
AgentMapTest = Agent{
MchId: "slotgolden777test",
Key: "010804d1-7bbf-4ed5-9b50-60fbd2b22e34",
}
AgentMapRelease = Agent{
MchId: "slotgolden777",
Key: "ddeaeb76-5624-41fe-a6ea-7ad9307d7701",
}
)
func getSignStr(str string, pass ...string) string {
m := map[string]json.RawMessage{}
sortStrs := []string{}
json.Unmarshal([]byte(str), &m)
for i := range m {
sortStrs = append(sortStrs, i)
}
signStr := ""
sort.Strings(sortStrs)
for _, v := range sortStrs {
shouldPass := false
for _, s := range pass {
if v == s {
shouldPass = true
break
}
}
if shouldPass {
continue
}
if len(m[v]) > 1 && m[v][0] == 34 {
m[v] = m[v][1 : len(m[v])-1]
}
if len(m[v]) == 0 {
continue
}
signStr += fmt.Sprintf("%v=%v", v, string(m[v]))
signStr += "&"
}
signStr = signStr[:len(signStr)-1]
return signStr
}
//func GeneratedSign(str string) string {
// signStr := getSignStr(str, "sign") + "&key=" + SignKey
// md5Value := createMd5(signStr)
// md5Value = strings.ToUpper(createMd5(md5Value))
// log.Debug("sn signStr:%s, md5:%s", signStr, md5Value)
// return md5Value
//}
func GeneratedSignMap(params map[string]interface{}) string {
keys := make([]string, 0, len(params))
for k := range params {
if k != "" && k != "sign" && params[k] != nil {
keys = append(keys, k)
}
}
sort.Strings(keys)
var result string
for _, v := range keys {
if result != "" {
result += "&"
}
var value string
switch params[v].(type) {
case float64:
value = fmt.Sprintf("%d", int64(params[v].(float64)))
case int64:
value = fmt.Sprintf("%d", params[v].(int64))
default:
value = fmt.Sprintf("%v", params[v])
}
result += v + "=" + value
}
return result
}
func GeneratedSign(params map[string]interface{}, key string) string {
keys := make([]string, 0, len(params))
for k := range params {
if k != "" && k != "sign" && params[k] != nil {
keys = append(keys, k)
}
}
sort.Strings(keys)
var sign string
for _, v := range keys {
var value string
switch params[v].(type) {
case float64:
value = fmt.Sprintf("%d", int64(params[v].(float64)))
case int64:
value = fmt.Sprintf("%d", params[v].(int64))
case []interface{}, map[string]interface{}:
data, _ := json.Marshal(params[v])
value = string(data)
default:
log.Debug("params[%s]: type=%T, value=%+v", v, params[v], params[v])
value = fmt.Sprintf("%v", params[v])
}
sign += v + "=" + value + "&"
}
sign += "key=" + key
result := strings.ToUpper(createMd5(sign))
log.Debug("signStr:%v sign:%s\n", sign, result)
return result
}
// createMd5 生成md5字符串
func createMd5(str string) string {
h := md5.New()
h.Write([]byte(str))
return hex.EncodeToString(h.Sum(nil))
}
// var (
// RtpMap = map[int]int{
// 97: 11,
// 96: 12,
// 95: 13,
// 93: 14,
// 90: 15,
// 85: 16,
// 80: 17,
// 60: 18,
// 40: 19,
// }
// rtps = []int{97, 96, 95, 93, 90, 85, 80, 60, 40}
// LevelMap = map[int]int{
// 11: 97,
// 12: 96,
// 13: 95,
// 14: 93,
// 15: 90,
// 16: 85,
// 17: 80,
// 18: 60,
// 19: 40,
// }
// )
// func GetLevel(uid int) int {
// rtp := call.GetProviderGameRtp(uid)
// if rtp >= rtps[0] {
// return RtpMap[97]
// } else if rtp <= rtps[len(rtps)-1] {
// return RtpMap[40]
// }
// for i := 1; i < len(rtps); i++ {
// if rtp <= rtps[i-1] && rtp >= rtps[i] {
// return RtpMap[rtps[i]]
// }
// }
// return 15
// }
// func GetRtp(uid int) int {
// rtp := call.GetProviderGameRtp(uid)
// if rtp >= rtps[0] {
// return LevelMap[RtpMap[97]]
// } else if rtp <= rtps[len(rtps)-1] {
// return LevelMap[RtpMap[40]]
// }
// for i := 1; i < len(rtps); i++ {
// if rtp <= rtps[i-1] && rtp >= rtps[i] {
// return LevelMap[RtpMap[rtps[i]]]
// }
// }
// return 90
// }