如何实现Tonkeeper钱包交易确认后返回Telegram?
实现Tonkeeper交易确认后返回Telegram
1. 监听交易确认状态
connector.sendTransaction()返回一个Promise,交易被Tonkeeper确认并提交后会触发resolve,用户取消或交易失败则触发reject。我们可以利用这个回调时机执行返回Telegram的逻辑。
修改你的交易代码,添加回调处理:
// 推荐用async/await写法 async function executeTransaction() { try { const txResult = await connector.sendTransaction({ validUntil: Math.floor(new Date() / 1000) + 360, messages: [ { address: "0:b2a1ecf5545e076cd36ae516ea7ebdf32aea008caa2b84af9866becb208895ad", amount: "100000000" } ] }); // 交易确认成功,执行返回逻辑 navigateBackToTelegram(); } catch (err) { console.error("交易处理失败:", err); // 可选:用户取消交易时也返回Telegram navigateBackToTelegram(); } } // 或者用then/catch链式调用 connector.sendTransaction({ validUntil: Math.floor(new Date() / 1000) + 360, messages: [ { address: "0:b2a1ecf5545e076cd36ae516ea7ebdf32aea008caa2b84af9866becb208895ad", amount: "100000000" } ] }) .then(txResult => navigateBackToTelegram()) .catch(err => { console.error("交易失败:", err); navigateBackToTelegram(); });
2. 实现返回Telegram的逻辑
根据你的应用运行环境选择对应方案:
场景A:Telegram Web App(迷你应用)
如果你的应用是在Telegram内置的Web App中运行,直接使用官方提供的API关闭当前Web App即可回到聊天界面:
function navigateBackToTelegram() { // 关闭Web App,返回Telegram聊天窗口 Telegram.WebApp.close(); }
需要提前在页面中引入Telegram Web App的脚本:
<script src="https://telegram.org/js/telegram-web-app.js"></script>
场景B:外部网页/独立应用
如果是在外部网页中完成交易,通过Telegram的深度链接跳转回目标聊天或Bot:
function navigateBackToTelegram() { // 替换为你的Bot用户名或聊天链接 const telegramLink = "https://t.me/your_bot_username"; // 可选:携带交易哈希等参数,方便Bot后续处理 // const telegramLink = `https://t.me/your_bot_username?tx_hash=${txResult.hash}`; window.location.href = telegramLink; }
注意事项
- Tonconnect的
sendTransaction仅在交易**被钱包签署并提交(或区块链确认,取决于SDK配置)**后才会resolve,确保回调时机准确。 - 如果用户在Tonkeeper中主动取消交易,Promise会进入catch分支,可根据需求决定是否返回Telegram。
内容的提问来源于stack exchange,提问作者Pavel T.
相关产品推荐
相关产品推荐

