我有一个处理付款的电报机器人。付款工作正常,不过,我未能在付款成功后出示收据。
目前的行为是:
当前屏幕截图上的行为:

期望的行为:

想要的行为是从@ShopBot聊天中截取出来的,这是电报文档中提到的测试工具。
关于“收据”是如何处理的,我在电报文档中唯一提到的是https://core.telegram.org/bots/payments的这两句话:
如果发票消息是在与@merchantbot的聊天中发送的,则它将成为用户界面中的收据--用户可以随时打开该收据,并查看事务的所有细节。如果消息被发送到任何其他聊天中,则“支付”按钮将保持不变,并可再次使用。这取决于商户机器人是否实际接受多项付款。
但是,我不明白如何在代码中实现这一点。据我所知,发票信息已经发送到聊天与我的机器人(如在第一句),所以它应该成为一份收据。
机器人是用Node.js编写的,并使用web钩子来处理消息。对此问题很重要的web钩子代码部分:
router.route('/')
.post(async (req, res) => {
try {
// if pre_checkout_query is defined, there was an attempt for payment
if (req.body.pre_checkout_query) {
// use answerPreCheckoutQuery Telegram method
...
}
const message = req.body.message || req.body.edited_message;
// this means user's payment was successful
if (message.successful_payment) {
// success, deliver goods or services
// send message about successful payment
...
}
} catch (err) {
...
}
})发票使用sendInvoice方法发送,如下所示:
const url = `https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/sendInvoice`;
const response = await axios.get(url, {
params: {
chat_id: chatID,
title: 'SOME TITLE',
description: 'some decription',
payload: 'SOME-PAYLOAD',
provider_token: process.env.STRIPE_API_TOKEN,
currency: 'EUR',
prices: JSON.stringify([
{
label: 'some label',
amount: 200,
},
]),
},
});API中用于处理支付的两个方法是sendInvoice和answerPreCheckoutQuery,但它们都不包含任何可能以我想要的方式更改输出的参数。我是不是遗漏了什么?
最后请注意:尽管如此,付款还是有效的。这只是我想要实现的一个表面上的改变。
发布于 2021-09-01 07:06:11
我也遇到了这个问题,请指定一个参数:start_ this =‘unique-string’。
https://stackoverflow.com/questions/69003183
复制相似问题