# 钻石
# 1. 全局约定
钻石相关接口为服务端接口,开发者必须通过服务端访问。
# 1.1 基础定义
- app_id: 快手海外小游戏开放平台给开发者分配的 app 标识,如未获得请联系运营注册快手开发者帐号,注册后可从 快手海外小游戏开放平台 查看
- app_secret: 快手海外小游戏开放平台分配给游戏的秘钥,用于加密数据及校验权限,如未获得请联系运营注册快手开发者帐号,注册后可从 快手海外小游戏开放平台 查看。注: app_secret 请妥善保管,不要泄露
- access_token: 快手海外小游戏开放平台 server 端 api 调用凭证
- item_id: 点位id,在调用钻石发放或消耗接口时使用
说明:
- 发放或扣除钻石时,若数量未超过阈值,则可在请求时直接传入钻石数量
- 对于大额的发放或扣除,必须在请求时传入点位ID
- 目前小游戏平台支持的发放和扣除点位如下:
| 点位ID | 钻石数量 |
|---|---|
| 1 | 1 |
| 5 | 5 |
| 10 | 10 |
| 20 | 20 |
| 30 | 30 |
| 40 | 40 |
| 50 | 50 |
| 60 | 60 |
| 70 | 70 |
| 80 | 80 |
| 90 | 90 |
| 100 | 100 |
| 150 | 150 |
| 200 | 200 |
| 250 | 250 |
| 300 | 300 |
| 400 | 400 |
| 500 | 500 |
| 600 | 600 |
| 700 | 700 |
| 800 | 800 |
| 900 | 900 |
| 1000 | 1000 |
| 2000 | 2000 |
| 3000 | 3000 |
| 5000 | 5000 |
# 1.2 服务域名
https://game.kwai.com
# 1.3 请求参数说明
- 对于 GET 请求,请求参数应以 QueryString 的形式写在 URL 中。
- 对于 POST 请求,部分参数需以 QueryString 的形式写在 URL 中(一般只有access_token,如有额外参数会在文档里的 URL 中体现),其它参数如无特殊说明均以 JSON 字符串格式写在 POST 请求的 body 中。
# 1.4 请求参数校验
钻石相关接口的校验包括OAuth2和参数验签。
为通过OAuth2验证,需在请求的URL末尾加上
access_token=获取到的access_token。 access_token 可以通过 获取access_token 接口获取(不参与签名),有效期一般为 1 小时。在access_token有效期内访问 获取access_token 接口将返回原access_token,不会更新access_token。
access_token失效后,使用access_token访问受保护接口会返回401错误(详见 获取access_token 接口的“访问受保护资源”小节),此时应调用获取access_token接口获取新的access_token。
参数签名规则见 签名规则 ,各接口参与签名的参数标记于各接口说明中。
# 2.钻石接口说明
本节所述所有请求都需要将 access_token 以参数名 access_token 拼接到 query url 参数中,以下不再赘述。
# 2.1. 钻石余额查询
# 请求:
- GET /rest/o/game/diamond/balance
- 请求参数:
| 名称 | 类型 | 取值说明 | 是否参与签名 |
|---|---|---|---|
| app_id | string | 从快手海外小游戏开放平台获取的 app_id | 是 |
| open_id | string | 游戏服务器通过 code2Session 接口换的用户唯一标识 | 是 |
| ts | long | 时间戳,单位:毫秒 | 是 |
| sign | 签名 | 参数签名规则见 签名规则 | 否 |
# 响应:
- Content-Type: application/json
- Body内容:
| 名称 | 类型 | 取值说明 |
|---|---|---|
| result | int | 成功 1 |
| data | json | 响应数据data结构 |
- data内容:
| 名称 | 类型 | 取值说明 |
|---|---|---|
| balance | long | 余额 |
# 2.2. 钻石发放
# 请求:
- POST /rest/o/game/diamond/reward
- Content-Type: application/json
- Body参数:
| 名称 | 类型 | 取值说明 | 是否参与签名 |
|---|---|---|---|
| app_id | string | 从快手海外小游戏开放平台获取的 app_id | 是 |
| app_version | string | 小游戏版本号,如:1.0.0 | 是 |
| open_id | string | 游戏服务器通过 code2Session 接口换的用户唯一标识 | 是 |
| item_id | string | 点位id | 是 |
| amount | long | 数量 | 是 |
| biz_no | string | 业务流水号,开发者自己定义,请求成功后原样返回,同一个流水号只能成功请求一次钻石发放 | 是 |
| env | string | 开发者可以通过 ks.getSystemInfoSync().host.env 接口获取,详见 ks.getSystemInfoSync | 是 |
| ts | long | 时间戳,单位:毫秒 | 是 |
| sign | 签名 | 参数签名规则见 签名规则 | 否 |
# 响应
- Content-Type: application/json
- Body内容:
| 名称 | 类型 | 取值说明 |
|---|---|---|
| result | int | 成功 1,其他值见错误码定义 |
| data | json | 响应数据data结构 |
- data内容:
| 名称 | 类型 | 取值说明 |
|---|---|---|
| item_id | string | 请求参数中带的 item_id |
| biz_no | string | 请求参数中带的 biz_no |
| amount | int | 成功发放的钻石数量 |
# 2.3. 钻石消耗
# 请求:
- POST /rest/o/game/diamond/consume
- Content-Type: application/json
- Body参数:
| 名称 | 类型 | 取值说明 | 是否参与签名 |
|---|---|---|---|
| app_id | string | 从快手海外小游戏开放平台获取的 app_id | 是 |
| app_version | string | 小游戏版本号,如:1.0.0 | 是 |
| open_id | string | 游戏服务器通过 code2Session 接口换的用户唯一标识 | 是 |
| item_id | string | 点位id | 是 |
| amount | long | 数量 | 是 |
| biz_no | string | 业务流水号,开发者自己定义,请求成功后原样返回,同一个流水号只能成功请求一次钻石消耗 | 是 |
| env | string | 开发者可以通过 ks.getSystemInfoSync().host.env 接口获取,详见 ks.getSystemInfoSync | 是 |
| ts | long | 时间戳,单位:毫秒 | 是 |
| sign | 签名 | 参数签名规则见 签名规则 | 否 |
# 响应
- Content-Type: application/json
- Body内容:
| 名称 | 类型 | 取值说明 |
|---|---|---|
| result | int | 成功 1,其他值见错误码定义 |
| data | json | 响应数据data结构 |
- data内容:
| 名称 | 类型 | 取值说明 |
|---|---|---|
| item_id | string | 请求参数中带的 item_id |
| biz_no | string | 请求参数中带的 biz_no |
| amount | int | 成功消耗的钻石数量 |
# 3. 错误码定义
# 3.1 access_token相关错误码
access_token校验失败,响应的Http Status为401。详见 access_token接口 “访问受保护资源”小节。
# 3.2 业务相关错误码
Http Status 200
| result | msg | 错误码说明 |
|---|---|---|
| 100003 | 无效请求,请确认后重试 | app_id无效 |
| 100005 | 无效请求,请确认后重试 | biz_no无效,请确认请求是否已设置biz_no参数 |
| 100006 | 无效请求,请确认后重试 | open_id无效,请确认用户已登录并得到openId |
| 100007 | 无效请求,请确认后重试 | env无效 |
| 100020 | 缺少签名参数 | 缺少签名参数 |
| 100021 | 签名信息已失效,请重新签名 | 签名信息已失效,请重新签名 |
| 100022 | 签名错误 | 签名校验未通过 |
| 110302 | 指定点位不存在 | 指定的点位不存在 |
| 110304 | 实时校验未通过 | 实时校验未通过 |
| 110305 | 请不要使用重复的单号 | bizNo已使用过 |
| 100306 | 需指定档位或金额 | 点位ID和数量均未指定 |
| 100307 | 操作频次过高,请稍后重试 | 同一用户发放或扣除频次过高 |
| 100308 | 该点位操作次数已达上限,请尝试其它点位 | 指定点位的发放或扣除次数达到当天的上限 |
| 100309 | 单笔金额超限 | 发放或扣除的单笔金额超过平台限制 |
| 100310 | 用户在游戏中操作金额已达上限 | 此用户在本游戏中发放或扣除的金额超过平台限制 |
| 100311 | 用户在全部游戏中操作金额已达上限 | 此用户在全部游戏中发放或扣除的金额超过平台限制 |
| 100312 | 本游戏中操作金额已达上限 | 本游戏中发放或扣除的金额超过平台限制 |
| 100412 | 调用内部接口失败 | 小游戏平台调用内部接口时失败 |