hm-tracking-sdk 0.1.2 → 0.1.4

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.
Files changed (2) hide show
  1. package/README.md +145 -119
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -4,65 +4,76 @@
4
4
 
5
5
  ## 1. 安装
6
6
 
7
- 建议通过 npm/yarn 安装正式发布的包:
7
+ ### 建议通过 npm/yarn 安装正式发布的包:
8
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
- ```
9
+ ```bash
10
+ # 使用 yarn
11
+ yarn add hm-tracking-sdk axios crypto-js
16
12
 
13
+ # 或使用 npm
14
+ npm i hm-tracking-sdk axios crypto-js
15
+ ```
17
16
 
18
17
  ---
19
18
 
20
19
  ## 2. SDK 初始化
21
20
 
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",
21
+ - 接口: init()
31
22
 
32
- // 可选:浏览器环境下使用,可显式传入自定义用户
33
- customUser: {
34
- user: {
35
- id: 123456789,
36
- firstName: "Test",
37
- lastName: "User",
38
- username: "test_user",
39
- languageCode: "zh-hans",
23
+ ```ts
24
+ import { HmTrackingSDK, type SDKInitOptions } from "hm-tracking-sdk";
25
+
26
+ const options: SDKInitOptions = {
27
+ // 可选:不传则使用内置默认地址
28
+ baseURL: "https://your-api.example.com",
29
+
30
+ // 可选:本地存储 Key 前缀,避免项目间冲突
31
+ storageKeyPrefix: "your_app_prefix",
32
+
33
+ // 可选:浏览器环境下使用,可显式传入自定义用户
34
+ customUser: {
35
+ user: {
36
+ id: 123456789,
37
+ firstName: "Test",
38
+ lastName: "User",
39
+ username: "test_user",
40
+ languageCode: "zh-hans",
41
+ },
42
+ authDate: new Date().toISOString(),
43
+ hash: "your_hash_value",
40
44
  },
41
- authDate: new Date().toISOString(),
42
- hash: "your_hash_value",
43
- },
44
- };
45
+ };
45
46
 
46
- const sdk = new HmTrackingSDK(options);
47
- await sdk.init();
48
- ```
47
+ const sdk = new HmTrackingSDK(options);
48
+ await sdk.init();
49
+ ```
49
50
 
50
51
  - 函数说明:初始化 SDK,先创建 HmTrackingSDK 对象,然后调用 init 方法完成初始化。
51
- - 返回值:`Promise<void>`。
52
-
53
- ### 2.1 参数说明
52
+ - 参数说明: `SDKInitOptions` 初始化SDK时的可选参数,数据结构及内部结构说明为:
53
+
54
+ ```ts
55
+ export interface SDKInitOptions {
56
+ /** 自定义接口地址(可选)。不传则使用默认正式环境 */
57
+ baseURL?: string;
58
+ /** 本地存储 Key 前缀,避免冲突 */
59
+ storageKeyPrefix?: string;
60
+ /** 自定义用户信息(可选) */
61
+ customUser?: TelegramUserInfo;
62
+ }
63
+ ```
54
64
 
55
- - baseURL(可选)
56
- - 说明:后端服务地址;不传则使用 SDK 内置默认地址。
57
- - 类型:`string`
58
- - storageKeyPrefix(可选)
59
- - 说明:本地缓存命名空间前缀;用于隔离不同项目的存储键。
60
- - 类型:`string`
61
- - customUser(可选)
62
- - 说明:自定义用户数据,仅在非 Telegram 环境可用;若不传,SDK 会自动使用“匿名浏览器用户”(基于 Cookie 生成并持久化随机 userId),从而可以直接完成鉴权与后续请求。
63
- - 类型:`TelegramUserInfo`
65
+ - baseURL(可选)
66
+ - 说明:后端服务地址;不传则使用 SDK 内置默认地址。
67
+ - 类型:`string`
68
+ - storageKeyPrefix(可选)
69
+ - 说明:本地缓存命名空间前缀;用于隔离不同项目的存储键。
70
+ - 类型:`string`
71
+ - customUser(可选)
72
+ - 说明:自定义用户数据,仅在非 Telegram 环境可用;若不传,SDK 会自动使用“匿名浏览器用户”(基于 Cookie 生成并持久化随机 userId),从而可以直接完成鉴权与后续请求。
73
+ - 类型:`TelegramUserInfo`
74
+ - 返回值:`Promise<void>`。
64
75
 
