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

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

 

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

  1. Создать бота.
  2. Подключить его к боту Яндекс.Кассы.
  3. Настроить своего бота для работы с платежами.

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

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

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

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

3. Например:

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

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

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

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

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

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

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

3. В открывшемся меню выберите Connect Яндекс.Касса: платежи.

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

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

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

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

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 с Update, который содержит объект SuccessfulPayment,
  • Яндекс.Касса пришлёт уведомление в магазин: тип уведомления зависит от вашего способа подключения к Кассе.

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

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

Платить через бота можно только с мобильного телефона и только с банковской карты, комиссии нет.

1. Отправьте боту @testymppbot команду /start, затем /invoice.

2. Отправьте номер телефона, который хотите пополнить: формат — 7 XXX XXX XX XX.

3. Укажите сумму, которую хотите положить на телефон. Можно выбрать из предложенных вариантов или вручную указать любую другую сумму.

4. Бот пришлёт готовый счёт. Проверьте данные и нажмите Pay.

5. Откроется страница оплаты: укажите данные карты и нажмите Заплатить.

Нюанс: некоторые магазины могут дополнительно спрашивать электронную почту или телефон.

6. Нажмите Pay и подтвердите платёж паролем своего банка.

7. Готово: проверяйте баланс.