在Cocos Creator中使用Ton
1. 创建Telegram Mini App
1.1 如何创建一个Telegram Bot
在Telegram中搜索 @BotFather,这是一个官方的Bot管理员账号。
给@BotFather发送 /newbot 命令来创建一个新的Bot。
输入你的Bot名字,名字必须以"bot"结尾,比如 "MyAwesomeBot"。
输入Bot的用户名,必须是唯一的且以"bot"结尾,比如"my_awesome_bot"。
如果名字可用,@BotFather会返回你新创建Bot的访问Token,格式如: 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11。请妥善保管此Token,不要泄露给他人。
1.2 设置Mini App的相关参数
给@BotFather发送 /mybots 命令,选择你刚创建的Bot。
点击 "Bot Settings" - "Menu Button" 设置Bot的菜单按钮。可以设置一些快捷操作按钮。
给@BotFather发送 /newapp 命令,选择你刚创建的Bot,进行以下设置:
设置Mini App的Name,会在Telegram中展示。
设置Mini App的Description,简要描述Mini App的功能。
设置Mini App的Photo,尺寸为640x360 pixels。
设置Mini App的URL(需要https)。这是Mini App的实际访问地址。
设置成功后你将获得一个直接访问的链接,用户通过此链接可以直接打开Mini App。你也可以在聊天界面的附件菜单中找到刚创建的Mini App。
2. 导入cocos-telegram-miniapps拓展
在Cocos Creator中创建一个新的项目,选择Creator 3.8.3以上的版本
在项目中安装cocos-telegram-miniapps拓展
点击菜单-打开扩展管理
3.在Cocos中初始化cocos-telegram-miniapps拓展 此方法会自动加载telegram-web-app.js到页面中, 方便操作window.Telegram.WebApp对象
3. 使用TonConnectUI连接钱包
安装@ton/cocos-sdk库 为了使用TonConnectUI, 需要安装@ton/cocos-sdk库,此库已经打包好了TonConnectUI,可以直接在cocos 游戏引擎中使用
初始化TonConnectUI对象
连接钱包
4. 通过TonConnectUI发送Ton交易
初始化GameFi对象 为了方便操作Ton链上的Jetton合约sdk中封装好了方法,需要初始化一下
调用cocosGameFi对象中的方法,既可操作Ton链相关的交易 例如获取JettonWallet的Data
更多方法可以查看 https://github.com/ton-org/game-engines-sdk
5. Telegram Mini APP 相关操作
5.1 Telegram Mini APP 文档介绍
文档地址:https://core.telegram.org/bots/webapps
5.2 获取当前Telegram用户信息
导入cocos-telegram-miniapps 扩展后, 会在assets/cocos-telegram-miniapps/scripts/telegram-web.ts 中生成TelegramWebApp类,使用该对象既可调用TelegramMiniAPP的相关能力
如果页面在Telegram中打开,会自动初始化
window.Telegram.WebApp
对象通过该对象的
initData
可以获取到一个类型为string的json值,包含当前用户信息后端接口需要验证这个值以确保安全
验证通过后可获取当前用户信息并进行登录操作
验证逻辑参考文档:https://core.telegram.org/bots/webapps#validating-data-received-via-the-mini-app
例如typescript版本的校验如下:
在cocos环境中参考如下方式使用
5.3 调用分享
调用
TelegramWebApp.Instance.share(url,text)
方法打开该链接实现分享功能 注意:text字段会自动UrlEncode
5.4 调用支付
在Telegram Mini APP中, 除了可以使用Ton链的代币作为支付手段,也可以使用官方的Telegram Stars作为支付渠道
Telegram Stars 文档地址: https://core.telegram.org/bots/payments-stars
简单的介绍下Stars 支付流程,首先后端需要创建一个invoiceLink, 然后返回给前端, 前端调用TelegramWebApp.Instance.openInvoice(invoiceLink)
方法打开支付页面, 当用户点击支付的时候,Telegram bot会发送 pre_checkout_query
消息通知后端,后端需要处理是否允许支付,允许后支付成功Telegram bot 会发送successful_payment
消息后端收到后处理支付订单业务流程既可.
详细的业务代码可以参考demo 工程 https://github.com/CocosTechLabs/flappy-bird
5.5 直接获取TelegramWebApp对象
此方法可以直接返回TelegramWebApp对象, 方便使用其他能力。 具体方法可以参考官方文档 https://core.telegram.org/bots/webapps#initializing-mini-apps
6. 发布
在编译时候, 需要修改编译选项设置,调整Target Environments > 0.5% 否则可能会遇到打包后无法加载的问题
7. 社区交流
Telegram: https://t.me/CocosStudioCommunity
最后更新于