Skip to content

Commit 35a8b4e

Browse files
authored
Merge pull request #1284 from taptap/feat_cn_iap_v4
Feat cn iap v4
2 parents b6e10f8 + bc1e2ca commit 35a8b4e

File tree

47 files changed

+1976
-93
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+1976
-93
lines changed

cn/docs/sdk/anti-addiction/practice.mdx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,22 +14,22 @@ import v4SDKVersions from '/src/docComponents/v4SDKVersions';
1414
### 创建应用获取应用参数
1515
[TapTap 开发者中心](https://developer.taptap.cn) 创建游戏应用,获取应用 Client ID、Client Token 等参数,用于初始化 SDK;
1616

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

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

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

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

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

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

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

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

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

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

4545
## 代码接入
4646

cn/docs/sdk/apk-upload/guide.mdx

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,6 +159,70 @@ Signature = Base64Encode(HMAC-SHA256(Server Secret, SignParts))
159159

160160
</details>
161161

162+
<details>
163+
<summary>Shell 请求示例</summary>
164+
165+
```bash
166+
#!/usr/bin/env bash
167+
168+
# TapTap API 上传 APK 「获取上传请求参数」接口请求示例 Shell 脚本
169+
# 测试该脚本时需要开发者根据自己的应用参数替换如下四个参数:app_id、client_id、server_secret、file_name
170+
171+
# app_id:游戏在 TapTap 商店的唯一身份标识。 例如:https://www.taptap.cn/app/187168,其中 187168 是 app_id。
172+
app_id="填写应用的 App ID"
173+
174+
# TapTap 开放平台提供的 Client ID,应用的客户端标识
175+
client_id="填写应用的 Client ID"
176+
177+
# TapTap 开放平台的 Server Secret,服务端对服务端的调用凭证,用来生成签名的密钥(请勿泄露)
178+
server_secret="填写应用的 Server Secret"
179+
180+
# 要上传的 APK 文件名,必须以 .apk 为扩展名,且只允许包含字母、数字、下划线和中横线
181+
file_name="要上传的 APK 文件名,必须以 .apk 为扩展名"
182+
183+
# 生成 8 位随机字符串作为请求中的 nonce,用于防止请求重放
184+
nonce=$(openssl rand -hex 4)
185+
186+
# 当前时间的秒级 Unix 时间戳,用于生成签名
187+
ts=$(date +%s)
188+
189+
# 构造待签名的请求内容
190+
# 请求方法
191+
method="GET"
192+
193+
# 完整请求路径及其 QueryString 参数,用于访问 API 上传参数
194+
url_path_and_query="/apk/v1/upload-params?app_id=${app_id}&file_name=${file_name}&client_id=${client_id}"
195+
196+
# 请求头信息,包含随机数 nonce 和时间戳 ts
197+
headers=$(printf "%s\n%s" "x-tap-nonce:${nonce}" "x-tap-ts:${ts}")
198+
199+
# GET 请求不携带 Body,因此 Body 内容为空
200+
body=""
201+
202+
# 输出待签名的请求内容(请求方法、路径、头信息、Body)用于调试
203+
printf "%s\n%s\n%s\n%s\n" "${method}" "${url_path_and_query}" "${headers}" "${body}"
204+
205+
# 使用 HMAC-SHA256 算法对请求进行签名,并使用 Base64 编码
206+
# 签名生成的步骤:使用请求方法、请求路径、请求头信息和 Body,通过密钥加密生成签名
207+
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)
208+
209+
# 输出生成的签名值用于调试
210+
echo "生成的签名: $sign"
211+
212+
# 构造完整的请求 URL,包括路径和查询参数
213+
Request_Url="https://cloud.tapapis.cn${url_path_and_query}"
214+
215+
# 使用 curl 发起 GET 请求,传递时间戳 ts、nonce 和签名 sign 作为请求头
216+
curl -X GET \
217+
-H "X-Tap-Ts: ${ts}" \
218+
-H "X-Tap-Nonce: ${nonce}" \
219+
-H "X-Tap-Sign: ${sign}" \
220+
"${Request_Url}"
221+
```
222+
223+
</details>
224+
225+
162226
### 响应数据
163227

164228
| 字段名 | 描述 | 类型 |

cn/docs/sdk/copyright-verification/features.mdx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,4 +22,5 @@ TapTap 的正版验证服务适用于买断制游戏,用于检测用户开始
2222

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

25-
在使用 DLC 正版验证服务前,请确保您的游戏存在一个用户可见的游戏详情页(可预约、可关注均可),并前往开发者中心 > 商店 > 游戏售卖创建 DLC 并提交审核。完成审核后, 请前往 [开发指南](/sdk/copyright-verification/guide/) 完成开发接入。
25+
在使用 DLC 正版验证服务前,请确保您的游戏存在一个用户可见的游戏详情页(可预约、可关注均可),并确认您上传的游戏 APK 包体已通过审核。
26+
确认无误后,请前往开发者中心 > 商店 > 游戏售卖,创建 DLC 并提交审核。完成审核后, 请参考 [开发指南](/sdk/copyright-verification/guide/) 完成开发接入。

cn/docs/sdk/start/agreement.mdx

Lines changed: 54 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@
22
title: TapSDK 隐私政策
33
sidebar_position: 8
44
---
5-
6-
更新日期:2024 年 9 月 30 日
7-
生效日期:2024 年 9 月 30 日
5+
更新日期:2024 年 11 月 15 日
6+
生效日期:2024 年 11 月 15 日
87

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

@@ -381,7 +380,7 @@ sidebar_position: 8
381380
<tr>
382381
<th>个人信息/权限类型</th>
383382
<th>个人信息/权限名称</th>
384-
<th>使用目的</th>
383+
<th>使用目的</th>
385384
</tr >
386385
<tr >
387386
<td rowspan="7">必要个人信息/权限</td>
@@ -425,7 +424,7 @@ sidebar_position: 8
425424
<tr>
426425
<th>个人信息/权限类型</th>
427426
<th>个人信息/权限名称</th>
428-
<th>使用目的</th>
427+
<th>使用目的</th>
429428
</tr >
430429
<tr >
431430
<td rowspan="7">必要个人信息/权限</td>
@@ -460,6 +459,48 @@ sidebar_position: 8
460459

461460

462461

462+
**1.2.10 TapTap IAP**
463+
464+
1)功能介绍:提供 TapTap IAP(In App Purchase)能力,玩家可以通过 TapTap IAP 快速购买所需要的游戏道具,最终会通过微信支付、支付宝支付等方式完成支付。
465+
466+
2)收集信息/获取权限
467+
<table>
468+
<tr>
469+
<th>个人信息/权限类型</th>
470+
<th>个人信息/权限名称</th>
471+
<th>使用目的</th>
472+
</tr >
473+
<tr >
474+
<td rowspan="7">必要个人信息/权限</td>
475+
<td>系统版本</td>
476+
<td rowspan="7">为了确保设备系统兼容、定位解决问题</td>
477+
</tr>
478+
<tr>
479+
<td>设备型号</td>
480+
</tr>
481+
<tr>
482+
<td>设备 CPU 信息</td>
483+
</tr>
484+
<tr>
485+
<td>网络类型</td>
486+
</tr>
487+
<tr>
488+
<td>AndroidID</td>
489+
</tr>
490+
<tr>
491+
<td>设备内存信息</td>
492+
</tr>
493+
<tr>
494+
<td>手机样式</td>
495+
</tr>
496+
<tr>
497+
<td>可选个人信息/权限</td>
498+
<td>无</td>
499+
<td>/</td>
500+
</tr>
501+
</table>
502+
503+
463504

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

