dru*_*cik 5 javascript node.js telegram telegram-bot telegram-api
我有一个处理付款的 Telegram 机器人。付款正常进行,但是,付款成功后我无法出示收据。
\n当前的行为是:
\n屏幕截图中的当前行为:
\n\n期望的行为:
\n\n所需的行为是从与@ShopBot 的聊天中截取的,它在 Telegram 文档中被称为测试工具。
\n我在 Telegram 文档中找到的关于如何处理“收据”的唯一提及是https://core.telegram.org/bots/ payments中的这两句话:
\n\n\n如果发票消息是在与 @merchantbot 的聊天中发送的,它将成为用户 \xe2\x80\x94 用户界面中的收据,他们可以随时打开此收据并查看交易的所有详细信息。
\n
\n\n如果消息已发送到任何其他聊天,则“付款”按钮将保留并可以再次使用。商家机器人是否真正接受多次付款取决于商家机器人。
\n
但是,我不明白如何在代码中实现这一点。据我所知,发票消息已发送到与我的机器人的聊天(如第一句中所示),因此它应该成为收据。
\n该机器人是用 Node.js 编写的,并使用 webhook 来处理消息。webhook 的代码部分对于这个问题很重要:
\nrouter.route(\'/\')\n .post(async (req, res) => {\n try {\n\n // if pre_checkout_query is defined, there was an attempt for payment\n if (req.body.pre_checkout_query) {\n // use answerPreCheckoutQuery Telegram method\n ...\n }\n\n const message = req.body.message || req.body.edited_message;\n\n // this means user\'s payment was successful\n if (message.successful_payment) {\n // success, deliver goods or services\n // send message about successful payment\n ...\n }\n\n\n } catch (err) {\n ...\n }\n })\nRun Code Online (Sandbox Code Playgroud)\n发票的发送sendInvoice方法如下:
\nconst url = `https://api.telegram.org/bot${process.env.TELEGRAM_BOT_TOKEN}/sendInvoice`;\nconst response = await axios.get(url, {\n params: {\n chat_id: chatID,\n title: \'SOME TITLE\',\n description: \'some decription\',\n payload: \'SOME-PAYLOAD\',\n provider_token: process.env.STRIPE_API_TOKEN,\n currency: \'EUR\',\n prices: JSON.stringify([\n {\n label: \'some label\',\n amount: 200,\n },\n ]),\n },\n});\nRun Code Online (Sandbox Code Playgroud)\nAPI 中用于处理付款的两种方法是sendInvoice和 ,answerPreCheckoutQuery但它们都不包含任何可能按照我想要的方式更改输出的参数。我错过了什么吗?
最后请注意:尽管如此,付款仍然有效。这只是我想要实现的表面改变。
\n| 归档时间: |
|
| 查看次数: |
2880 次 |
| 最近记录: |