hm-tracking-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +291 -0
- package/dist/browser/index.es.js +36247 -0
- package/dist/browser/index.umd.js +1245 -0
- package/dist/browser.d.ts +1 -0
- package/dist/browser.js +8 -0
- package/dist/browser.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/sdk/HmTgTrackingSDK.d.ts +68 -0
- package/dist/sdk/HmTgTrackingSDK.js +336 -0
- package/dist/sdk/HmTgTrackingSDK.js.map +1 -0
- package/dist/sdk/HmTrackingSDK.d.ts +68 -0
- package/dist/sdk/HmTrackingSDK.js +336 -0
- package/dist/sdk/HmTrackingSDK.js.map +1 -0
- package/dist/sdk/TgTrackingSDK.d.ts +68 -0
- package/dist/sdk/TgTrackingSDK.js +336 -0
- package/dist/sdk/TgTrackingSDK.js.map +1 -0
- package/dist/sdk/adMonitor.d.ts +13 -0
- package/dist/sdk/adMonitor.js +51 -0
- package/dist/sdk/adMonitor.js.map +1 -0
- package/dist/sdk/api.d.ts +35 -0
- package/dist/sdk/api.js +73 -0
- package/dist/sdk/api.js.map +1 -0
- package/dist/sdk/http.d.ts +16 -0
- package/dist/sdk/http.js +43 -0
- package/dist/sdk/http.js.map +1 -0
- package/dist/sdk/index.d.ts +3 -0
- package/dist/sdk/index.js +4 -0
- package/dist/sdk/index.js.map +1 -0
- package/dist/sdk/monetag.d.ts +29 -0
- package/dist/sdk/monetag.js +115 -0
- package/dist/sdk/monetag.js.map +1 -0
- package/dist/sdk/storage.d.ts +8 -0
- package/dist/sdk/storage.js +30 -0
- package/dist/sdk/storage.js.map +1 -0
- package/dist/sdk/telegram.d.ts +12 -0
- package/dist/sdk/telegram.js +139 -0
- package/dist/sdk/telegram.js.map +1 -0
- package/dist/sdk/tonWalletProvider.d.ts +13 -0
- package/dist/sdk/tonWalletProvider.js +142 -0
- package/dist/sdk/tonWalletProvider.js.map +1 -0
- package/dist/sdk/types.d.ts +212 -0
- package/dist/sdk/types.js +7 -0
- package/dist/sdk/types.js.map +1 -0
- package/package.json +63 -0
package/README.md
ADDED
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
# HM TG Tracking SDK 使用文档
|
|
2
|
+
|
|
3
|
+
本文档详细介绍如何使用 HM TG Tracking SDK,包括初始化、广告业务和支付业务的完整流程。
|
|
4
|
+
|
|
5
|
+
## 1. 安装
|
|
6
|
+
|
|
7
|
+
建议通过 npm/yarn 安装正式发布的包:
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 使用 yarn
|
|
11
|
+
yarn add hm-tracking-sdk axios crypto-js
|
|
12
|
+
|
|
13
|
+
# 或使用 npm
|
|
14
|
+
npm i hm-tracking-sdk axios crypto-js
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 2. SDK 初始化
|
|
21
|
+
|
|
22
|
+
```ts
|
|
23
|
+
import { HmTrackingSDK, type SDKInitOptions } from "hm-tracking-sdk";
|
|
24
|
+
|
|
25
|
+
const options: SDKInitOptions = {
|
|
26
|
+
// 可选:不传则使用内置默认地址
|
|
27
|
+
baseURL: "https://your-api.example.com",
|
|
28
|
+
|
|
29
|
+
// 可选:本地存储 Key 前缀,避免项目间冲突
|
|
30
|
+
storageKeyPrefix: "your_app_prefix",
|
|
31
|
+
|
|
32
|
+
// 可选:浏览器环境下使用,可显式传入自定义用户
|
|
33
|
+
customUser: {
|
|
34
|
+
user: {
|
|
35
|
+
id: 123456789,
|
|
36
|
+
firstName: "Test",
|
|
37
|
+
lastName: "User",
|
|
38
|
+
username: "test_user",
|
|
39
|
+
languageCode: "zh-hans",
|
|
40
|
+
},
|
|
41
|
+
authDate: new Date().toISOString(),
|
|
42
|
+
hash: "your_hash_value",
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
|
|
46
|
+
const sdk = new HmTrackingSDK(options);
|
|
47
|
+
await sdk.init();
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
- 函数说明:初始化 SDK,先创建 HmTrackingSDK 对象,然后调用 init 方法完成初始化。
|
|
51
|
+
- 返回值:`Promise<void>`。
|
|
52
|
+
|
|
53
|
+
### 2.1 参数说明
|
|
54
|
+
|
|
55
|
+
- baseURL(可选)
|
|
56
|
+
- 说明:后端服务地址;不传则使用 SDK 内置默认地址。
|
|
57
|
+
- 类型:`string`
|
|
58
|
+
- storageKeyPrefix(可选)
|
|
59
|
+
- 说明:本地缓存命名空间前缀;用于隔离不同项目的存储键。
|
|
60
|
+
- 类型:`string`
|
|
61
|
+
- customUser(可选)
|
|
62
|
+
- 说明:自定义用户数据,仅在非 Telegram 环境可用;若不传,SDK 会自动使用“匿名浏览器用户”(基于 Cookie 生成并持久化随机 userId),从而可以直接完成鉴权与后续请求。
|
|
63
|
+
- 类型:`TelegramUserInfo`
|
|
64
|
+
|
|
65
|
+
### 2.2 环境差异
|
|
66
|
+
|
|
67
|
+
- Telegram 环境
|
|
68
|
+
- SDK 自动读取当前Telegram用户的信息。
|
|
69
|
+
- 无需传入 `customUser`;若 Telegram 用户读取失败,SDK 会抛错提示。
|
|
70
|
+
- 浏览器环境(非 Telegram)
|
|
71
|
+
- 默认行为:若未传 `customUser`,SDK 会使用“匿名浏览器用户”:
|
|
72
|
+
- 首次访问生成随机 `userId`,存入 Cookie(如 `tg_tracking_uid`),后续复用。
|
|
73
|
+
- 便于无登录状态下完成鉴权,拿到 token 后再进行广告或调试。
|
|
74
|
+
- 自定义用户:也可传入 `customUser` 替代匿名用户。
|
|
75
|
+
|
|
76
|
+
### 2.3 环境判断
|
|
77
|
+
|
|
78
|
+
```ts
|
|
79
|
+
import { isTelegramEnv } from "hm-tracking-sdk";
|
|
80
|
+
|
|
81
|
+
if (isTelegramEnv()) {
|
|
82
|
+
// Telegram WebApp 环境
|
|
83
|
+
} else {
|
|
84
|
+
// 浏览器/其他环境
|
|
85
|
+
}
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 3. 获取Telegram用户信息
|
|
91
|
+
|
|
92
|
+
返回 Telegram 当前用户的信息
|
|
93
|
+
|
|
94
|
+
```ts
|
|
95
|
+
import { getTelegramUserUnsafe, type TelegramUserInfo } from "hm-tracking-sdk";
|
|
96
|
+
|
|
97
|
+
const user: TelegramUserInfo | null = getTelegramUserUnsafe();
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
- 函数说明:在 Telegram 环境下读取 `WebApp.initDataUnsafe` 并返回 `TelegramUserInfo`;获取失败返回 `null`。
|
|
101
|
+
- 返回值:`TelegramUserInfo | null`,数据结构为:
|
|
102
|
+
|
|
103
|
+
```ts
|
|
104
|
+
export interface TelegramUserInfo {
|
|
105
|
+
id?: number;
|
|
106
|
+
first_name?: string;
|
|
107
|
+
last_name?: string;
|
|
108
|
+
username?: string;
|
|
109
|
+
language_code?: string;
|
|
110
|
+
allows_write_to_pm?: boolean;
|
|
111
|
+
auth_date?: number;
|
|
112
|
+
hash?: string;
|
|
113
|
+
[key: string]: unknown;
|
|
114
|
+
}
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
- 环境要求:仅 Telegram WebApp 可用;在浏览器环境(非 Telegram)将返回 `null`。
|
|
118
|
+
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
## 4. 广告业务
|
|
122
|
+
|
|
123
|
+
### 4.1 展示广告
|
|
124
|
+
|
|
125
|
+
```ts
|
|
126
|
+
await sdk.showHmAdByPosition(adPositionName);
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
- 函数说明:根据广告位名称展示广告。
|
|
130
|
+
- 参数说明
|
|
131
|
+
- adPositionName(必填)
|
|
132
|
+
- 说明:广告位名称,需要根据业务进行申请,具体请联系SDK开发者,使用示例值进行测试。
|
|
133
|
+
- 类型:`string`
|
|
134
|
+
- 示例值:
|
|
135
|
+
- `game_rewarded_ad_position`
|
|
136
|
+
- 返回值:`Promise<void>`。
|
|
137
|
+
|
|
138
|
+
说明:SDK 会根据根据广告位名称获取相关广告配置并完成展示。
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## 5. 支付业务
|
|
143
|
+
|
|
144
|
+
支付仅支持在 Telegram WebApp 内使用。
|
|
145
|
+
|
|
146
|
+
### 5.1 API
|
|
147
|
+
|
|
148
|
+
#### 5.1.1 钱包相关接口
|
|
149
|
+
|
|
150
|
+
```ts
|
|
151
|
+
sdk.isWalletConnected(): boolean
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
- 函数说明:同步检查是否已连接 TON 钱包;
|
|
155
|
+
- 返回值:`boolean`。
|
|
156
|
+
|
|
157
|
+
```ts
|
|
158
|
+
sdk.connectWallet(): Promise<boolean>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
- 函数说明:发起连接 TON 钱包;
|
|
162
|
+
- 返回值:`Promise<boolean>` 表示是否连接成功。
|
|
163
|
+
|
|
164
|
+
```ts
|
|
165
|
+
sdk.disconnectWallet(): Promise<void>
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
- 函数说明:断开已连接的钱包;
|
|
169
|
+
- 返回值:`Promise<void>`。
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
sdk.ensureWalletConnected(): Promise<boolean>
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
- 函数说明:确保钱包已连接;若未连接则尝试连接;
|
|
176
|
+
- 返回值:`Promise<boolean>` 表示最终是否已连接。
|
|
177
|
+
|
|
178
|
+
#### 5.2.1 获取支持的支付方式
|
|
179
|
+
|
|
180
|
+
```ts
|
|
181
|
+
sdk.getSupportedPayModes(): Promise<MerchantPayModeListData>
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
- 函数说明:获取当前支持的币种及汇率配置;
|
|
185
|
+
- 参数说明:无;
|
|
186
|
+
- 返回值说明:`Promise<MerchantPayModeListData>`,见下方类型定义。
|
|
187
|
+
|
|
188
|
+
```ts
|
|
189
|
+
interface MerchantPayModeListData {
|
|
190
|
+
payModeList: MerchantPayModeItem[];
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
interface MerchantPayModeItem {
|
|
194
|
+
id: number;
|
|
195
|
+
title: string;
|
|
196
|
+
name: string; // 币种: 'USDT' | 'TON' | 'STARS'
|
|
197
|
+
rate: number; // 汇率
|
|
198
|
+
nameDesc: string;
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
#### 5.2.2 创建并支付订单
|
|
203
|
+
|
|
204
|
+
```ts
|
|
205
|
+
// 仅 TON/USDT 需要先连接钱包(STARS 无需)
|
|
206
|
+
await sdk.ensureWalletConnected();
|
|
207
|
+
|
|
208
|
+
// 创建并支付订单
|
|
209
|
+
const params: MerchantPayCreateRequest = {
|
|
210
|
+
currencyName: "TON", // "TON" | "USDT" | "STARS"
|
|
211
|
+
amount: 10.5, // 支付金额
|
|
212
|
+
outTradeNo: `order_${Date.now()}`, // 自定义订单号
|
|
213
|
+
notifyUrl: "https://your-server.com/payment-callback",
|
|
214
|
+
attach: JSON.stringify({ userId: "123", itemId: "456" })
|
|
215
|
+
};
|
|
216
|
+
const result: MerchantPayFinishResponseData = await sdk.payByMerchant(params);
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
- 函数说明:创建支付订单并根据币种发起支付流程(STARS、TON/USDT 链上交易);
|
|
220
|
+
|
|
221
|
+
- 参数说明:
|
|
222
|
+
|
|
223
|
+
```ts
|
|
224
|
+
interface MerchantPayCreateRequest {
|
|
225
|
+
currencyName: string; // "USDT" | "TON" | "STARS"
|
|
226
|
+
amount: number; // 支付金额
|
|
227
|
+
outTradeNo: string; // 商户订单号
|
|
228
|
+
notifyUrl: string; // 服务端支付回调地址
|
|
229
|
+
attach: string; // 附加信息,通常使用 JSON.stringify
|
|
230
|
+
}
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
- 返回值数据结构:
|
|
234
|
+
|
|
235
|
+
```ts
|
|
236
|
+
export interface MerchantPayOrderBase {
|
|
237
|
+
orderSn: string;
|
|
238
|
+
transactionSn: string;
|
|
239
|
+
outTradeNo: string;
|
|
240
|
+
price: number | string;
|
|
241
|
+
count: number;
|
|
242
|
+
totalPrice: number | string;
|
|
243
|
+
currencyId: number;
|
|
244
|
+
currencyName: string;
|
|
245
|
+
currencyRate: number;
|
|
246
|
+
currencyAmount: number | string;
|
|
247
|
+
payUrl: string | null;
|
|
248
|
+
payExpireDatetime: string;
|
|
249
|
+
payDatetime: string | null;
|
|
250
|
+
finishDatetime: string | null;
|
|
251
|
+
description: string;
|
|
252
|
+
status: number;
|
|
253
|
+
statusDesc: string;
|
|
254
|
+
closeCode: string | null;
|
|
255
|
+
closeCodeDesc: string | null;
|
|
256
|
+
createDatetime: string;
|
|
257
|
+
updateDatetime: string;
|
|
258
|
+
transferHash: string | null;
|
|
259
|
+
transactionHash: string | null;
|
|
260
|
+
transactionLt: string | null;
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
```ts
|
|
265
|
+
// 支付完成回调返回的订单结果
|
|
266
|
+
type MerchantPayFinishResponseData = MerchantPayOrderBase;
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
#### 5.2.3 查询支付结果
|
|
270
|
+
|
|
271
|
+
```ts
|
|
272
|
+
sdk.merchantPayQueryResult(data: MerchantPayQueryResultRequest): Promise<MerchantPayQueryResultResponseData>
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
- 函数说明:通过系统订单号 `orderSn` 或商户订单号 `outTradeNo` 查询订单最新结果;
|
|
276
|
+
- 参数说明:`MerchantPayQueryResultRequest`,见下方类型:
|
|
277
|
+
|
|
278
|
+
```ts
|
|
279
|
+
interface MerchantPayQueryResultRequest {
|
|
280
|
+
orderSn?: string;
|
|
281
|
+
outTradeNo?: string;
|
|
282
|
+
}
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
- 返回值说明:`Promise<MerchantPayQueryResultResponseData>`,同 `MerchantPayOrderBase`。
|
|
286
|
+
|
|
287
|
+
```ts
|
|
288
|
+
type MerchantPayQueryResultResponseData = MerchantPayOrderBase;
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
|