Only for real money.
Before starting the game, your server should make a foreground request to obtain the link. Then, redirect the player to the link received in the response.
package main
import (
"crypto/md5"
"encoding/hex"
"fmt"
"io/ioutil"
"net/http"
"net/url"
"sort"
"strings"
"time"
)
func main() {
// Method and API endpoint
method := "games.link"
// Use your entry domain, that you currently use for games.start
apiEndpoint := "<https://use-your-entry-domain/>" + method
// Partner information
partnerAlias := "test"
secretKey := "testsecret"
// Request parameters
params := map[string]string{
"partner.alias": partnerAlias,
"partner.session": "ed7a371f-ee3c-40bd-9c7d-8cb77f2031c7",
"id_player": "891283294",
"id_group": "default",
"balance": "1",
"currency": "EUR",
"game.provider": "pragmatic",
"game.alias": "vs1024lionsd",
"lang": "en",
"lobby_url": "<https://google.com>",
"client_ip": "127.0.0.1",
"mobile": "auto",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36",
"timestamp_millis": fmt.Sprintf("%d", time.Now().UnixMilli()),
//"force_region": "EU" - OPTIONAL, if you need to foce select cluster region
}
// Generate signature
sign := generateSign(params, method, partnerAlias, secretKey)
params["signature"] = sign
// Create query string
values := url.Values{}
for key, value := range params {
values.Add(key, value)
}
// Create request URL with query parameters
requestURL := apiEndpoint + "?" + values.Encode()
// Create HTTP client and request
client := &http.Client{}
req, err := http.NewRequest("GET", requestURL, nil)
if err != nil {
fmt.Println("Error creating request:", err)
return
}
// Execute request
resp, err := client.Do(req)
if err != nil {
fmt.Println("Error executing request:", err)
return
}
defer resp.Body.Close()
// Read and print response
body, err := ioutil.ReadAll(resp.Body)
if err != nil {
fmt.Println("Error reading response:", err)
return
}
fmt.Println("Response:")
fmt.Println(string(body))
}
func generateSign(params map[string]string, method, partnerAlias, secretKey string) string {
// Join parameters in required format
var pairs []string
for k, v := range params {
if k != "signature" {
pairs = append(pairs, k+"="+v)
}
}
sort.Strings(pairs)
joined := strings.Join(pairs, "&")
// Create string to sign
stringToSign := joined + "&" + method + "&" + partnerAlias + "&" + secretKey
// Calculate MD5 hash
hash := md5.Sum([]byte(stringToSign))
signature := hex.EncodeToString(hash[:])
fmt.Println("stringToSign: ", stringToSign)
fmt.Println("signature: ", signature)
return signature
}
{
"status": 200,
"cmd": "games.link",
"response": {
"trace": "E-1b22649efd401000",
"link": "<https://pp.mobule.games/games.start?currency=EUR\\u0026game.alias=vs1024lionsd\\u0026game.provider=pragmatic\\u0026lang=en\\u0026lobby_url=https%3A%2F%2Fgoogle.com\\u0026mobile=false\\u0026partner.alias=ddddddd\\u0026partner.session=ed7a371f-ee3c-40bd-9c7d-8cb77f2031c7>"
}
}