本文围绕 TRON 网络 核心关键词:TRON 钱包连接、DApp 集成、OKX Connect、签名交易、Mini App、TronWeb、深蓝色主题、USDT TRC20,帮助开发者在钱包集成场景下快速搭建安全、易用的链上体验。
1. 安装与初始化
步骤:仅需一条命令即可完成安装,接着配置 DApp 元数据、弹窗策略与主题。
npm install @okxconnect/ui1.1 创建连接 UI
| 名称 | 类型 | 说明 |
|---|---|---|
dappMetaData.name | string | 应用名称,不会被唯一标识 |
dappMetaData.icon | string | 180×180 PNG 图标 URL,SVG 不推荐 |
actionsConfiguration.modals | all / array\<string\> | 弹窗阶段:before、success、error |
actionsConfiguration.returnStrategy | string | App 钱包回调策略 |
tmaReturnUrl | back / none / deeplink | Telegram Mini Wallet 回跳方案 |
uiPreferences.theme | THEME.DARK / LIGHT / SYSTEM | 支持深蓝色主题设定 |
language | en_US … vi_VN | 默认 en_US |
返回 OKXUniversalConnectUI 实例后,即可开始连接钱包。
2. 连接 TRON 钱包
2.1 打造一键连接按钮
const connectParams = {
namespaces: {
tron: {
chains: ['tron:0x2b6653dc'], // 主网 chainId
defaultChain: 'tron:0x2b6653dc'
}
},
sessionConfig: {
redirect: 'tg://resolve' // Telegram Mini App 示例
}
}
const session = await okxUniversalConnectUI.connectWallet(connectParams)
console.log('连接成功:', session.namespaces.tron.accounts)成功返回:主题 topic、支持链列表、钱包地址数组、默认链等,可作为后续签名凭证。
3. 准备交易对象
先实例化 OKXTronProvider:
const tronProvider = new OKXTronProvider(okxUniversalConnectUI)4. 读取链上账户信息
参数 / 返回值:
- 参数:
chainId,如tron:mainnet - 返回值:
{ address: 'TXxxxxx...' }
const { address } = await tronProvider.getAccount('tron:mainnet')5. 消息与交易签名
5.1 签名消息 V1 & V2
// 示例:一句简单字符串
const signature = await tronProvider.signMessage('Hello TRON!', 'tron:mainnet')5.2 签名原始交易
用 TronWeb.transactionBuilder 构造并签名:
const tx = await TronWeb.transactionBuilder.sendTrx('TX...recipient', 1 * 1e6, address)
const signedTx = await tronProvider.signTransaction(tx, 'tron:mainnet')5.3 一键签名并广播
一步到位,省去手动广播:
const txHash = await tronProvider.signAndSendTransaction(tx, 'tron:mainnet')
console.log('交易哈希:', txHash) // 可用于浏览器跟踪6. 断开钱包
如需切换账户,先断开再重连:
await okxUniversalConnectUI.disconnectWallet()7. 事件监听与错误码
在钱包状态变化时,捕获事件:
okxUniversalConnectUI.on('session_update', (session) => {
console.log('钱包已更新:', session)
})| 常见错误码 | 说明 |
|---|---|
OKX_CONNECT_ERROR_CODES.UNKNOWN_ERROR | 未知异常 |
ALREADY_CONNECTED_ERROR | 重复连接 |
USER_REJECTS_ERROR | 用户拒绝 |
CHAIN_NOT_SUPPORTED | 链 ID 不受支持 |
METHOD_NOT_SUPPORTED | 钱包未实现方法 |
8. FAQ|开发者常见疑问
- Q:SVG 图标为什么无效?
A:OKX App 6.96+ 仅支持 PNG/ICO,建议使用 180×180 PNG 以确保兼容性。 - Q:Telegram Mini App 返回按钮未触发?
A:检查tmaReturnUrl是否设为tg://resolve,并在后台配置 BotFather 开关return_to_bot_url。 - Q:如何避免每次刷新页面都重连?
A:保存session.topic并使用reconnectSession(topic)自动恢复,仅需用户首次授权。 - Q:能否让主题随系统深浅色切换?
A:把uiPreferences.theme设为'SYSTEM',即可响应<meta name="color-scheme">。 - Q:TRON 交易总失败?
A:确保账户能量足够,或调用TronWeb.transactionBuilder.triggerSmartContract前使用TronWeb.trx.estimateEnergy估算费用。 - Q:USDT TRC20 转账示例?
A:构造函数参数类似,仅需将合约地址换为TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj,并传入 methodtransfer(address,uint256)。
9. 完整代码片段(示例应用)
以下 Flow 演示完整连接、读取、转账、断开的闭环:
import { OKXUniversalConnectUI, OKXTronProvider } from '@okxconnect/ui'
// STEP 1:初始化
const okxUI = new OKXUniversalConnectUI({
dappMetaData: {
name: 'TRON 小游戏',
icon: 'https://example.com/icon-180.png'
},
actionsConfiguration: { returnStrategy: 'none', modals: 'all' },
uiPreferences: { theme: 'SYSTEM' },
language: 'zh_CN'
})
// STEP 2:连接
const { session } = await okxUI.connectWallet({ namespaces: { tron: { chains: ['tron:0x2b6653dc'] } } })
// STEP 3:读取地址
const provider = new OKXTronProvider(okxUI)
const { address } = await provider.getAccount('tron:mainnet')
// STEP 4:USDT TRC20 转账 1 USDT
const txObj = await window.tronWeb.transactionBuilder.triggerSmartContract(
'TXLAQ63Xg1NAzckPwKHvzw7CSEmLMEqcdj',
'transfer(address,uint256)',
{ feeLimit: 20_000_000 },
[
{ type: 'address', value: 'TX...recipient' },
{ type: 'uint256', value: 1_000_000 }
],
address
)
const txID = await provider.signAndSendTransaction(txObj.transaction, 'tron:mainnet')
console.log('转账完成:', txID)
// STEP 5:断开
await okxUI.disconnectWallet()通过上述 TRON DApp 钱包连接 全流程,你可以在最短时间内以 深蓝色主题 打造高颜值、安全、流畅的交易入口,适用于 Telegram Mini App、Web、以及小程序等多端场景。