README.md 3.09 KB
Newer Older
余强's avatar
余强 committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
### 🤖 Assistant




# TON Connect SDK 使用文档

## 目录
- [功能概述](#功能概述)
- [主要特性](#主要特性)
- [核心导出](#核心导出)
  - [方法说明](#方法说明)
  - [数据结构](#数据结构)
- [风险提示](#风险提示)
- [使用示例](#使用示例)
- [Q&A](#qa)

## 功能概述
本SDK提供与TON区块链交互的核心功能,包括:
- 钱包连接与交易初始化
- TON代币转账
- Jetton代币(如USDT)转账
- 交易状态追踪与验证
- 主网/测试网切换支持

## 主要特性
- 支持TON主网和测试网切换
- 提供钱包连接的全生命周期管理
- 封装TON和Jetton代币的转账逻辑
- 自动处理交易载荷编码
- 交易结果轮询验证机制
- 支持交易附带文本备注

## 核心导出

### 方法说明

#### `init(isTestOnly: boolean, manifestUrl: string)`
初始化SDK实例
- `isTestOnly`: 是否使用测试网络
- `manifestUrl`: 应用配置文件URL

#### `tonPay(toAddr: string, amount: number, comment?: string)`
进行TON代币转账
- `toAddr`: 接收地址
- `amount`: 转账金额(TON单位)
- `comment`: 可选交易备注

#### `usdtPay(toAddr: string, amount: number, comment?: string)`
进行USDT(Jetton)代币转账

#### `jettonPay(jettonMasterAddr: string, toAddr: string, amount: number, comment?: string)`
通用Jetton代币转账
- `jettonMasterAddr`: Jetton主合约地址

#### `waitForTransaction(toAddr: string, amount: number, comment?: string)`
交易结果轮询验证

### 数据结构

```typescript
interface VerifyOption {
  refetchLimit: number;     // 最大重试次数
  currentRefetchCount: number;  // 当前重试计数
  toAddress: string;        // 目标地址
  amount: number;           // 转账金额
  comment?: string;         // 交易备注
  callback: Function;       // 回调函数
  interval: number;         // 轮询间隔(毫秒)
}
余强's avatar
余强 committed
71
72
```

余强's avatar
余强 committed
73
74
75
76
77
78
## 风险提示
1. **初始化顺序**:必须先调用`init()`方法完成初始化
2. **网络波动**:交易验证可能会因网络问题失败
3. **Gas费用**:建议保持钱包至少有0.1 TON余额
4. **连接状态**:发送交易前会自动检查钱包连接
5. **私钥安全**:SDK不存储任何私钥信息
余强's avatar
余强 committed
79

余强's avatar
余强 committed
80
## 使用示例
余强's avatar
余强 committed
81

余强's avatar
余强 committed
82
83
84
85
### 初始化应用
```javascript
await init(true, "https://example.com/manifest.json");
```
余强's avatar
余强 committed
86

余强's avatar
余强 committed
87
88
89
90
### TON转账
```javascript
await tonPay("EQCD...tV8", 1.5, "服务付款");
```
余强's avatar
余强 committed
91

余强's avatar
余强 committed
92
93
94
95
### USDT转账
```javascript
await usdtPay("EQCD...tV8", 100);
```
余强's avatar
余强 committed
96

余强's avatar
余强 committed
97
98
99
100
101
### 自定义Jetton转账
```javascript
const jettonAddr = "EQCQ...v_1";
await jettonPay(jettonAddr, "EQCD...tV8", 50);
```
余强's avatar
余强 committed
102

余强's avatar
余强 committed
103
104
105
106
### 交易验证
```javascript
await waitForTransaction("EQCD...tV8", 1.5, "tx123");
```
余强's avatar
余强 committed
107

余强's avatar
余强 committed
108
## Q&A
余强's avatar
余强 committed
109

余强's avatar
余强 committed
110
111
112
113
114
**Q1: 处理交易失败应该怎么做?**
- 检查钱包连接状态
- 确认目标地址有效性
- 检查账户余额是否充足
- 通过`waitForTransaction`验证交易状态
余强's avatar
余强 committed
115

余强's avatar
余强 committed
116
117
**Q2: 如何切换测试网络?**
`init`方法第一个参数传入`true`
余强's avatar
余强 committed
118

余强's avatar
余强 committed
119
120
**Q3: 如何获取历史交易记录?**
使用`tonWeb.getTransactions(walletAddress, limit)`
余强's avatar
余强 committed
121

余强's avatar
余强 committed
122
123
**Q4: 交易备注最大长度限制?**
当前实现中建议不超过128字符
余强's avatar
余强 committed
124
125
126