电报支付功能如何使用?
Telegram 内置的 Payment API 结合 Bot 平台,允许开发者和商家通过多种第三方支付提供商在聊天界面内直接发起和完成支付。用户在支持支付的 Bot 对话中点击“购买”或“支付”按钮,填写必要的订单与收货信息,选择支付方式并确认,即可完成支付;

Telegram 支付功能概述
Telegram 的支付功能基于 Telegram Bot Platform,以 Bot 为载体,通过 sendInvoice 方法向用户展示发票(Invoice),再由Payment Provider完成实际收款。支付流程分为三个阶段:
发起支付:Bot 调用 sendInvoice,将商品/服务信息以及支付金额、货币、提供商 token 等封装发送给用户。
用户确认:用户点击“支付”按钮,在内置的支付界面中填写收货地址(如有需要)、选择支付方式并确认支付。
结果回调:Telegram 向 Bot 发送 pre_checkout_query 回调,开发者验证无误后回答 answerPreCheckoutQuery;完成支付后,Telegram 再通过 successful_payment 字段将支付结果通知 Bot,开发者据此更新订单状态。
该机制让用户无须跳转到外部网页,即可在聊天窗口内完成安全、快捷的支付体验。
支付前的准备工作
注册并配置 Bot
-
创建 Bot:在 Telegram 中与 BotFather 对话,发送 /newbot 并按提示提供名字与用户名,获取 Bot Token。
-
启用支付:在 BotFather 发送 /setdomain(可选)设置您的 HTTPS webhook 域名,用于接收支付回调;
申请第三方支付提供商
Telegram 官方支持多家常见支付平台,不同地区可选:
-
Stripe(国际信用卡)
-
Payme / Click / MyKart(部分中亚国家)
-
Qiwi / YooMoney(俄罗斯)
-
bKash / M-PESA(南亚/非洲)
-
及其他如MercadoPago、Skrill等。
步骤:
在支付平台注册商家账号,完成 KYC(身份验证)与结算账户配置;获取平台提供的 provider token(通常在 API 密钥或集成设置中);配置您服务器的 HTTPS 证书,确保与 Telegram webhook 通信的安全。
搭建接收回调的服务器
部署一台支持 HTTPS 的 Web 服务,路径通常为 /webhook;
在 BotFather 中使用 /setwebhook 将 webhook URL 指向您的服务器;
代码中处理以下回调:
-
pre_checkout_query:验证收到的 payload 与订单一致,调用 answerPreCheckoutQuery;
-
successful_payment:读取支付结果,更新数据库中订单状态。

