如何在Televerse中监听Telegram Bot的SuccessfulPayment消息?
如何在Televerse中监听SuccessfulPayment并获取对象
在Televerse中,Telegram发送的SuccessfulPayment对象会被包含在消息更新的Message结构里,你可以通过以下步骤监听并获取它:
- 监听消息更新并判断支付对象
使用onMessage回调捕获所有消息,然后检查消息中是否包含successfulPayment字段:
import 'package:televerse/televerse.dart'; void main() { final bot = Bot("你的机器人令牌"); bot.onMessage((ctx) { // 提取SuccessfulPayment对象 final successfulPayment = ctx.message.successfulPayment; if (successfulPayment != null) { // 处理支付成功逻辑 print("支付完成,订单负载: ${successfulPayment.invoicePayload}"); print("支付金额: ${successfulPayment.totalAmount} ${successfulPayment.currency}"); // 可按需访问其他字段,比如配送选项ID、支付提供商等 if (successfulPayment.shippingOptionId != null) { print("选中的配送选项ID: ${successfulPayment.shippingOptionId}"); } } }); bot.start(); }
- 核心说明
ctx.message.successfulPayment就是Telegram返回的支付成功对象,仅当用户完成支付后该字段才会非空。- 你可以直接访问该对象的所有属性,比如
invoicePayload(创建发票时传入的自定义订单数据)、totalAmount(最小货币单位计算的总金额,如人民币分)、currency(ISO 4217货币代码)等。
无论你的机器人采用长轮询还是Webhook模式,逻辑完全一致——Televerse会自动解析更新并将SuccessfulPayment挂载到Message对象中。
内容的提问来源于stack exchange,提问作者user23142841
相关产品推荐
相关产品推荐

