礼包码服务

全局说明

  • 礼包码产品使用手册
  • 仅面向“内部版”企业开放。
  • 签名使用的秘钥见 星云开放平台->对接中心->SDK对接,参数App Secret
  • post传参格式使用Content-Type: application/json

一、时序图

二、业务流程图

三、接口地址

  • 国内:https://api-activity.feiyu.com
  • 海外:https://api-activity.feiyuglobal.com

四、签名规则

  1. MD5步骤说明

    1. 待签名参数:除去sign,其他参数(包含空值的参数)都要参加验签。
    2. 对所有待签名参数按照字段名的ASCII码从小到大排序。
    3. 使用键值对的格式(key1=value1&key2=value2)拼接成字符串,并进行urlencode编码(PHP使用rawurlencode),获得$source字符串。如果遇到多层级的参数,需要转json进行加签。
    4. 将步骤3的$source字符与秘钥通过&符号进行拼接:$source&$app_secret
    5. 将步骤4的字符串进行md5哈希签名,得到最终sign值。
  2. 签名样例(PHP版本)

    ksort($data); // 1 按照键值从小到大排序
    $query_string = array(); // 2 键值对按照'='拼接,排除sign参数
    foreach ($data as $key => $val) {
       if ($key == 'sign') continue;
       array_push($query_string, $key . '=' . $val);
    }
    $query_string = join('&', $query_string); // 3 将上述数组按照'&'拼接
    $source = rawurlencode($query_string); // 4 将拼接结果进行URL编码
    $sign = md5($source . '&' . $app_secret); // 对步骤4的字符串进行MD5哈希签名得到最终的sign值

五、兑换礼包码接口 (游戏服务端主动调用)

  1. 描述:对应时序图流程2,用于游戏服务端主动调用礼包码服务。

    • 在不提供角色邮件发送接口的流程中,游戏服务端应根据该接口返回道具列表下发道具。
    • 在提供角色邮件发送接口的流程中,不需要下发道具,礼包码服务会通过邮件发送接口触发道具下发。
  2. 请求方式:POST

    • 接口地址:/v1/cdKey/exchangeKey
  3. 请求参数:

    {
    "app_id": "xxx",
    "pid": "aaaaaa",
    "channel_id": "xxx",
    "open_id": "221121",
    "cdkey": "uioakakaka",
    "p_info": {
        "level": 60,
        "create_time": 1697151891
    },
    "device_id": "yyyy",
    "timestamp": 1535198961,
    "sign": "0bebc8ef5313b9f9b73194e138a6ee50",
    "sign_type": "md5",
    "sign_nonce": "0bebc8qq",
    "sign_version": "1.0"
    }
参数名 类型 注释 是否必传
app_id string 游戏ID
pid string 角色ID
channel_id string 渠道ID
open_id string 用户OpenID
cdkey string 礼包码
p_info json 角色信息
p_info.level int 等级
p_info.create_time int 角色创建时间
device_id string 设备ID
timestamp int 时间戳
sign string 签名
sign_type string 签名类型(默认:md5)
sign_nonce string 签名随机数(随机数字+字符串共8位)
sign_version string 签名版本,默认1.0
  1. 请求成功返回:

    {
    "trace_id": "d77f7de9bb5dd754b726d2a99c9f4375",
    "status": 0,
    "message": "OK",
    "data": {
        "pid": "aaaaaa",
        "open_id": "221121",
        "cdkey": "uioakakaka",
        "prop_list": [
            {
                "id": "xx",
                "num": 10
            },
  2. 错误码:

    status对应的错误码
    400 参数错误
    50X 服务器内部错误
    0 兑换成功
    40002 礼包码已被使用
    40003 礼包码无效(含未生效、已过期、已废弃的情况)
    40004 角色已兑换过同批次专码
    40005 角色已兑换过此通码
    40006 角色不符合兑换条件(含可用渠道、可兑换角色等级、可兑换角色创建时间的限制)
    40007 通码达到可兑换次数上限
    40008 兑换失败(以上情况均无法命中的兜底文案)
    40009 兑换次数过多,请明日再试

六、道具下发结果回调接口(游戏服务端主动调用)

  1. 描述:该接口用于礼包码下发结果回调通知礼包码服务。对应时序图流程6(左图)、7(右图)。

  2. 请求方式:POST

    • 接口地址:/v1/cdKey/notifyExchange
  3. 请求参数:

    {
    "app_id": "xxx",
    "pid": "aaaaaa",
    "open_id": "221121",
    "exchange_id": 123,
    "status": 1,
    "prop_list": [
        {
            "id": "xx",
            "num": 10
        },
        {
            "id": "yy",
            "num": 1
        }
    ],
    "device_id": "yyyy",
    "timestamp": 1535198961,
    "sign": "0bebc8ef5313b9f9b73194e138a6ee50",
    "sign_type": "md5",
    "sign_nonce": "0bebc8qq",
    "sign_version": "1.0"
    }
    参数名 类型 注释 是否必传
    app_id string 游戏ID
    pid string 角色ID
    open_id string 用户OpenID
    exchange_id int 兑换ID(发送角色邮件接口传入游戏服务端)
    status int 下发结果 1成功 2失败
    prop_list array 道具列表
    prop_list.id string 道具ID
    prop_list.num int 道具数量
    device_id string 设备ID
    timestamp int 时间戳
    sign string 签名
    sign_type string 签名类型(默认:md5)
    sign_nonce string 签名随机数(随机数字+字符串共8位)
    sign_version string 签名版本,默认1.0
  4. 请求成功返回:

    {
    "trace_id": "d77f7de9bb5dd754b726d2a99c9f4375",
    "status": 0,
    "message": "OK",
    "data": {}
    }
    参数名 类型 注释 是否必传
    status int 状态码