Как настроить платежи через бота в Telegram

Скачать инструкцию в PDF

 

Чтобы принимать платежи в Telegram, нужно сделать три вещи:

Для настройки платежей через бота потребуется параметр shopId — он появится у вас после подключения к Яндекс.Кассе.

Как создать бота

1. В Telegram откройте диалог с @BotFather, отправьте ему команду /start, затем — /newbot.

2. Придумайте боту имя (name) и юзернейм (username). Имя бота будет в списке контактов и наверху чата, оно может быть неуникальным. Юзернейм будет в короткой ссылке на бота, он должен быть уникальным.

3. Например:

Яндекс.Касса — имя бота

YandexCheckoutPaymentBot — это юзернейм бота

4. Если юзернейм не занят, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту, его нельзя сообщать посторонним (даже службе поддержки Кассы или Telegram).

Когда ключ у вас, бот готов: теперь можно добавить иконку и настроить диалог с клиентами. Одновременно можно настраивать платежи через бота.

Как подключить своего бота к боту Кассы

1. Отправьте @BotFather команду /mybots. Нажмите на имя своего бота.

2. Откроется панель управления ботом. Выберите BotSettings — Payments.

3. Если хотите сразу настроить настоящие платежи, в открывшемся меню выберите Connect Яндекс.Касса: платежи. Если хотите сначала протестировать — выберите Connect Яндекс.Касса: тест.

Если выбран бот Яндекс.Касса: платежи

4. Откроется диалог с ботом Яндекс.Кассы.Отправьте ему команду /start, затем ваш shopId (его можно скопировать в личном кабинете Яндекс.Кассы).

5. Бот спросит ваш shopArticleId. Если не знаете этот параметр, отправьте в ответ 0 (ноль).

Если выбран бот Яндекс.Касса: тест

4. Откроется диалог с тестовым ботом Яндекс.Кассы. Отправьте ему команду /start. В ответ бот пришлёт вам число — идентификатор тестового магазина (он заменяет shopId, который будет нужен при настройке настоящих платежей). Отправьте это число боту в ответ.

5. После этого бот пришлёт тестовый shopArticleId. Отправьте это число боту в ответ. В следующем сообщении бот пришлёт настройки тестового магазина и данные тестовой карты для оплаты.

6. Вернитесь к диалогу с @BotFather. Он пришлёт вам токен, который нужен для выставления счетов. Токен всегда можно посмотреть через BotSettings — Payments.

Как настроить бота для работы с платежами

Обратите внимание: дальше речь пойдёт о настройке бота через API Telegram. Если вы используете конструктор ботов (Manybot, Botobot, Botmaker или любой другой), следуйте его инструкциям.

1. Реализуйте метод sendinvoice из платёжного API Telegram: в ответ на этот запрос ваш бот будет отправлять клиенту счёт на оплату. В счёте должна быть стоимость, название, описание товара, параметр payload и параметр provider_token — это тот самый токен, который выдал @BotFather после подключения вашего бота к боту Кассы.

Посмотреть пример запроса sendinvoice

Если вы настраивали фискализацию через Яндекс.Кассу, нужно передавать в Кассу данные для фискализации. Для этого добавьте в запрос следующие параметры:

  • need_phone_number или need_email
  • send_email_to_provider (если вы запрашивали у клиента электронную почту) или send_phone_number_to_provider (если вы запрашивали у клиента телефон),
  • provider_data, а в нём объект receipt. Подробности — в API Яндекс.Кассы (смотрите раздел Атрибуты — receipt).
Посмотреть пример

Телефон или почту вы можете запросить у клиента раньше, в диалоге с ботом. Тогда первые два параметра не нужны, достаточно provider_data с объектом receipt.

Посмотреть пример

Подробнее про 54-ФЗ в работе с Кассой

Если вам нужно получить от клиента адрес для доставки, реализуйте метод Shipping Query. Когда пользователь укажет адрес, на этот запрос нужно ответить методом answerShippingQuery. В этом методе нужно передать способы доставки и их цены.

2. Когда пользователь подтвердит платёж, Telegram пришлёт вам webhook с Update, который содержит объект PreCheckoutQuery. На этот запрос нужно ответить в течение 10 секунд, вызвав метод answerPreCheckoutQuery.

3. Если платёж пройдёт успешно, вы получите два уведомления: от Telegram (webhook с объектом SuccessfulPayment) и от Яндекс.Кассы (email). Бота можно запрограммировать так, чтобы после успешного платежа он совершал определённое действие: например, подключал покупателю услугу или отправлял контент.

В объекте SuccessfulPayment из уведомления от Telegram найдите параметр provider_payment_charge_id: там будет номер транзакции в Яндекс.Кассе. Этот номер лучше сохранить: по нему можно будет найти платёж в личном кабинете.

Как выглядит платёж через бота в Telegram

Обратите внимание: оплата через бота не поддерживается в десктопной и веб-версии Telegram — только в приложении.

Для примера возьмём оплату через тестовый бот Кассы — @YandexCheckoutTestShopBot.

1. Нажмите Запустить (команда /start). Вам придёт сообщение с инструкцией и кнопкой оплаты. В тестовом боте оно выглядит так:

2. Нажмите Заплатить.

3. Откроется платежая форма:

4. Введите данные карты и нажмите Заплатить.

5. На странице Checkout нажмите Pay.

6. После успешной оплаты @YandexCheckoutTestShopBot отправит в чат номер транзакции (для своего бота вы сможете запрограммировать другое действие).