开发者集成流程
调用 sendInvoice 方法
POST https://api.telegram.org/bot<YOUR_BOT_TOKEN>/sendInvoice
Content-Type: application/json
{
"chat_id": 123456789,
"title": "限量周边 T 恤",
"description": "高品质纯棉纪念版 T 恤,支持全球配送",
"payload": "order_123456", // 开发者自定义的内含订单号的唯一值
"provider_token": "<PROVIDER_TOKEN>",
"start_parameter": "buy_tshirt",
"currency": "USD",
"prices": [
{ "label": "T 恤费用", "amount": 1990 }, // 单位是:最小货币单位,即美分
{ "label": "运费", "amount": 500 }
]
}
-
chat_id:目标用户或群组 ID(私聊支付需个人 chat);
-
title/description:向用户展示的商品标题与描述;
-
payload:开发者自定义字符串,用于在后续回调中校验订单;
-
provider_token:从支付平台获得的授权 token;
-
currency:ISO 4217 三位码;
-
prices:分项列出商品与附加费用,Telegram 会自动计算总价。
处理 PreCheckoutQuery 回调
当用户点击“支付”后,Telegram 发送 pre_checkout_query 到您的 webhook:
{
"update_id": 123456789,
"pre_checkout_query": {
"id": "1234567890123456",
"from": { "id": 1111111, ... },
"currency": "USD",
"total_amount": 2490,
"invoice_payload": "order_123456",
"shipping_option_id": "express",
"order_info": { "name": "张三", "phone_number": "+8613711112222", ... }
}
}
-
invoice_payload 应与 sendInvoice 中的 payload 一致;
-
验证无误后,调用 answerPreCheckoutQuery 允许支付:
POST https://api.telegram.org/bot<YOUR_BOT_TOKEN>/answerPreCheckoutQuery
{
"pre_checkout_query_id": "1234567890123456",
"ok": true
}
接收 SuccessfulPayment 回调
支付完成后,Telegram 再次发送包含 successful_payment 的消息:
{
"update_id": 123456790,
"message": {
"message_id": 100,
"from": { "id": 1111111, ... },
"chat": { "id": 1111111, ... },
"successful_payment": {
"currency": "USD",
"total_amount": 2490,
"invoice_payload": "order_123456",
"telegram_payment_charge_id": "XXXXXX",
"provider_payment_charge_id": "YYYYYY"
}
}
}
-
telegram_payment_charge_id 与 provider_payment_charge_id 用于对账;
-
在此回调中,开发者应将对应订单状态标记为已支付,并触发发货或服务提供流程。
用户支付体验流程
进入 Bot 对话:用户打开与商家 Bot 的私聊界面,点击“购买商品”按钮或菜单。
选择商品:Bot 列出可购买的商品/服务,用户点击相应选项。
预览发票:Telegram 弹出包含标题、描述、价格拆分的支付界面;
填写订单信息(如有需要):收货地址、联系方式等;
确认支付:选择信用卡、钱包余额或其他支付方式后,点击“支付”按钮;
查看支付结果:支付成功后,Bot 会收到回调并可发送“支付成功”确认消息;
交易完成:用户可在聊天记录中点击付款记录查看交易详情或申请退款。
支持的支付提供商
|
提供商 |
支持地区 |
接入要点 |
|---|---|---|
|
全球 |
支持多币种、信用卡、Apple Pay/Google Pay |
|
|
Payme/Click |
乌兹别克斯坦等 |
需本地手机号注册、支持本地钱包支付 |
|
Qiwi/YooMoney |
俄罗斯 |
俄罗斯境内钱包与银行卡 |
|
bKash/M-PESA |
孟加拉/肯尼亚 |
本地移动钱包 |
|
拉美 |
本地银行卡与钱包 |
|
|
支付宝/微信 |
中国 |
需申请国内支付授权 |
注意:不同提供商对于回调签名、货币单位、最低交易额等有各自要求,接入前请务必仔细阅读对应文档。
支付安全与合规
HTTPS 强制:支付回调必须使用 HTTPS,证书需为受信任 CA 签发;
签名与验证:部分平台会在回调中附带签名字段,需在服务器端校验以防篡改;
最小权限:Bot 服务器只需网络访问与最低限度存储权限;
PCI-DSS 合规:对接信用卡支付时,建议使用托管式支付(Stripe Checkout 等),避免收集敏感卡号;
日志与监控:对所有支付相关接口调用与回调做完整日志记录,定期核对对账单;
退款与纠纷:Bot 应提供 /refund 命令或客服联系方式,便于用户申请退款。
高级应用场景
订阅与续费
-
Bot 可调用 sendInvoice 时设置 is_flexible=true,支持用户在一段时间内多次支付以续订;
-
结合计划任务(Cron),在订阅到期前自动发送续费提醒发票。
分销与打赏
-
Bot 业务中可在 payload 中附加推荐者 ID,实现分销返佣;
-
使用 invoice_message 发送打赏选项,鼓励用户向内容创作者或群主打赏。
虚拟商品与数字内容
-
即时发货:支付成功后自动调用接口发放兑换码、电子票、下载链接;
-
防止盗刷:在 payload 中存储加密签名,确保下载链接只对支付者开放。
跨 Bot 合作
-
不同 Bot 之间可共享同一 Payment Provider,统一收款账户;
-
通过 Bot API 的 sendInvoice 可针对不同 Bot 传递不同 payload 以区分来源。

总结
通过本文的详细解读,您已掌握:
- Telegram 支付的三阶段流程(发起→确认→回调);
- BotFather 与 Payment Provider 的配置要点;
- sendInvoice、pre_checkout_query、successful_payment 的核心字段与调用;
- 支持的主流支付提供商及其地区适配;
- 安全合规要求与日志监控;
- 针对订阅续费、分销打赏、虚拟商品等高级场景的实现思路;
- 常见问题的排查与重试策略。
建议您:根据自身业务场景,灵活使用 Telegram Payment API,并结合稳定的第三方支付方案与完善的后端处理,打造安全、流畅的聊天内购物体验。
如何给用户提供退款?
在 Bot 中实现 /refund order_123456 命令;Bot 调用 Payment Provider 的退款 API(如 Stripe 的 refunds.create);在 Telegram 中发送退款确认消息,并更新订单状态为“已退款”。