知识维护 · 内容更新 · 长期阅读ARTICLE MAINTENANCE JOURNAL

Telegram机器人接入支付方法全指南:官方安全收款实操教学

官方网站中文教程,手把手教您在Telegram机器人中接入官方支付功能,从BotFather配置到代码调用sendInvoice,安全高效实现聊天内收款。

阅读提示建议先浏览文章结构,再按需深入阅读具体段落。

Telegram 机器人不仅能聊天、查资料,还能在聊天窗口内直接接收订单和付款。接入支付功能后,您可以构建预约收费、在线商城、付费内容等业务。本文从官方安全视角出发,为您完整介绍 Telegram 机器人接入 Telegram 支付的步骤,包括机器人配置、支付提供商绑定、API 调用与测试环节。

一、准备工作:账号、机器人、支付服务商

在开始前,请确保满足以下条件:

  • Telegram 正式账号 – 必须使用官方客户端注册,并开启两步验证以保证账户安全。
  • 一个已创建好的机器人 – 通过 @BotFather 创建,您需要掌握机器人的 HTTP API 令牌。
  • 支持的支付服务商 – 例如 Stripe、YooMoney、Sberbank、Payout 或 Telepay 等。不同地区的服务商支持范围不同,您可在 BotFather 中查看最新列表。
  • 基本的代码调用能力 – 通常使用 Telegram Bot API 的 sendInvoice 方法,示例代码可参考 Python 或 Node.js。

安全提示:全程只通过 Telegram 官方客户端操作,不要向任何第三方透露 API 令牌(包括 PayPal 或外包开发人员),否则您的机器人支付功能可能被盗用。

二、通过 BotFather 创建并配置机器人

若您还没有机器人,请按以下步骤创建:

  1. 在 Telegram 中搜索 @BotFather(需带一个官方认证蓝标),点击开始对话。
  2. 发送 /newbot,按提示填写机器人的显示名称和用户名(必须唯一,以 bot 结尾)。
  3. 创建成功后,BotFather 会返回 API 令牌,例如 123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11,请立即复制并妥善保管。
  4. 若已有机器人,发送 /mybots,选择目标机器人,即可进入配置菜单。

三、在 BotFather 中激活支付功能

支付功能要求机器人先在 BotFather 中绑定支付提供商,具体操作如下:

  1. 在 BotFather 对话中,对目标机器人发送 /setpayments
  2. 选择一个支付提供商(例如 Stripe、YooMoney),或输入“Telepay”使用 Telegram 自家支付通道。
  3. 按照提供商要求填写商家信息或 API 密钥。常用的验证方式:
    • Stripe:要求提供 publishable keysecret key,可用测试密钥进行沙盒验证。
    • YooMoney:要求连接店铺账号,可能需要回调 URL。
    • Telepay:直接使用 Telegram 账户,无需额外密钥。
  4. 绑定成功后,BotFather 会返回一条包含 provider_token 的消息,这就是您在代码中调用的支付令牌。

注意:支付令牌与机器人 API 令牌不同,二者不可混淆。若您的服务商要求上传证书或隐私政策链接,请按提示设置。

四、在机器人代码中调用 sendInvoice 方法

支付功能的本质是调用 sendInvoice 接口,向用户发送一张电子发票。以下是一个基于 Python 的简化示例(使用 python-telegram-bot 库):

from telegram import InlineKeyboardButton, InlineKeyboardMarkup, LabeledPrice
from telegram.ext import Application, CommandHandler

# 请替换为自己的参数
BOT_TOKEN = "你的机器人令牌"
PROVIDER_TOKEN = "你的支付令牌"

async def invoice(update, context):
    chat_id = update.effective_chat.id
    title = "虚拟商品"
    description = "描述您的商品或服务"
    payload = "自定义数据,比如订单号"
    currency = "USD"
    prices = [LabeledPrice("价格", 100)]  # 100 表示 1.00 美元,金额以最小货币单位(分)表示

    await context.bot.send_invoice(
        chat_id,
        title,
        description,
        payload,
        provider_token=PROVIDER_TOKEN,
        currency=currency,
        prices=prices
    )

app = Application.builder().token(BOT_TOKEN).build()
app.add_handler(CommandHandler("pay", invoice))
app.run_polling()

对于其他开发语言,原理相同,核心参数包括:chat_idtitledescriptionpayloadprovider_tokencurrencyprices。更多细节请参考官方 sendInvoice 文档

实用建议:可以将 prices 参数扩展为多维数组,实现多级套餐;也可以添加 provider_data 字段透传支付服务商所需的自定义数据。

五、测试支付流程并排查常见问题

正式部署前,务必在测试环境验证支付链路:

  1. 给您的机器人发送 /pay(或您定义的其他命令),点击收到的发票消息下方的“支付”按钮。
  2. 选择支付方式(银行卡、服务商点卡等),输入测试卡号(Stripe 测试卡为 4242 4242 4242 4242)。
  3. 若支付成功,应收到成功回执;若失败,请检查下列常见原因:
    • Token invalid – 支付令牌复制错误或未绑定成功,重新在 BotFather 中生成。
    • Currency not supported – 所选币种不被支付提供商支持,更换为 USD 或欧元等主流币种。
    • Shipping address required – 某些商品需要收货地址,可在请求中设置 need_shipping_address=True
    • Provider error – 服务商返回错误,检查服务商账户状态或沙盒密钥是否过期。

支付回调(如订单确认)请使用 Bot API 的 pre_checkout_querysuccessful_payment 来验证并完成发货。

六、安全与合规提醒

接入支付后,您的机器人将处理真实资金,必须严格遵循以下原则:

  • 绝不将支付令牌提交至版本库,应存储在环境变量或加密配置中,并设置访问权限。
  • 使用 HTTPS 回调,并验证 Telegram 发送的请求签名,防止伪造订单。
  • 定期审计机器人权限,撤销不再需要的管理员权限,避免内部人员滥用。
  • 遵守当地法律法规,禁止用于非法商品或服务,否则 Telegram 会封禁机器人并冻结资金。

总结

接入 Telegram 支付并不复杂,只需在 BotFather 中开启支付功能并正确调用一个 API 方法。本教程从官方安全角度出发,教你完成了从零到一的全过程。建议先用测试环境走通流程,再切换正式令牌。

若您在配置中遇到问题,欢迎在本网站分类下寻找更多实用教程,或通过官方开发者社区获取支持。

FAQ

最新版本下载

常见问题

Telegram 机器人接入支付功能是免费的吗?

Telegram 本身不收取支付服务费,但您选择的支付服务商(如 Stripe、YooMoney)通常会按交易金额收取一定比例的手续费。具体费率请以服务商官网为准。

哪些国家或地区支持 Telegram 支付?

Telegram 支付目前覆盖范围以支付服务商的支持列表为准。Stripe 支持的国家较多,YooMoney 主要面向俄罗斯和独联体国家,Telepay 则支持部分东南亚国家。您可在 BotFather 的 /setpayments 中查看当前可用的提供商,或咨询服务商客服。

如何给用户退款或处理拒付?

您可以通过 Bot API 的 refundStarPayment(针对 Telegram 星光支付)或调用支付服务商的退款接口(如 Stripe 的 Refund API)进行退款。若收到拒付(chargeback),建议先与买家沟通,再通过服务商后台提交证据。

我可以让用户选择多种货币支付吗?

可以。在调用 sendInvoice 时,currency 参数可以设置为服务商支持的任意货币,如 USD、EUR、RUB 等。但要注意,如果服务商不支持所选币种,会返回错误提示。