@@ -503,7 +544,7 @@ sidebar_position: 8
503544

504545
3.2 转让
505546

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

509550
3.3 披露
@@ -602,4 +643,10 @@ TapSDK 个人信息保护负责人邮箱:`privacy@taptap.com`
602643

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

605-
<small>本页面内容具有多种语言版本,若其他语言版本与简体中文版本发生冲突,应以简体中文版本为准。</small>
646+
<small>本页面内容具有多种语言版本,若其他语言版本与简体中文版本发生冲突,应以简体中文版本为准。</small>
647+
648+
649+
650+
651+
652+

cn/docs/sdk/start/compliance.mdx

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,50 @@ public void onRequestPermissionsResult(int requestCode, String[] permissions, in
406406

407407
408408

409+
### 10. TapTap IAP
410+
411+
- 功能介绍
412+
413+
提供 TapTap IAP(In App Purchase) 能力,玩家可以通过 TapTap IAP 快速购买所需要的游戏道具,最终会通过微信支付、支付宝支付等方式完成支付。
414+
415+
- 合规调用时机
416+
417+
玩家触发游戏内道具购买时进行初始化和调用。
418+
419+
- 需要权限
420+
421+
| 权限 | 使用目的 | 权限申请时机 |
422+
| ---------------------- | ---------------------- | ---------------------- |
423+
| 网络权限 | 用于访问网络数据 | 用户首次使用该功能时会申请权限 |
424+
| 获取网络状态 | 用于检测当前网络连接是否有效 | 用户首次使用该功能时会申请权限 |
425+
426+
- 关闭功能的配置方式
427+
428+
若要关闭,可在app目录build.gradle中移除对该功能的依赖(详见[文档](https://developer.taptap.cn/docs/sdk/update/guide/#tapsdk-%E5%88%9D%E5%A7%8B%E5%8C%96)),示例如下:
429+
430+
```
431+
// implementation("com.taptap.android.payment:iap:latest")
432+
// implementation("com.taptap.android.payment:base:latest")
433+
// implementation("com.taptap.android.payment:alipaycn:latest")
434+
// implementation("com.taptap.android.payment:wechat:latest")
435+
```
436+
437+
- 必要个人信息
438+
439+
| 必要个人信息 | 使用目的 | 场景 | 收集频次 |
440+
| ------ | ------ | ------ | ------ |
441+
| 系统版本 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
442+
| 设备型号 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
443+
| 设备 CPU 信息 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
444+
| 网络类型 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
445+
| Android ID | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 初始化及用户发起授权时获取一次 |
446+
| 设备内存信息 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
447+
| 手机样式 | 为了确保设备系统兼容、定位解决问题 | 遇到服务故障时针对性进行排查和优化 | 每次应用冷启动获取一次 |
448+
449+
- 可选个人信息
450+
451+
452+
409453

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

cn/docs/sdk/start/overview.mdx

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@ TDS 提供以下技术服务,开发者可以通过在游戏中集成 TapSDK
5252

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

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

5759
使用对应的服务请先完成<Conditional region="cn">[开发者注册](https://developer.taptap.cn/)</Conditional><Conditional region="global">[开发者注册](https://developer.taptap.io/)</Conditional>,之后登录开发者中心开启「游戏服务」。

cn/docs/sdk/tap-adn/tds-tapad.mdx

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -90,14 +90,6 @@ dependencies {
9090
implementation "com.android.support:support-v4:28.0.0"
9191
implementation "com.github.bumptech.glide:glide:4.9.0"
9292
implementation 'com.android.support:recyclerview-v7:28.0.0'
93-
94-
// 如果引入了 oaid sdk 则不需要引入下述依赖
95-
// 需要新增 maven 'https://developer.huawei.com/repo'
96-
// implementation 'com.huawei.hms:ads-identifier:3.4.62.300'
97-
98-
// 如果引入了 oaid sdk 则不需要引入下述依赖
99-
// 需要新增 maven 'https://developer.hihonor.com/repo'
100-
// implementation 'com.hihonor.mcs:ads-identifier:1.0.3.300'
10193
// 加入的依赖库-结束
10294
// highlight-end
10395
// 下面这行是 Unity 的 mainTemplate.gradle 自带的,帮助定位插入位置
@@ -119,8 +111,8 @@ dependencies {
119111
:::tip
120112
**TapADN SDK 3.16.3.10 版本开始更新了 glide 的依赖,glide 版本从 4.0.0 更新到了 4.9.0。**
121113
:::
122-
```groovy
123-
repositories{
114+
<CodeBlock className="groovy">
115+
{`repositories{
124116
flatDir{
125117
dirs 'src/main/libs'
126118
}
@@ -136,17 +128,9 @@ dependencies {
136128
implementation "com.android.support:support-v4:28.0.0"
137129
implementation "com.github.bumptech.glide:glide:4.9.0"
138130
implementation 'com.android.support:recyclerview-v7:28.0.0'
139-
140-
// 如果引入了 oaid sdk 则不需要引入下述依赖
141-
// 需要新增 maven 'https://developer.huawei.com/repo'
142-
// implementation 'com.huawei.hms:ads-identifier:3.4.62.300'
143-
144-
// 如果引入了 oaid sdk 则不需要引入下述依赖
145-
// 需要新增 maven 'https://developer.hihonor.com/repo'
146-
// implementation 'com.hihonor.mcs:ads-identifier:1.0.3.300'
147131
// ...
148-
}
149-
```
132+
}`}
133+
</CodeBlock>
150134

151135
</>
152136

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

cn/docs/sdk/tap-iap/_category_.json

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
{
2+
"label": "内购服务",
3+
"collapsed": true,
4+
"position": 16
5+
}

0 commit comments

Comments
 (0)