65
- ### 2.2 环境差异
76
+ ### 2.1 环境
66
77
 
67
78
  - Telegram 环境
68
79
  - SDK 自动读取当前Telegram用户的信息。
@@ -73,47 +84,52 @@ await sdk.init();
73
84
  - 便于无登录状态下完成鉴权,拿到 token 后再进行广告或调试。
74
85
  - 自定义用户:也可传入 `customUser` 替代匿名用户。
75
86
 
76
- ### 2.3 环境判断
77
-
78
- ```ts
79
- import { isTelegramEnv } from "hm-tracking-sdk";
87
+ ### 2.2 环境判断
80
88
 
81
- if (isTelegramEnv()) {
82
- // Telegram WebApp 环境
83
- } else {
84
- // 浏览器/其他环境
85
- }
86
- ```
89
+ - 接口: isTelegramEnv()
87
90
 
88
- ---
91
+ ```ts
92
+ import { isTelegramEnv } from "hm-tracking-sdk";
89
93
 
90
- ## 3. 获取Telegram用户信息
94
+ if (isTelegramEnv()) {
95
+ // Telegram WebApp 环境
96
+ } else {
97
+ // 浏览器/其他环境
98
+ }
99
+ ```
91
100
 
92
- 返回 Telegram 当前用户的信息
101
+ - 函数说明:判断是否是Telegram环境。
102
+ - 返回值:`boolean`。
93
103
 
94
- ```ts
95
- import { getTelegramUserUnsafe, type TelegramUserInfo } from "hm-tracking-sdk";
104
+ ---
96
105
 
97
- const user: TelegramUserInfo | null = getTelegramUserUnsafe();
98
- ```
106
+ ## 3. 获取Telegram用户信息
107
+
108
+ - 接口: getTelegramUserUnsafe()
99
109
 
100
- - 函数说明:在 Telegram 环境下读取 `WebApp.initDataUnsafe` 并返回 `TelegramUserInfo`;获取失败返回 `null`。
101
- - 返回值:`TelegramUserInfo | null`,数据结构为:
102
-
103
110
  ```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
- }
111
+ import { getTelegramUserUnsafe, type TelegramUserInfo } from "hm-tracking-sdk";
112
+
113
+ const user: TelegramUserInfo | null = getTelegramUserUnsafe();
115
114
  ```
116
115
 
116
+ - 函数说明:在 Telegram 环境下返回 `TelegramUserInfo`;获取失败返回 `null`。
117
+ - 返回值:`TelegramUserInfo | null`,数据结构为:
118
+
119
+ ```ts
120
+ export interface TelegramUserInfo {
121
+ id?: number;
122
+ first_name?: string;
123
+ last_name?: string;
124
+ username?: string;
125
+ language_code?: string;
126
+ allows_write_to_pm?: boolean;
127
+ auth_date?: number;
128
+ hash?: string;
129
+ [key: string]: unknown;
130
+ }
131
+ ```
132
+
117
133
  - 环境要求:仅 Telegram WebApp 可用;在浏览器环境(非 Telegram)将返回 `null`。
118
134
 
119
135
  ---
@@ -122,9 +138,11 @@ const user: TelegramUserInfo | null = getTelegramUserUnsafe();
122
138
 
123
139
  ### 4.1 展示广告
124
140
 
125
- ```ts
126
- await sdk.showHmAdByPosition(adPositionName);
127
- ```
141
+ - 接口: showHmAdByPosition()
142
+
143
+ ```ts
144
+ await sdk.showHmAdByPosition(adPositionName);
145
+ ```
128
146
 
129
147
  - 函数说明:根据广告位名称展示广告。
130
148
  - 参数说明
@@ -143,46 +161,52 @@ await sdk.showHmAdByPosition(adPositionName);
143
161
 
144
162
  支付仅支持在 Telegram WebApp 内使用。
145
163
 
146
- ### 5.1 API
164
+ ### 5.1 TON钱包相关API
147
165
 
148
- #### 5.1.1 钱包相关接口
166
+ #### 5.1.1 钱包是否链接
149
167
 
150
- ```ts
151
- sdk.isWalletConnected(): boolean
152
- ```
168
+ - 接口: isWalletConnected()
169
+
170
+ ```ts
171
+ sdk.isWalletConnected(): boolean
172
+ ```
153
173
 
154
174
  - 函数说明:同步检查是否已连接 TON 钱包;
155
175
  - 返回值:`boolean`。
