本文详细介绍了 TON Connect SDK 的核心功能与使用方法,帮助开发者快速实现 DApp 与钱包的高效连接,并支持安全的交易签名操作。
什么是 TON Connect SDK?
TON Connect SDK 是一套开放的协议,允许去中心化应用(DApp)与 TON 区块链上的钱包安全连接。通过标准化流程,开发者可在应用中集成钱包登录及交易功能,提升用户体验并降低开发成本。
如果您之前使用过 TON Connect,可以继续沿用本文档进行对接,这能显著减少开发工作量。
安装 SDK
SDK 支持通过 CDN 或 NPM 两种方式安装。
通过 CDN 安装
将以下代码添加到 HTML 文件中,也可将 latest 替换为特定版本号(例如 1.3.7):
<script src="https://static.okx.com/cdn/assets/okxweb3/okx-ton-connect/latest.js"></script>引入后,OKXTonConnectSDK 将作为全局对象使用,可直接引用:
const connector = new OKXTonConnectSDK.OKXTonConnect();通过 NPM 安装
使用 npm 或 yarn 进行安装:
npm install @okx/okx-ton-connect
# 或
yarn add @okx/okx-ton-connect安装后在项目中引入:
import { OKXTonConnect } from '@okx/okx-ton-connect';初始化配置
在连接钱包前,需先创建 SDK 实例:
const connector = new OKXTonConnect({
metaData: {
name: "YourDAppName",
icon: "https://yourapp.com/icon.png"
}
});参数说明:
metaData:应用元数据对象name:应用名称(无需唯一)icon:应用图标 URL(支持 PNG、ICO 格式,建议使用 180×180px 的 PNG 图片)
连接钱包
使用 connect 方法连接钱包,以获取钱包地址和交易签名所需参数:
const connectRequest = {
tonProof: "optional_signature",
redirect: "optional_deeplink",
openUniversalLink: true
};
const universalLink = await connector.connect(connectRequest);参数说明:
tonProof(可选):签名信息redirect(可选):处理钱包事件后应用返回的 deeplinkopenUniversalLink(可选):是否通过 Universal Link 唤起钱包应用
最佳实践:
- 在移动浏览器或 Telegram 环境中,建议将
openUniversalLink设为true - 在 PC 浏览器环境中,建议设为
false,并根据返回的universalLink生成二维码
连接状态管理
恢复连接
如果用户之前已连接过钱包,可使用此方法恢复连接状态:
await connector.restoreConnection();断开连接
断开当前连接的钱包并删除会话。如需切换钱包,请先断开当前连接:
await connector.disconnect();检查连接状态
获取当前是否有已连接的钱包:
const isConnected = connector.connected;发送交易
使用 sendTransaction 方法向钱包发送交易请求:
const transaction = {
validUntil: Math.floor(Date.now() / 1000) + 600, // 10分钟后失效
from: "sender_address",
messages: [
{
address: "recipient_address",
amount: "1000000000",
stateInit: "optional_state_init",
payload: "optional_payload"
}
]
};
const options = {
onRequestSent: () => {
console.log("签名请求已发送");
}
};
const result = await connector.sendTransaction(transaction, options);监听钱包状态变化
通过 onStatusChange 方法监听钱包状态变化,如连接成功、恢复连接、断开连接等:
const unsubscribe = connector.onStatusChange(
(walletInfo) => {
console.log("钱包状态变化:", walletInfo);
},
(error) => {
console.error("监听错误:", error);
}
);
// 需要时取消监听
unsubscribe();事件监听系统
当特定事件发生时,SDK 会发送事件通知,DApp 可添加监听器处理相应逻辑:
window.addEventListener('OKX_TON_CONNECTION_COMPLETED', (event) => {
console.log('钱包连接成功', event.detail);
});
window.addEventListener('OKX_TON_TRANSACTION_SIGNED', (event) => {
console.log('交易签名成功', event.detail);
});主要事件类型:
- 连接相关:开始连接、连接成功、连接错误
- 恢复相关:开始恢复、恢复成功、恢复错误
- 交易相关:交易发送签名、签名成功、签名失败
- 连接断开:用户断开钱包连接
账户与钱包信息获取
获取账户信息
获取当前连接的账户详情:
const account = connector.account;
console.log("当前账户地址:", account.address);获取钱包信息
获取当前连接的钱包信息:
const walletInfo = connector.wallet;
console.log("钱包名称:", walletInfo.device.appName);
console.log("支持的功能:", walletInfo.features);错误处理与调试
SDK 提供了完整的错误代码系统,帮助开发者快速定位问题:
try {
await connector.connect();
} catch (error) {
switch(error.code) {
case 'USER_REJECTS_ERROR':
console.log('用户拒绝了连接请求');
break;
case 'NOT_CONNECTED_ERROR':
console.log('钱包未连接');
break;
default:
console.log('未知错误', error.message);
}
}常见问题
如何选择适合的集成方式?
根据您的开发环境选择安装方式:CDN 适合简单页面快速集成,NPM 适合复杂的项目结构。两者在功能上没有差异,均可实现完整的功能对接。
连接时推荐使用哪种唤醒方式?
在移动端环境中推荐使用 Universal Link 直接唤起应用,提供更流畅的用户体验。在桌面端则建议使用二维码方式,兼容性更好。
交易发送后如何确认状态?
可通过监听交易相关事件来获取实时状态更新,同时建议在前端界面提供明确的状态提示,增强用户体验。
如何处理用户拒绝签名的情况?
捕获 USER_REJECTS_ERROR 错误代码,并给用户友好的提示,说明交易需要签名才能继续,避免流程中断。
支持哪些网络环境?
SDK 支持主网和测试网环境,确保在开发阶段使用测试网进行调试,上线前切换至主网配置。
如何优化移动端体验?
在移动端使用深链接直接唤起钱包应用,减少用户操作步骤。同时合理设置会话有效期,平衡安全性与便利性。
通过本指南,您应该已经掌握了 TON Connect SDK 的核心功能和使用方法。在实际开发中,建议先通过测试网充分验证所有流程,确保生产环境的稳定性和安全性。