Skip to content

Commit

Permalink
Merge pull request #1284 from taptap/feat_cn_iap_v4
Browse files Browse the repository at this point in the history
Feat cn iap v4
  • Loading branch information
lc1006 authored Nov 18, 2024
2 parents b6e10f8 + bc1e2ca commit 35a8b4e
Show file tree
Hide file tree
Showing 47 changed files with 1,976 additions and 93 deletions.
12 changes: 6 additions & 6 deletions cn/docs/sdk/anti-addiction/practice.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -14,22 +14,22 @@ import v4SDKVersions from '/src/docComponents/v4SDKVersions';
### 创建应用获取应用参数
[TapTap 开发者中心](https://developer.taptap.cn) 创建游戏应用,获取应用 Client ID、Client Token 等参数,用于初始化 SDK;

![](https://capacity-files.lcfile.com/nnQKxgJJzgErOlIOcxnbIHt8Vc1RmGYe/tap_get_ready.png)
![](https://img.tapimg.com/market/images/e9b046743f9b561b9235505d35ed6e78.png)

### 开通 TapTap 登录服务
合规认证服务依赖于 TapTap 登录服务,因此,厂商需要在 **TapTap 开发者中心 > 你的游戏 > 游戏服务 > 应用配置** 开启「TapTap 登录」;

![](https://img.tapimg.com/market/images/168f902edd3de84cf0d5eb5fa640e78d.png)
![](https://img.tapimg.com/market/images/7cbe4b738646f8e0fd214852e1a61bee.png)

### 配置应用包名和签名信息
Android 签名处填写 MD5 值,详情可参考:[如何获取 MD5 值](/sdk/access/android-md5)

![](https://img.tapimg.com/market/images/3c725fc6859363f630d90471d0c8929b.png)
![](https://img.tapimg.com/market/images/12f339345e6bd04c37ad538a0a7e688d.png)

### 开通合规认证服务
找到 **TapTap 开发者中心 > 你的游戏 > 游戏服务 > 开发与构建 > 合规认证**,根据游戏实际情况,选择「已有版号」或「暂无版号」方案,然后点击**立即开通**
找到 **TapTap 开发者中心 > 你的游戏 > 游戏服务 > 基础服务 > 合规认证**,根据游戏实际情况,选择「已有版号」或「暂无版号」方案,然后点击**立即开通**

![](https://img.tapimg.com/market/images/90e6d759ba528aa7e9ef29077387edbb.png)
![](https://img.tapimg.com/market/images/23eb961832f75c683ca28e3d26b07c88.png)

:::tip
若游戏选择的是「已有版号」方案则还需要完成中宣部实名认证系统的注册以及相应配置,具体的操作请参考 [注册中宣部实名认证系统](/sdk/anti-addiction/features/#已有版号)
Expand All @@ -40,7 +40,7 @@ Android 签名处填写 MD5 值,详情可参考:[如何获取 MD5 值](/sdk/

在后续的代码集成中,也需要处理相关的 `1100` 回调

![](https://img.tapimg.com/market/images/e7fab2ce4099b792bd32390c04e28986.png)
![](https://img.tapimg.com/market/images/29c805cff1074f0b8bf03ba452ad3236.png)

## 代码接入

Expand Down
64 changes: 64 additions & 0 deletions cn/docs/sdk/apk-upload/guide.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,70 @@ Signature = Base64Encode(HMAC-SHA256(Server Secret, SignParts))

</details>

<details>
<summary>Shell 请求示例</summary>

```bash
#!/usr/bin/env bash

# TapTap API 上传 APK 「获取上传请求参数」接口请求示例 Shell 脚本
# 测试该脚本时需要开发者根据自己的应用参数替换如下四个参数:app_id、client_id、server_secret、file_name

# app_id:游戏在 TapTap 商店的唯一身份标识。 例如:https://www.taptap.cn/app/187168,其中 187168 是 app_id。
app_id="填写应用的 App ID"

# TapTap 开放平台提供的 Client ID,应用的客户端标识
client_id="填写应用的 Client ID"

# TapTap 开放平台的 Server Secret,服务端对服务端的调用凭证,用来生成签名的密钥(请勿泄露)
server_secret="填写应用的 Server Secret"

# 要上传的 APK 文件名,必须以 .apk 为扩展名,且只允许包含字母、数字、下划线和中横线
file_name="要上传的 APK 文件名,必须以 .apk 为扩展名"

# 生成 8 位随机字符串作为请求中的 nonce,用于防止请求重放
nonce=$(openssl rand -hex 4)

# 当前时间的秒级 Unix 时间戳,用于生成签名
ts=$(date +%s)

# 构造待签名的请求内容
# 请求方法
method="GET"

# 完整请求路径及其 QueryString 参数,用于访问 API 上传参数
url_path_and_query="/apk/v1/upload-params?app_id=${app_id}&file_name=${file_name}&client_id=${client_id}"

# 请求头信息,包含随机数 nonce 和时间戳 ts
headers=$(printf "%s\n%s" "x-tap-nonce:${nonce}" "x-tap-ts:${ts}")

# GET 请求不携带 Body,因此 Body 内容为空
body=""

# 输出待签名的请求内容(请求方法、路径、头信息、Body)用于调试
printf "%s\n%s\n%s\n%s\n" "${method}" "${url_path_and_query}" "${headers}" "${body}"

# 使用 HMAC-SHA256 算法对请求进行签名,并使用 Base64 编码
# 签名生成的步骤:使用请求方法、请求路径、请求头信息和 Body,通过密钥加密生成签名
sign=$(printf "%s\n%s\n%s\n%s\n" "${method}" "${url_path_and_query}" "${headers}" "${body}" | openssl dgst -binary -sha256 -hmac "${server_secret}" | base64)

# 输出生成的签名值用于调试
echo "生成的签名: $sign"

# 构造完整的请求 URL,包括路径和查询参数
Request_Url="https://cloud.tapapis.cn${url_path_and_query}"

# 使用 curl 发起 GET 请求,传递时间戳 ts、nonce 和签名 sign 作为请求头
curl -X GET \
-H "X-Tap-Ts: ${ts}" \
-H "X-Tap-Nonce: ${nonce}" \
-H "X-Tap-Sign: ${sign}" \
"${Request_Url}"
```

</details>


### 响应数据

| 字段名 | 描述 | 类型 |
Expand Down
3 changes: 2 additions & 1 deletion cn/docs/sdk/copyright-verification/features.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,5 @@ TapTap 的正版验证服务适用于买断制游戏,用于检测用户开始

当您的游戏需开放新章节、新主线等付费的 DLC 内容时,您同样可使用 DLC 正版验证服务完成用户的解锁资格验证。

在使用 DLC 正版验证服务前,请确保您的游戏存在一个用户可见的游戏详情页(可预约、可关注均可),并前往开发者中心 > 商店 > 游戏售卖创建 DLC 并提交审核。完成审核后, 请前往 [开发指南](/sdk/copyright-verification/guide/) 完成开发接入。
在使用 DLC 正版验证服务前,请确保您的游戏存在一个用户可见的游戏详情页(可预约、可关注均可),并确认您上传的游戏 APK 包体已通过审核。
确认无误后,请前往开发者中心 > 商店 > 游戏售卖,创建 DLC 并提交审核。完成审核后, 请参考 [开发指南](/sdk/copyright-verification/guide/) 完成开发接入。
61 changes: 54 additions & 7 deletions cn/docs/sdk/start/agreement.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,8 @@
title: TapSDK 隐私政策
sidebar_position: 8
---

更新日期:2024 年 9 月 30 日
生效日期:2024 年 9 月 30 日
更新日期:2024 年 11 月 15 日
生效日期:2024 年 11 月 15 日

易玩(上海)网络科技有限公司(以下简称“TapTap”或“我们”)通过 TapSDK 向开发者提供多种服务,开发者可以根据自身需求在其应用中接入其中任意一项或多项服务。本文档将向开发者和其用户(以下或称“玩家”)说明 TapSDK 的隐私安全信息,包括 TapSDK 各项服务处理的个人信息范围、处理目的、权限使用情况等。

Expand Down Expand Up @@ -381,7 +380,7 @@ sidebar_position: 8
<tr>
<th>个人信息/权限类型</th>
<th>个人信息/权限名称</th>
<th>使用目的</th>
<th>使用目的</th>
</tr >
<tr >
<td rowspan="7">必要个人信息/权限</td>
Expand Down Expand Up @@ -425,7 +424,7 @@ sidebar_position: 8
<tr>
<th>个人信息/权限类型</th>
<th>个人信息/权限名称</th>
<th>使用目的</th>
<th>使用目的</th>
</tr >
<tr >
<td rowspan="7">必要个人信息/权限</td>
Expand Down Expand Up @@ -460,6 +459,48 @@ sidebar_position: 8



**1.2.10 TapTap IAP**

1)功能介绍:提供 TapTap IAP(In App Purchase)能力,玩家可以通过 TapTap IAP 快速购买所需要的游戏道具,最终会通过微信支付、支付宝支付等方式完成支付。

2)收集信息/获取权限
<table>
<tr>
<th>个人信息/权限类型</th>
<th>个人信息/权限名称</th>
<th>使用目的</th>
</tr >
<tr >
<td rowspan="7">必要个人信息/权限</td>
<td>系统版本</td>
<td rowspan="7">为了确保设备系统兼容、定位解决问题</td>
</tr>
<tr>
<td>设备型号</td>
</tr>
<tr>
<td>设备 CPU 信息</td>
</tr>
<tr>
<td>网络类型</td>
</tr>
<tr>
<td>AndroidID</td>
</tr>
<tr>
<td>设备内存信息</td>
</tr>
<tr>
<td>手机样式</td>
</tr>
<tr>
<td>可选个人信息/权限</td>
<td>无</td>
<td>/</td>
</tr>
</table>



1.3 我们仅为实现 TapSDK 产品和/或服务功能,对所收集的用户个人信息进行处理。若需要将收集的个人信息用于其他目的,我们会以合理方式告知用户,并在获得用户的同意后进行使用。

Expand Down Expand Up @@ -503,7 +544,7 @@ sidebar_position: 8

3.2 转让

通常情况下,除非获得用户的明确同意,我们不会将用户的个人信息转让给任何公司、组织和个人,但以下情况除外:
通常情况下,除非获得用户的明确同意,我们不会将用户的个人信息转让给任何公司、组织和个人,但以下情况除外:
在涉及合并、收购、资产转让或类似的交易时,如涉及到个人信息转让,我们会要求新的持有用户个人信息的公司、组织以不低于本隐私政策所要求的标准继续保护用户的个人信息,否则,我们将要求该公司、组织重新向用户征求授权同意。

3.3 披露
Expand Down Expand Up @@ -602,4 +643,10 @@ TapSDK 个人信息保护负责人邮箱:`[email protected]`

我们将在 15 天内予以回复。

<small>本页面内容具有多种语言版本,若其他语言版本与简体中文版本发生冲突,应以简体中文版本为准。</small>
<small>本页面内容具有多种语言版本,若其他语言版本与简体中文版本发生冲突,应以简体中文版本为准。</small>






44 changes: 44 additions & 0 deletions cn/docs/sdk/start/compliance.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -406,6 +406,50 @@ public void onRequestPermissionsResult(int requestCode, String[] permissions, in


### 10. TapTap IAP

- 功能介绍

提供 TapTap IAP(In App Purchase) 能力,玩家可以通过 TapTap IAP 快速购买所需要的游戏道具,最终会通过微信支付、支付宝支付等方式完成支付。

- 合规调用时机

玩家触发游戏内道具购买时进行初始化和调用。

- 需要权限

| 权限 | 使用目的 | 权限申请时机 |
| ---------------------- | ---------------------- | ---------------------- |
| 网络权限 | 用于访问网络数据 | 用户首次使用该功能时会申请权限 |
| 获取网络状态 | 用于检测当前网络连接是否有效 | 用户首次使用该功能时会申请权限 |

- 关闭功能的配置方式

若要关闭,可在app目录build.gradle中移除对该功能的依赖(详见[文档](https://developer.taptap.cn/docs/sdk/update/guide/#tapsdk-%E5%88%9D%E5%A7%8B%E5%8C%96)),示例如下:

```
// implementation("com.taptap.android.payment:iap:latest")
// implementation("com.taptap.android.payment:base:latest")
// implementation("com.taptap.android.payment:alipaycn:latest")
// implementation("com.taptap.android.payment:wechat:latest")
```

- 必要个人信息

| 必要个人信息 | 使用目的 | 场景 | 收集频次 |
| ------ | ------ | ------ | ------ |
| 系统版本 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
| 设备型号 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
| 设备 CPU 信息 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
| 网络类型 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
| Android ID | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 初始化及用户发起授权时获取一次 |
| 设备内存信息 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
| 手机样式 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |

- 可选个人信息



## **四、向最终用户披露 TapSDK 条款**

Expand Down
2 changes: 2 additions & 0 deletions cn/docs/sdk/start/overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@ TDS 提供以下技术服务,开发者可以通过在游戏中集成 TapSDK

- **APK 加固**:避免游戏包体被破解篡改,保障游戏安全。

- **内购服务**:TapTap 游戏内购服务为开发者提供了便捷高效的解决方案。接入该服务后,开发者可轻松开放游戏内购,无论是消耗型道具还是非消耗型道具,都能方便地上架售卖。同时,订单查看功能,让开发者对销售情况一目了然。

</Conditional>

使用对应的服务请先完成<Conditional region="cn">[开发者注册](https://developer.taptap.cn/)</Conditional><Conditional region="global">[开发者注册](https://developer.taptap.io/)</Conditional>,之后登录开发者中心开启「游戏服务」。
26 changes: 6 additions & 20 deletions cn/docs/sdk/tap-adn/tds-tapad.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,6 @@ dependencies {
implementation "com.android.support:support-v4:28.0.0"
implementation "com.github.bumptech.glide:glide:4.9.0"
implementation 'com.android.support:recyclerview-v7:28.0.0'

// 如果引入了 oaid sdk 则不需要引入下述依赖
// 需要新增 maven 'https://developer.huawei.com/repo'
// implementation 'com.huawei.hms:ads-identifier:3.4.62.300'

// 如果引入了 oaid sdk 则不需要引入下述依赖
// 需要新增 maven 'https://developer.hihonor.com/repo'
// implementation 'com.hihonor.mcs:ads-identifier:1.0.3.300'
// 加入的依赖库-结束
// highlight-end
// 下面这行是 Unity 的 mainTemplate.gradle 自带的,帮助定位插入位置
Expand All @@ -119,8 +111,8 @@ dependencies {
:::tip
**TapADN SDK 3.16.3.10 版本开始更新了 glide 的依赖,glide 版本从 4.0.0 更新到了 4.9.0。**
:::
```groovy
repositories{
<CodeBlock className="groovy">
{`repositories{
flatDir{
dirs 'src/main/libs'
}
Expand All @@ -136,17 +128,9 @@ dependencies {
implementation "com.android.support:support-v4:28.0.0"
implementation "com.github.bumptech.glide:glide:4.9.0"
implementation 'com.android.support:recyclerview-v7:28.0.0'

// 如果引入了 oaid sdk 则不需要引入下述依赖
// 需要新增 maven 'https://developer.huawei.com/repo'
// implementation 'com.huawei.hms:ads-identifier:3.4.62.300'

// 如果引入了 oaid sdk 则不需要引入下述依赖
// 需要新增 maven 'https://developer.hihonor.com/repo'
// implementation 'com.hihonor.mcs:ads-identifier:1.0.3.300'
// ...
}
```
}`}
</CodeBlock>

</>

Expand Down Expand Up @@ -2015,3 +1999,5 @@ sign = fmt.Sprintf("%x", sha256.Sum256(trans_id:SecurityKey))
|**10007**| Request AdSpace Miss | |
|**10008**| Request AdSpace Not Match| |
|**10009**| Request Invalid DeviceId | |


5 changes: 5 additions & 0 deletions cn/docs/sdk/tap-iap/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"label": "内购服务",
"collapsed": true,
"position": 16
}
Loading

0 comments on commit 35a8b4e

Please sign in to comment.