如何构建 Telegram Mini App (TWA) 并集成 TON 生态
解决开发者在 Telegram 生态内快速构建原生体验 Web 应用的难题,提供从基础 API 调用、TON 钱包集成到安全鉴权及病毒式增长机制的完整实现方案。
为什么需要这个技能
Telegram Mini Apps (TWA) 允许开发者在 8 亿用户量级的社交平台中直接运行 Web 应用,无需用户跳出 App。与传统网页不同,TWA 需要深度适配 Telegram 的 UX 范式(如 MainButton、HapticFeedback)并处理特定的安全校验。
同时,得益于 TON 区块链的集成,TWA 成为了目前最快速实现 Web3 落地、加密货币支付和“点击赚币”(Tap-to-Earn)游戏的最佳入口。
适用场景
- Web3 应用:构建 DeFi 工具、NFT 市场或基于 TON 的钱包管理工具。
- 社交游戏:开发具备邀请机制、排行榜和每日奖励的病毒式传播小游戏。
- 商业化服务:利用 Telegram Stars 或 TON 支付实现数字产品销售。
- 企业工具:在 Telegram 内部提供轻量级 CRM 或预约系统。
核心工作流
1. 基础环境搭建
引入官方 JS SDK 并初始化应用,确保应用能够正确适配 Telegram 的主题颜色和视口大小。
<script src="https://telegram.org/js/telegram-web-app.js"></script>
<script>
const tg = window.Telegram.WebApp;
tg.ready();
tg.expand(); // 展开至全屏
</script>
2. 安全鉴权(后端校验)
绝对禁止在后端直接信任前端传来的 initDataUnsafe。必须通过 initData 的哈希值与 Bot Token 进行服务端校验,防止用户伪造身份。
// Node.js 校验核心逻辑
const secretKey = crypto.createHmac('sha256', 'WebAppData').update(botToken).digest();
const calculatedHash = crypto.createHmac('sha256', secretKey).update(dataCheckString).digest('hex');
if (calculatedHash !== hash) throw new Error('Invalid initData');
3. TON 钱包与支付集成
使用 @tonconnect/ui-react 快速实现钱包连接,并通过 sendTransaction 发起 TON 代币支付。
import { TonConnectButton, useTonConnectUI } from '@tonconnect/ui-react';
function PaymentButton({ amount, to }) {
const [tonConnectUI] = useTonConnectUI();
const handlePay = async () => {
const transaction = {
validUntil: Math.floor(Date.now() / 1000) + 60,
messages: [{ address: to, amount: (amount * 1e9).toString() }]
};
await tonConnectUI.sendTransaction(transaction);
};
return <button onClick={handlePay}>Pay {amount} TON</button>;
}
4. 适配原生 UX 模式
使用 tg.MainButton 处理主提交动作,并利用 HapticFeedback 提升交互质感。
tg.MainButton.setText('确认支付');
tg.MainButton.show();
tg.HapticFeedback.impactOccurred('light');
下载和安装
下载 telegram-mini-app 中文版 Skill ZIP
解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md。
你可能还需要
暂无推荐