156
176
 
157
- ```ts
158
- sdk.connectWallet(): Promise<boolean>
159
- ```
177
+ #### 5.1.2 链接钱包
178
+
179
+ - 接口: connectWallet()
180
+
181
+ ```ts
182
+ sdk.connectWallet(): Promise<boolean>
183
+ ```
160
184
 
161
185
  - 函数说明:发起连接 TON 钱包;
162
186
  - 返回值:`Promise<boolean>` 表示是否连接成功。
163
187
 
164
- ```ts
165
- sdk.disconnectWallet(): Promise<void>
166
- ```
188
+ #### 5.1.3 断开钱包链接
189
+
190
+ - 接口: disconnectWallet()
191
+
192
+ ```ts
193
+ sdk.disconnectWallet(): Promise<void>
194
+ ```
167
195
 
168
196
  - 函数说明:断开已连接的钱包;
169
197
  - 返回值:`Promise<void>`。
170
198
 
171
- ```ts
172
- sdk.ensureWalletConnected(): Promise<boolean>
173
- ```
174
-
175
- - 函数说明:确保钱包已连接;若未连接则尝试连接;
176
- - 返回值:`Promise<boolean>` 表示最终是否已连接。
199
+ ### 5.2 支付
177
200
 
178
201
  #### 5.2.1 获取支持的支付方式
179
202
 
180
- ```ts
181
- sdk.getSupportedPayModes(): Promise<MerchantPayModeListData>
182
- ```
203
+ - 接口: getSupportedPayModes()
204
+
205
+ ```ts
206
+ sdk.getSupportedPayModes(): Promise<MerchantPayModeListData>
207
+ ```
183
208
 
184
209
  - 函数说明:获取当前支持的币种及汇率配置;
185
- - 参数说明:无;
186
210
  - 返回值说明:`Promise<MerchantPayModeListData>`,见下方类型定义。
187
211
 
188
212
  ```ts
@@ -201,20 +225,22 @@ sdk.getSupportedPayModes(): Promise<MerchantPayModeListData>
201
225
 
202
226
  #### 5.2.2 创建并支付订单
203
227
 
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
- ```
228
+ - 接口: payByMerchant()
229
+
230
+ ```ts
231
+ // 仅 TON/USDT 需要先连接钱包(STARS 无需)
232
+ await sdk.ensureWalletConnected();
233
+
234
+ // 创建并支付订单
235
+ const params: MerchantPayCreateRequest = {
236
+ currencyName: "TON", // "TON" | "USDT" | "STARS"
237
+ amount: 10.5, // 支付金额
238
+ outTradeNo: `order_${Date.now()}`, // 自定义订单号
239
+ notifyUrl: "https://your-server.com/payment-callback",
240
+ attach: JSON.stringify({ userId: "123", itemId: "456" })
241
+ };
242
+ const result: MerchantPayFinishResponseData = await sdk.payByMerchant(params);
243
+ ```
218
244
 
219
245
  - 函数说明:创建支付订单并根据币种发起支付流程(STARS、TON/USDT 链上交易);
220
246
 
@@ -268,9 +294,11 @@ const result: MerchantPayFinishResponseData = await sdk.payByMerchant(params);
268
294
 
269
295
  #### 5.2.3 查询支付结果
270
296
 
271
- ```ts
272
- sdk.merchantPayQueryResult(data: MerchantPayQueryResultRequest): Promise<MerchantPayQueryResultResponseData>
273
- ```
297
+ - 接口: merchantPayQueryResult()
298
+
299
+ ```ts
300
+ sdk.merchantPayQueryResult(data: MerchantPayQueryResultRequest): Promise<MerchantPayQueryResultResponseData>
301
+ ```
274
302
 
275
303
  - 函数说明:通过系统订单号 `orderSn` 或商户订单号 `outTradeNo` 查询订单最新结果;
276
304
  - 参数说明:`MerchantPayQueryResultRequest`,见下方类型:
@@ -287,5 +315,3 @@ sdk.merchantPayQueryResult(data: MerchantPayQueryResultRequest): Promise<Merchan
287
315
  ```ts
288
316
  type MerchantPayQueryResultResponseData = MerchantPayOrderBase;
289
317
  ```
290
-
291
-
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hm-tracking-sdk",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "private": false,
5
5
  "description": "Telegram tracking SDK for Web/Miniapp with TON/Stars payment integration.",
6
6
  "license": "MIT",