Combo Game
后端对接

获取用户信息回调

用户进入游戏以及刷新用户钱包余额时调用

请求格式

请求方式: POST

编码格式: Content-Type: application/json;charset=UTF-8

参数类型说明
appIdint商户 App ID
gameIdintCombo Game 游戏 ID
userIdstring用户 ID
tokenstringApp 加载游戏时携带的商户提供的用户鉴权 token
tslong当前时间戳毫秒
signstringMD5 小写字符串
示例商户回调请求数据
{
  "gameId": 1001,
  "userId": "1234556",
  "token": "xxxx",
  "ts": 1750151429551,
  "sign": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}

签名算法

sign = MD5(appId + gameId + token + ts + userId + appKey)

示例代码

public static String sign(int appId, int gameId, String token, long ts, String userId, String appKey) {
    try {
        MessageDigest digest = MessageDigest.getInstance("MD5");
        String sourceString = String.format(Locale.CHINA, "%d%d%s%d%s%s", appId, gameId, token, ts, userId, appKey);
        return bytesToHex(digest.digest(sourceString.getBytes(StandardCharsets.UTF_8)));
    } catch (Exception e) {
        System.out.println("加密失败");
    }
    return null;
}

private static final byte[] HEX_ARRAY = "0123456789abcdef".getBytes(StandardCharsets.US_ASCII);

public static String bytesToHex(byte[] bytes) {
    byte[] hexChars = new byte[bytes.length * 2];
    for (int j = 0; j < bytes.length; j++) {
        int v = bytes[j] & 0xFF;
        hexChars[j * 2] = HEX_ARRAY[v >>> 4];
        hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
    }
    return new String(hexChars, StandardCharsets.UTF_8);
}
h := md5.New()
h.Write([]byte(fmt.Sprintf("%d%d%s%d%s%s", appId, gameId, token, ts, userId, appKey)))
sign := hex.EncodeToString(h.Sum(nil))

返回格式

编码格式: Content-Type: application/json;charset=UTF-8

字段类型说明
codeint错误码,详见错误码页
msgstring错误信息,若无错误可以传空字符串或者 OK
dataobject数据体
data.userIdstring用户 ID
data.nicknamestring用户昵称
data.avatarstring用户头像 URL
data.balancelong用户钱包余额
示例商户回调返回数据
{
  "code": 0,
  "msg": "OK",
  "data": {
    "userId": "123456",
    "nickname": "xxx",
    "avatar": "xxx",
    "balance": 88888888
  }
}