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.
241 lines
10 KiB
241 lines
10 KiB
|
1 year ago
|
package gs
|
||
|
|
|
||
|
|
import "server/common"
|
||
|
|
|
||
|
|
const (
|
||
|
|
APIRlease = "https://prodmd.9977997.com"
|
||
|
|
APITest = "https://swmd.6633663.com"
|
||
|
|
OperatorCode = "E387"
|
||
|
|
SecretKey = "qqmruv"
|
||
|
|
LaunchGameURL = "/Seamless/LaunchGame"
|
||
|
|
GetGameListURL = "/Seamless/GetGameList"
|
||
|
|
)
|
||
|
|
|
||
|
|
type Agent struct {
|
||
|
|
OperatorCode string
|
||
|
|
SecretKey string
|
||
|
|
Currency common.CurrencyType
|
||
|
|
}
|
||
|
|
|
||
|
|
// 错误码
|
||
|
|
var (
|
||
|
|
CodeOk = 0
|
||
|
|
CodeFailed = 16
|
||
|
|
CodeAPIError = 19
|
||
|
|
CodeInnerError = 999
|
||
|
|
CodeAPIMemberNotExists = 1000
|
||
|
|
CodeAPIMemberInsufficientBalance = 1001
|
||
|
|
CodeAPIIncorrectAgentKey = 1002
|
||
|
|
CodeAPIDuplicateTransaction = 1003
|
||
|
|
CodeAPIInvalidSign = 1004
|
||
|
|
CodeAPINotGetGameList = 1005
|
||
|
|
CodeAPIBetNotExist = 1006
|
||
|
|
CodeAPIProductUnderMainTenance = 2000
|
||
|
|
)
|
||
|
|
|
||
|
|
var (
|
||
|
|
API = ""
|
||
|
|
AgentMap = map[string]*Agent{}
|
||
|
|
GameTypeMap = map[int]int{
|
||
|
|
common.GameTypeSlots: 1,
|
||
|
|
common.GameTypeLive: 2,
|
||
|
|
common.GameTypeESport: 13,
|
||
|
|
common.GameTypeSportBook: 3,
|
||
|
|
}
|
||
|
|
ProductIDMap = map[int]int{
|
||
|
|
common.ProviderPGSoft: 1007,
|
||
|
|
common.ProviderEvolutionGaming: 1002,
|
||
|
|
common.ProviderAllBet: 1003,
|
||
|
|
common.ProviderBigGaming: 1004,
|
||
|
|
common.ProviderSAGaming: 1005,
|
||
|
|
common.ProviderPragmaticPlay: 1006,
|
||
|
|
common.ProviderCQ9: 1009,
|
||
|
|
common.ProviderPlayTech: 1011,
|
||
|
|
common.ProviderJoker: 1013,
|
||
|
|
common.ProviderDragonSoft: 1014,
|
||
|
|
common.ProviderTFGaming: 1017,
|
||
|
|
common.ProviderWMCasino: 1020,
|
||
|
|
common.ProviderKing855: 1038,
|
||
|
|
common.ProviderAMAYA: 1039,
|
||
|
|
common.ProviderHabanero: 1041,
|
||
|
|
common.ProviderIBC: 1046,
|
||
|
|
common.ProviderReevo: 1048,
|
||
|
|
common.ProviderEvoPlay: 1049,
|
||
|
|
common.ProviderPlayStar: 1050,
|
||
|
|
common.ProviderEzugi: 1051,
|
||
|
|
common.ProviderDreamGaming: 1052,
|
||
|
|
common.ProviderNexus4D: 1053,
|
||
|
|
common.ProviderSlotXo: 1075,
|
||
|
|
common.ProviderBTI: 1081,
|
||
|
|
}
|
||
|
|
ProviderIDMap = map[int]int{
|
||
|
|
1007: common.ProviderPGSoft,
|
||
|
|
1002: common.ProviderEvolutionGaming,
|
||
|
|
1003: common.ProviderAllBet,
|
||
|
|
1004: common.ProviderBigGaming,
|
||
|
|
1005: common.ProviderSAGaming,
|
||
|
|
1006: common.ProviderPragmaticPlay,
|
||
|
|
1009: common.ProviderCQ9,
|
||
|
|
1011: common.ProviderPlayTech,
|
||
|
|
1013: common.ProviderJoker,
|
||
|
|
1014: common.ProviderDragonSoft,
|
||
|
|
1017: common.ProviderTFGaming,
|
||
|
|
1020: common.ProviderWMCasino,
|
||
|
|
1038: common.ProviderKing855,
|
||
|
|
1039: common.ProviderAMAYA,
|
||
|
|
1041: common.ProviderHabanero,
|
||
|
|
1046: common.ProviderIBC,
|
||
|
|
1048: common.ProviderReevo,
|
||
|
|
1049: common.ProviderEvoPlay,
|
||
|
|
1050: common.ProviderPlayStar,
|
||
|
|
1051: common.ProviderEzugi,
|
||
|
|
1052: common.ProviderDreamGaming,
|
||
|
|
1053: common.ProviderNexus4D,
|
||
|
|
1075: common.ProviderSlotXo,
|
||
|
|
1081: common.ProviderBTI,
|
||
|
|
}
|
||
|
|
CurrencyIDMap = map[int]common.CurrencyType{
|
||
|
|
2: common.CurrencyUSDT,
|
||
|
|
33: common.CurrencyUSDT,
|
||
|
|
36: common.CurrencyBrazil,
|
||
|
|
}
|
||
|
|
LangMap = map[string]int{
|
||
|
|
"en": 1,
|
||
|
|
"pt": 28,
|
||
|
|
}
|
||
|
|
AgentMapTest = map[string]*Agent{
|
||
|
|
"E386": {
|
||
|
|
OperatorCode: "E386",
|
||
|
|
SecretKey: "56EcfZ",
|
||
|
|
Currency: common.CurrencyBrazil,
|
||
|
|
},
|
||
|
|
"E387": {
|
||
|
|
OperatorCode: "E387",
|
||
|
|
SecretKey: "qqmruv",
|
||
|
|
Currency: common.CurrencyUSDT,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
AgentMapRelease = map[string]*Agent{
|
||
|
|
"E386": {
|
||
|
|
OperatorCode: "E386",
|
||
|
|
SecretKey: "XF8A4Y",
|
||
|
|
Currency: common.CurrencyBrazil,
|
||
|
|
},
|
||
|
|
"E387": {
|
||
|
|
OperatorCode: "E387",
|
||
|
|
SecretKey: "QclvPN",
|
||
|
|
Currency: common.CurrencyUSDT,
|
||
|
|
},
|
||
|
|
}
|
||
|
|
)
|
||
|
|
|
||
|
|
func GetAgentByCode(operatorCode string) *Agent {
|
||
|
|
return AgentMap[operatorCode]
|
||
|
|
}
|
||
|
|
|
||
|
|
func GetAgentByCurrency(ct common.CurrencyType) *Agent {
|
||
|
|
for _, v := range AgentMap {
|
||
|
|
if v.Currency == ct {
|
||
|
|
return v
|
||
|
|
}
|
||
|
|
}
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
|
||
|
|
const (
|
||
|
|
statusPending = iota + 100
|
||
|
|
statusSettle
|
||
|
|
statueVoid
|
||
|
|
)
|
||
|
|
|
||
|
|
type GetBalanceReq struct {
|
||
|
|
MemberName string `json:"MemberName"` // 操作员的玩家唯一标识符 (必填)
|
||
|
|
OperatorCode string `json:"OperatorCode"` // Seamless运算符的唯一标识符
|
||
|
|
ProductID int64 `json:"ProductID"` // Seamless产品的唯一标识符 (非必填)
|
||
|
|
MessageID string `json:"MessageID"` // 当前 API 请求的唯一标识符 (必填)
|
||
|
|
RequestTime string `json:"RequestTime"` // Request DateTime,格式为 yyyMDDHHMMSS (必填)
|
||
|
|
Sign string `json:"Sign"` // 请求的签名
|
||
|
|
}
|
||
|
|
|
||
|
|
type Transaction struct {
|
||
|
|
MemberID int64 `json:"MemberID"` // Seamless玩家的唯一标识符 (必填)
|
||
|
|
OperatorID int64 `json:"OperatorID"` // Seamless运算符的唯一标识符 (必填)
|
||
|
|
ProductID int `json:"ProductID"` // Seamless产品的唯一标识符 (必填)
|
||
|
|
ProviderID int64 `json:"ProviderID"` // Seamless提供程序的唯一标识符 (必填)
|
||
|
|
ProviderLineID int64 `json:"ProviderLineID"` // Seamless对产品线进行配置的唯一标识符 (必填)
|
||
|
|
WagerID int64 `json:"WagerID,omitempty"` // Seamless工资记录的唯一标识符 (可选)
|
||
|
|
CurrencyID int `json:"CurrencyID"` // Seamless货币的唯一标识符 (必填)
|
||
|
|
GameType int `json:"GameType"` // 交易的游戏类型 (必填)
|
||
|
|
GameID string `json:"GameID,omitempty"` // 提供程序游戏代码 (可选)
|
||
|
|
GameRoundID string `json:"GameRoundID,omitempty"` // 提供商游戏回合 ID (可选)
|
||
|
|
ValidBetAmount float64 `json:"ValidBetAmount,omitempty"` // 扣除营业额奖金后的投注金额 (可选)
|
||
|
|
BetAmount float64 `json:"BetAmount,omitempty"` // 整个投注金额,不扣除营业额奖金 (可选)
|
||
|
|
TransactionAmount float64 `json:"TransactionAmount"` // 更改需要对玩家钱包执行的操作的金额 (必填)
|
||
|
|
TransactionID string `json:"TransactionID,omitempty"` // 当前交易的唯一标识符 (可选)
|
||
|
|
PayoutAmount float64 `json:"PayoutAmount,omitempty"` // 玩家的中奖金额 (可选)
|
||
|
|
PayoutDetail string `json:"PayoutDetail,omitempty"` // 提供商发送的有关玩家获胜的详细信息 (可选)
|
||
|
|
BetDetail string `json:"BetDetail,omitempty"` // 有关提供商发送的玩家投注的详细信息 (可选)
|
||
|
|
CommisionAmount float64 `json:"CommisionAmount,omitempty"` // 佣金金额 (可选)
|
||
|
|
JackpotAmount float64 `json:"JackpotAmount,omitempty"` // 头奖金额 (可选)
|
||
|
|
SettlementDate string `json:"SettlementDate,omitempty"` // 最终确定工资记录的日期 (可选)
|
||
|
|
JPBet float64 `json:"JPBet,omitempty"` // 提供商每次投注的累积奖金 (可选)
|
||
|
|
Status int `json:"Status"` // 当前交易的状态 (必填)
|
||
|
|
CreatedOn string `json:"CreatedOn"` // 交易日期 (必填)
|
||
|
|
ModifiedOn string `json:"ModifiedOn"` // 修改交易的日期 (必填)
|
||
|
|
}
|
||
|
|
|
||
|
|
type CommonReq struct {
|
||
|
|
MemberName string `json:"MemberName"` // 操作员的玩家唯一标识符 (必填)
|
||
|
|
OperatorCode string `json:"OperatorCode"` // Seamless运算符的唯一标识符
|
||
|
|
ProductID int64 `json:"ProductID"` // Seamless产品的唯一标识符 (必填)
|
||
|
|
MessageID string `json:"MessageID"` // 当前 API 请求的唯一标识符 (必填)
|
||
|
|
RequestTime string `json:"RequestTime"` // Request DateTime,格式为 yyyMDDHHMMSS (必填)
|
||
|
|
Sign string `json:"Sign"` // 请求的签名 (必填)
|
||
|
|
Transactions []Transaction `json:"Transactions"` // 交易对象的清单 (必填)
|
||
|
|
}
|
||
|
|
|
||
|
|
type CommonResp struct {
|
||
|
|
ErrorCode int `json:"ErrorCode"` // 响应的状态代码 (必填)
|
||
|
|
ErrorMessage string `json:"ErrorMessage"` // 响应消息 (必填)
|
||
|
|
Balance float64 `json:"Balance"` // 最终信用余额 (必填,4位小数)
|
||
|
|
BeforeBalance float64 `json:"BeforeBalance"` // 以前的信用余额 (必填,4位小数)
|
||
|
|
}
|
||
|
|
|
||
|
|
type CommonResp2 struct {
|
||
|
|
ErrorCode int `json:"ErrorCode"` // 响应的状态代码 (必填)
|
||
|
|
ErrorMessage string `json:"ErrorMessage"` // 响应消息 (必填)
|
||
|
|
Balance float64 `json:"Balance"` // 最终信用余额 (必填,4位小数)
|
||
|
|
}
|
||
|
|
|
||
|
|
type MobileLoginReq struct {
|
||
|
|
MemberName string `json:"MemberName"` // 操作员的玩家唯一标识符 (必填)
|
||
|
|
OperatorCode string `json:"OperatorCode"` // Seamless运算符的唯一标识符
|
||
|
|
ProductID int64 `json:"ProductID"` // Seamless产品的唯一标识符 (必填)
|
||
|
|
MessageID string `json:"MessageID"` // 当前 API 请求的唯一标识符 (必填)
|
||
|
|
RequestTime string `json:"RequestTime"` // Request DateTime,格式为 yyyMDDHHMMSS (必填)
|
||
|
|
Sign string `json:"Sign"` // 请求的签名 (必填)
|
||
|
|
Password string `json:"Password"` // 操作员中的玩家密码
|
||
|
|
}
|
||
|
|
|
||
|
|
type BuyInReq struct {
|
||
|
|
MemberName string `json:"MemberName"` // 操作员的玩家唯一标识符 (必填)
|
||
|
|
OperatorCode string `json:"OperatorCode"` // Seamless运算符的唯一标识符
|
||
|
|
ProductID int64 `json:"ProductID"` // Seamless产品的唯一标识符 (必填)
|
||
|
|
MessageID string `json:"MessageID"` // 当前 API 请求的唯一标识符 (必填)
|
||
|
|
RequestTime string `json:"RequestTime"` // Request DateTime,格式为 yyyMDDHHMMSS (必填)
|
||
|
|
Sign string `json:"Sign"` // 请求的签名 (必填)
|
||
|
|
Transaction Transaction `json:"Transaction"` // 单一交易对象
|
||
|
|
CheckLimit bool `json:"CheckLimit"` // 查看买入限制
|
||
|
|
}
|
||
|
|
|
||
|
|
type BuyOutReq struct {
|
||
|
|
MemberName string `json:"MemberName"` // 操作员的玩家唯一标识符 (必填)
|
||
|
|
OperatorCode string `json:"OperatorCode"` // Seamless运算符的唯一标识符
|
||
|
|
ProductID int64 `json:"ProductID"` // Seamless产品的唯一标识符 (必填)
|
||
|
|
MessageID string `json:"MessageID"` // 当前 API 请求的唯一标识符 (必填)
|
||
|
|
RequestTime string `json:"RequestTime"` // Request DateTime,格式为 yyyMDDHHMMSS (必填)
|
||
|
|
Sign string `json:"Sign"` // 请求的签名 (必填)
|
||
|
|
Transaction Transaction `json:"Transaction"` // 单一交易对象
|
||
|
|
IsAddWager bool `json:"IsAddWager"` // 用于检查在买断期间是否添加了工资记录的标识符
|
||
|
|
}
|