You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Telegram bot支付成功后如何将Pay按钮替换为Receipt收据按钮

你遗漏了两个核心配置逻辑:

  • 调用sendInvoice接口时如果传入了自定义reply_markup参数,Telegram官方的自动按钮转换逻辑不会生效。只要你不手动配置该参数,平台会自动生成标准Pay按钮,私聊场景下用户完成支付后,客户端会自动将该按钮替换为收据按钮,不需要你做额外操作。
  • 确认你处理pre_checkout_query回调时,在10秒超时限制内正确调用了answerPreCheckoutQuery方法且ok参数设为true,否则支付流程的后续UI更新会被中断。

如果你有特殊需求必须自定义发票的按钮布局,可以在收到successful_payment回调时,主动调用editMessageReplyMarkup方法替换原发票消息的按钮,示例代码如下:

// 注意需要在调用sendInvoice时就将返回的发票消息ID和对应支付payload绑定存储
const invoiceMsgId = 你存储的对应发票消息ID;
const editUrl = `https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/editMessageReplyMarkup`;
await axios.get(editUrl, {
  params: {
    chat_id: chatID,
    message_id: invoiceMsgId,
    reply_markup: JSON.stringify({
      inline_keyboard: [
        [{ text: 'RECEIPT', callback_data: `receipt_${invoiceMsgId}` }]
      ]
    })
  }
});
// 后续继续处理发送支付成功提示、交付服务等逻辑

内容的提问来源于stack exchange,提问作者druskacik

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 22:06:01