# 游戏侧构建code

# 构建步骤

为了在游戏侧构建code,请按照以下步骤操作:

# 1.准备加密内容:

  • 构建一个包含必要信息的JSON对象。这些信息包括:gameOpenId, accType, gameNickName, headImg, area, platId, partition, areaName, platName, partitionName, roleId, roleName
  • 确保所有必须字段都已填写,并且数据的格式正确。

# 2.JSON转为字符串:

使用JSON库将构建好的JSON对象转换为字符串格式。

# 3.加密处理:

  • 使用AES-128-ECB算法对上一步生成的JSON字符串进行加密。
  • 加密完成后,对加密后的二进制数据进行Base64编码,以转换为可见的字符串形式。这是因为部分编程语言在使用AES加密后可能会返回二进制数据,需要通过Base64编码转换为可打印字符。

# 加密规范

参数 类型 是否必填 说明
gameOpenId string 玩家的游戏内OpenID
accType string 玩家账号类型,如"qq"或"wx"(微信)
gameNickName string 玩家在游戏内的昵称
headImg string 玩家的头像URL或标识
area string 玩家所在的游戏大区标识
platId string 是(仅限手游) platId用于标识玩家使用的手机操作系统。具体的配置可能因游戏而异,请参考对应游戏的分区指南。若未特别指定,默认值为"0"。
partition string 是(仅限手游) 玩家所在的游戏小区标识
platName string 手机系统的名称,如"iOS"或"Android"
partitionName string 游戏小区的名称或描述
roleId string 玩家在游戏内的角色ID
roleName string 玩家在游戏内的角色昵称,建议提供

# 示例

各语言调用示例及SDK

参照调用示例

参照SDK

示例代码(Python版本):


def _encrypt(data, password):
    if isinstance(password, str):
        password = password.encode('utf8')

    bs = AES.block_size
    pad = lambda s: s + (bs - len(s) % bs) * chr(bs - len(s) % bs)
    cipher = AES.new(password, AES.MODE_ECB)
    data = cipher.encrypt(pad(data).encode('utf8'))
    
    # 对加密后的数据进行Base64编码  
    encrypt_data = base64.b64encode(data)
    return encrypt_data
    
def _get_game_code(seckey):
    """  
    加密游戏角色信息以生成code。
      
    :param seckey: 由livelink分配的加密密钥  
    :return: 加密后的code字符串  
    """  
    # 示例角色信息
    role_info = {
        "gameOpenId": "example_game_open_id",  
        # ... 其他必要字段 ...  
        "roleName": "ExampleRoleName"  
    }
    # 将角色信息转换为JSON字符串
    json_str = json.dumps(role_info)
    
    # AES加密  
    ecb_data = _encrypt(json_str, seckey)
    return str(ecb_data, 'utf-8')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

注意:请确保已经安装了pycryptodome库,可以通过pip install pycryptodome来安装。此外,密钥seckey应由livelink分配,并且需要保持机密性。在实际应用中,不要硬编码密钥或将其存储在不安全的地方。

lastUpdate: 3/17/2025, 10:17:31 AM