Перенаправить пользователя в Telegram Bot на внешнюю ссылку с помощью POST-запроса - PullRequest
2 голосов
/ 30 мая 2020

Поскольку я новичок в этом материале POST / GET HTTP, я могу ошибаться, поэтому я задаю свой вопрос двумя способами. Может быть, один способ будет лучше другого :)

Я разрабатываю Telegram Bot с помощью PyTelegramBotAPI, и он должен включать онлайн-платеж. Для онлайн-оплаты мне нужно, чтобы пользователь перешел по ссылке с помощью метода POST (это внешняя ссылка + мне нужно передать данные формы), но это вызывает у меня трудности.

I.

В моем коде я выполняю следующее:

req = requests.post(url=url, data=data)

Где url - это URL-адрес веб-сайта, на который должен быть перенаправлен клиент, а data - это данные, которые ему необходимо передать с запросом POST при перенаправлении .

Он отлично работает как запрос в Python, но, очевидно, не может перенаправить клиента на нужный веб-сайт.

Я попытался сгенерировать URL-адрес и передать его клиенту используя

url = url + urlencode(data=data)

Где url - это снова URL-адрес веб-сайта. Но в этом случае сайт сообщает мне, что использованный метод неправильный. Я предполагаю, что ссылка становится запросом GET вместо запроса POST.

Как я могу перенаправить клиента на эту ссылку с помощью метода POST?

II.

Другой способ Я задаю этот вопрос так:

Компания, которая обрабатывает онлайн-платежи, требует, чтобы они выполнялись с использованием следующей формы HTML:

<form action=”https://securesandbox.webpay.by/” method="post">
    <input type=”hidden” name=”*scart” >
    <input type=”hidden” name=”wsb_storeid” value=”11111111”>
    <input type=”hidden” name=”wsb_order_num” value=”ORDER-12345678”>
    <input type=”hidden” name=”wsb_currency_id” value=”BYN”>
    <input type=”hidden” name=”wsb_version” value=”2”>
    <input type=”hidden” name=”wsb_seed” value=”1242649174”>
    <input type=”hidden” name=”wsb_signature” value=”124264917411111111ORDER-123456781BYN10123456”>
    <input type=”hidden” name=”wsb_test” value=”1”>
    <input type=”hidden” name=”wsb_invoice_item_name[0]” value=”Товар 1”>
    <input type=”hidden” name=”wsb_invoice_item_quantity[0]” value=”2”>
    <input type=”hidden” name=”wsb_invoice_item_price[0]” value=”10”>
    <input type=”hidden” name=”wsb_total” value=”10”>

    <input type="submit" value="Купить">
</form>

Это сработало бы, если бы я использовал HTML страниц, но поскольку мое веб-приложение является ботом Telegram, это не сработает. Поэтому мне нужно автоматически сгенерировать эту форму HTML в Python (а именно, мне нужно изменить поля «значения» для каждого платежа).

Как я могу имитировать эту форму HTML в моем Telegram Бот и перенаправить клиента после какого-то триггера?

...