Signature Implementation Example
Signature Generation Example Using PHP
PHP
<?php
namespace Utils;
class SignUtils {
public static function SignMsgEncode($secret, $message) {
$hmac = hash_hmac('sha256', $message, $secret);
return $hmac;
}
public static function LoopQueryParams($queryParams) {
unset($queryParams['sign']);
unset($queryParams['mid']);
unset($queryParams['ts']);
ksort($queryParams);
return json_encode($queryParams);
}
public static function AppendSignParams($params, $mid, $ts) {
$signPrams = json_encode(["mid" => $mid, "ts" => $ts]);
$signMsg = $params . $signPrams;
return $signMsg;
}
}
// Usage
$secret = "r5VTsXcAC6IfwwqbAVYdu9dtmdApRj3f";
$GET["ts"] = "1693798918";
$GET["mid"] = "10001";
// POST EXAMPLE
// curl --request POST \
// --url 'http://192.168.4.251:10001/game/start?mid=10001&ts=1693798918&sign=014d93d8c01ff3989f8c71fa22c6d32a7cf1f94918b3d65e3bbfb5413a64cf4e' \
// --header 'content-type: application/json' \
// --data '{"user_id":"64d9c2c9e339629378e5bd52","game_id":7,"currency":"MXN","lang":"en"}'
$postBody = '{"user_id":"64d9c2c9e339629378e5bd52","game_id":7,"currency":"MXN","lang":"en"}';
$message = SignUtils::AppendSignParams($postBody, $GET["mid"], $GET["ts"]);
echo "POST Before Encrypt: " . $message . PHP_EOL;
$encodedMessage = SignUtils::SignMsgEncode($secret, $message);
echo "POST Sign: " . $encodedMessage . PHP_EOL;
// GET EXAMPLE
// curl --request GET \
// --url 'http://192.168.4.251:10001/game/list?mid=10001&ts=1693798918&sign=014d93d8c01ff3989f8c71fa22c6d32a7cf1f94918b3d65e3bbfb5413a64cf4e&page=1'
$queryString["page"] = "1";
$message = SignUtils::AppendSignParams(SignUtils::LoopQueryParams($queryString), $GET["mid"], $GET["ts"]);
echo "GET Before Encrypt: " . $message . PHP_EOL;
$encodedMessage = SignUtils::SignMsgEncode($secret, $message);
echo "GET Sign: " . $encodedMessage . PHP_EOL;