github.com/lianghucheng/zrddz@v0.0.0-20200923083010-c71f680932e2/src/game/internal/circle.go (about) 1 package internal 2 3 import ( 4 "common" 5 "encoding/json" 6 "errors" 7 "fmt" 8 "io/ioutil" 9 "net/http" 10 "net/url" 11 "reflect" 12 "strconv" 13 "time" 14 ) 15 16 var ( 17 packetCreate = struct { 18 Urll string 19 Method string 20 }{ 21 Urll: "http://192.168.1.150:7006/server.do", 22 Method: "shenzhouxing.circle.server.packet.create.normal", 23 } 24 25 login = struct { 26 Urll string 27 Method string 28 }{ 29 Urll: "http://192.168.1.150:8002/server.do", 30 Method: "youxibi.user.server.third.create.wechat", 31 } 32 33 sign = struct { 34 SignType string 35 VersionCode string 36 VersionName string 37 Lang string 38 DeviceId string 39 Device string 40 PartnerKey string 41 SecretKey string 42 }{ 43 SignType: "NORMAL", 44 VersionCode: "1", 45 VersionName: "1.0", 46 Lang: "CN", 47 Device: "SERVER", 48 DeviceId: "test", 49 PartnerKey: "youxibi_game_chezhu_ddz", 50 SecretKey: "F957BC19502E301F8FDB8BF192116AFD", 51 } 52 ) 53 54 type CircleRegister struct { 55 UnionId string 56 Nickname string 57 Sex int 58 Language string 59 City string 60 Province string 61 Country string 62 Headimgurl string 63 } 64 65 type CircleCreatePacket struct { 66 UserId int64 67 Sum float32 68 Desc string 69 } 70 71 func serverRequest(v interface{}) ([]byte, error) { 72 now := strconv.FormatInt(time.Now().Unix(), 10) 73 urll, method := "", "" 74 switch v.(type) { 75 case CircleRegister: 76 method = login.Method 77 urll = login.Urll 78 case CircleCreatePacket: 79 method = packetCreate.Method 80 urll = packetCreate.Urll 81 default: 82 return nil, errors.New("invalid type assertion :" + fmt.Sprint(reflect.TypeOf(v))) 83 } 84 params, _ := json.Marshal(v) 85 resp, err := http.PostForm(urll, url.Values{ 86 "params": {string(params)}, 87 "partnerKey": {sign.PartnerKey}, 88 "sendTime": {now}, 89 "sign": {common.MD5Encrypt( 90 "device=" + sign.Device + 91 "&deviceId=" + sign.DeviceId + 92 "&lang=" + sign.Lang + 93 "&method=" + method + 94 "¶ms=" + string(params) + 95 "&partnerKey=" + sign.PartnerKey + 96 "&secretKey=" + sign.SecretKey + 97 "&sendTime=" + now + 98 "&signType=" + sign.SignType + 99 "&versionCode=" + sign.VersionCode + 100 "&versionName=" + sign.VersionName, 101 )}, 102 "signType": {sign.SignType}, 103 "versionCode": {sign.VersionCode}, 104 "versionName": {sign.VersionName}, 105 "lang": {sign.Lang}, 106 "deviceId": {sign.DeviceId}, 107 "device": {sign.Device}, 108 "method": {method}, 109 }) 110 if err != nil { 111 return nil, errors.New(fmt.Sprint(err)) 112 } 113 defer resp.Body.Close() 114 body, err := ioutil.ReadAll(resp.Body) 115 if err != nil { 116 return nil, errors.New(fmt.Sprint(err)) 117 } 118 return body, nil 119 }