您尚未登录

登录

推荐您使用PC浏览器访问

确定
  • 开发者中心
  • >
  • 云游戏
  • >
  • OpenAPI文档
  • >
  • PCU信息管理



海马云PCU信息管理 API文档V3.9

签名算法说明

签名生成步骤:

1) 调用方使用如下格式拼接:key:%s,rand:%s,timestamp:%d,expiryInterval:%d,记做tokenRaw。

2) 调用方将tokenRaw使用md5生成32位摘要信息,记做token。

3) 调用方将payload描述的内容经过encode编码,传入encoded字段。
注意:请求方并不真实地通过payload传数据,payload由海马云经过base64解码后还原。

4) 调用方按照下面的格式拼接数据:accessKeyId:%s,encoded:%s,token:%s,记做signRaw。

5) 调用方将signRaw使用md5生成32位摘要信息,记做sign。

6) 海马在验签通过后,会将encode数据经过base64解码后还原到payload字段中。

details结构说明

名称 类型 是否必填 参数说明
key String Required 使用提供给接入商的apiToken
rand String Required 调用方随机生成的字符串,32位
timestamp Long Required 请求时间戳,当时间戳与服务端时间戳偏移大时会导致校验失败,单位毫秒
expiryInterval Long Required token有效期,设空则默认采用云平台配置的有效期,如云平台未配置有效期则永不过期。单位秒。 * 建议定义为180秒以上,避免服务器时间差导致验签失败。

签名示例:

#!/usr/bin/python3
# -*- coding: utf-8 -*-
import base64
import hashlib
import json
import time
t = time.time()
timestamp = (int(round(t * 1000))) # 毫秒级时间

def generate_sign(accessKeyId, apiToken, payload, expiry_interval=1000000):
    m = hashlib.md5()
    original_token_str = 'key:%s,rand:%s,timestamp:%d,expiryInterval:%d' % (apiToken, '1', timestamp, expiry_interval)
    m.update(original_token_str.encode('utf-8'))
    str_md5 = m.hexdigest()

    str_payload = json.dumps(payload, separators=(',', ":"))
    base64_payload = base64.encodebytes(str_payload.rstrip('\n').encode())
    decode = base64_payload.decode('utf-8')

    original_sign_str = 'accessKeyId:%s,encoded:%s,token:%s' % (accessKeyId, decode, str_md5)
    n = hashlib.md5()
    n.update(original_sign_str.encode('utf-8'))
    return n.hexdigest()

PCU信息管理API

PCU状态信息查询接口

接入商调用本接口,获取海马云游戏服务相关PCU信息

Request Information

URL 请联系海马云售前经理
Method POST
Content-Type application/json
Accept application/json

Parameters(payload参数示例)

{
  "conditions": {
    "pkgName": "com.tencent.tmgp.sgame",
    "appChannel": "test"
  }
}

Parameters

名称 类型 是否必填 参数说明
accessKeyId String Required 合作方 accessKeyId 由海马云提供的接入商唯一标识
encoded String Required payload参数BASE64编码后的字符串
expiryInterval Long Required token有效期。如空则默认采用云平台配置的有效期,如云平台未配置有效期则永不过期。单位秒
rand String Required 调用方随机生成的字符串
sign String Required 参考签名算法说明
timestamp Long Required 请求时间戳,当时间戳与服务端时间戳偏移大时会导致校验失败,单位毫秒
payload Object Required 见PcuInfoRequest结构说明

PcuInfoRequest结构说明

名称 类型 是否必填 参数说明
conditions Map<String,Object> Optional 查询条件,见conditions结构说明

conditions结构说明

名称 类型 是否必填 参数说明
pkgName String Optional 需要查询的包名,示例:”com.tencent.tmgp.sgame”
appChannel String Optional 需要查询的渠道名称,示例:1001

Response Information

Sample Response

a、无查询条件:
{
    "code": 0,
    "details": {
        "date": "2020-11-05 10:54:42",
        "hsnTotal": 77,
        "inServiceNum": 10
    }
}

b、查询appChannel
{
    "code": 0,
    "details": {
        "channelDetails": [
        {
            "appChannel": "100_ad_1",
            "gameDetails": [
            {
                "inServiceNum": 2,
                "name": "贪吃蛇大作战®",
                "pkgName": "com.wepie.snake.game_demo"
            },
            {
                "inServiceNum": 3,
                "name": "开心消消乐®",
                "pkgName": "com.happyelements.AndroidAnimal"
            }
            ]
        }
        ],
        "date": "2020-11-05 10:54:42",
        "hsnTotal": 77,
        "inServiceNum": 10
    }
}

c、查询pkgName
{
    "code": 0,
    "details": {
        "channelDetails": [
        {
            "appChannel": "100_ad_1",
            "gameDetails": [
            {
                "inServiceNum": 2,
                "name": "贪吃蛇大作战®",
                "pkgName": "com.wepie.snake.game_demo"
            }
            ]
        },
        {
            "appChannel": "100_ad_2",
            "gameDetails": [
            {
                "inServiceNum": 2,
                "name": "贪吃蛇大作战®",
                "pkgName": "com.wepie.snake.game_demo"
            }
            ]
        }
        ],
        "date": "2020-11-05 10:54:42",
        "hsnTotal": 77,
        "inServiceNum": 10
    }
}

d、查询pkgName+appChannel
{
    "code": 0,
    "details": {
        "channelDetails": [
        {
            "appChannel": "100_ad_1",
            "gameDetails": [
            {
                "inServiceNum": 2,
                "name": "贪吃蛇大作战®",
                "pkgName": "com.wepie.snake.game_demo"
            }
            ]
        }
        ],
        "date": "2020-11-05 10:54:42",
        "hsnTotal": 77,
        "inServiceNum": 10
    }
}

Parameters

名称 类型 是否必填 参数说明
code Integer Required 请求处理结果,0:请求成功,1:请求失败
errorCode String Optional 具体错误码
errorMsg String Optional 错误信息
details Object Optional 返回报文详情,当请求失败时为空;

details结构说明

名称 类型 是否必填 参数说明
date String Required 数据生成时间,精确到秒,示例:2020-03-10 18:36:30
hsnTotal Integer Required 日使用限额总数 具体描述:见名词解释HSN,示例:200
inServiceNum Integer Required 当前accessKeyId下服务状态实例总数 具体描述:当前accessKeyId下,正在进行游玩的用户总数,示例:100
channelDetails List<Object> Optional 渠道维度详情数据列表,见channelDetails结构说明

channelDetails结构说明

名称 类型 是否必填 参数说明
appChannel String Required 渠道名称,示例:1001
gameDetails List<Object> Required 各游戏维度详情数据列表

gameDetails结构说明

名称 类型 是否必填 参数说明
name String Required 游戏名称(查询不到则显示包名),示例:王者荣耀
pkgName String Required 游戏包名,示例:com.tencent.tmgp.sgame
inServiceNum Integer Required 当前游戏服务状态实例总数 具体描述:当前accessKeyId、game维度下,正在进行游玩的用户总数,示例:70

错误码

错误码 描述
401000000 PCU-系统错误
401000001 PCU-请求参数非法
401001001 PCU-通用错误码-请求参数签约验证失败
401001002 PCU-通用错误码-请求参数验证失败
401001003 PCU-通用错误码-请求参数不能为空
401001004 PCU-通用错误码-请求参数集合不能为空
401001005 PCU-通用错误码-请求参数最小值验证失败
401001006 PCU-通用错误码-accessKeyId不存在
×

本篇文章对你是否有帮助?

更多建议

请输入您的建议