Андрей Смирнов
Время чтения: ~13 мин.
Просмотров: 0

Как подключить систему платежей в Telegram чтобы получать прибыль с ботов

«T-commerce»: как работают онлайн-продажи через Telegram

Прошлым летом Telegram выпустил новый API с поддержкой платежей. С тех пор мессенджер стал еще и каналом продаж, который позволяет компаниям не только общаться с клиентом, но и принимать оплату за свои товары и услуги прямо в диалоговом окне. Яндекс.Касса первой среди российских платежных сервисов поддержала эту функцию. Принимать платежи в Telegram через Кассу сразу стали индивидуальные предприниматели и небольшие организации: флористы, магазины чая и кофе, тренеры, организаторы обучающих курсов, благотворительные фонды и многие другие (тут можно почитать отзывы и примеры). Но для более крупных компаний с потоком заказов был один стоппер.

Дело в том, что до недавних пор у Telegram-продаж была одна особенность, не учитывающая чисто российскую специфику электронной торговли, — обязательную отправку онлайн-чеков (требование 54-ФЗ, известного как закон об онлайн-кассах). У Яндекс.Кассы сразу появился специальный протокол, который поддерживал работу с новым кассовым оборудованием и автоматизировал передачу чеков. Но в Telegram такая автоматизация технически не поддерживалась, и продавцы должны были настраивать передачу чеков сами (считайте, плясать с бубном). И вот недавно мессенджер пошел навстречу российскому рынку электронной коммерции и реализовал с Яндекс.Кассой совместный проект, дополнив свой протокол важным элементом — появилось специальное поле для дополнительной информации платежному провайдеру. Теперь продавать через Telegram стало удобно с точки зрения не только клиентского сервиса, но и автоматизации передачи онлайн-чеков (то есть соблюдения 54-ФЗ). Под катом расскажу, что нужно сделать, чтобы запустить продажи в Telegram, принимая платежи через Яндекс.Кассу.

Если вам еще не приходилось ничего покупать через мессенджер, сценарий продаж может быть неочевиден. В одних случаях продажа начинается на сайте, а завершается в Telegram. В других же все обслуживание клиента идет через Telegram-бота. Вот как это будет выглядеть пошагово:

  1. Покупатель кладет в корзину товар на сайте магазина, а на этапе оплаты выбирает платеж через Telegram (вариант второй — когда товар или услугу клиент изначально выбирает с помощью Telegram-бота; именно такой сценарий рассмотрим на рисунке ниже).
  2. Бот магазина выставляет покупателю счет.
  3. Telegram обменивается информацией о выставленном счете с платежным ботом Яндекс.Кассы.
  4. Плательщик вводит платежную информацию не покидая приложения Telegram.
  5. Бот Я.Кассы проводит платеж и сообщает об успешном платеже в бэкэнд магазина и в Telegram.
  6. Telegram уведомляет плательщика и бота магазина.

Стоит ли говорить, что скорость выполнения пп. 1-2 зависит от клиента (выбор товара, ввод платежной информации), а процессы из пп. 3-6 происходят почти мгновенно?

Пример использования платежного бота в сервисе русского языка «Ты справишься!» (@UchenyjBot)

Размер среднего чека при оплате в Telegram

Средний чек при оплате в мессенджере через Яндекс.Кассу составляет 700 рублей — сопоставимый со средним чеком при платеже на сайте. Абсолютный показатель у каждого бизнеса свой. К примеру, средний чек в музыкальной школе, которая принимает оплату через Кассу в Telegram, — 4000 рублей. Подписка на сервис консультаций по русскому языку, процесс оплаты которого показан выше, стоит 149 рублей.

Когда Telegram только выпустил API c поддержкой платежей, казалось, что этот канал продаж будет востребован среди средних и крупных мерчантов, которым под силу написать своего бота, учитывающего все сценарии общения магазина с пользователем. Но на самом деле продавать в Telegram большой ритейл не пошел, зато пришли небольшие сервисные компании и маленькие магазины.

Чтобы настроить продажи в Telegram через Яндекс.Кассу, нужно сделать три главных вещи:

  1. Зарегистрируйтесь в Яндекс.Кассе: подпишите договор и получите идентификатор магазина (shopId).
  2. Создайте Telegram-бота, который будет общаться с клиентами. Все боты создаются через @Botfather, но их поведение можно программировать самостоятельно или через конструкторы. Готовый бот нужно активировать через чат с @BotFather.
  3. Подключить своего бота к платежному боту Яндекс.Кассы. Для этого во вкладке «Payments» («Платежи») в меню вашего бота при диалоге с BotFather выберите Яндекс.Кассу в качестве платежного провайдера. Затем начните диалог с новым ботом через /start, укажите shopId из личного кабинета Яндекс.Кассы (он назначается при подключении мерчанта, у каждого он свой) и реализуйте метод sendinvoice из платёжного API Telegram. Как только бот будет настроен, прием оплаты включится автоматически.

В ответ на запрос ваш бот будет отправлять клиенту счет на оплату. В счете должны быть стоимость, название, описание товара, параметр payload и параметр provider_token — это тот самый токен, который выдал @BotFather.

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

Итак, готово почти все, кроме отправки чека.

В чем суть закона об онлайн-кассах

В июле 2017 года вступил в силу закон 54-ФЗ, суть которого в необходимости онлайн-отчета перед налоговой за каждую продажу через интернет. То есть любой работающий с физическими лицами интернет-магазин обязан использовать кассовую технику нового поколения, которая сможет отправлять электронные чеки в налоговую инспекцию после каждого платежа (такую кассовую технику (ККТ) можно купить или арендовать). Чеки передаются в налоговую и покупателю по интернету через оператора фискальных данных — ОФД (поэтому касса должна быть всегда онлайн). В чеке должны быть название товара, цена, количество, ставка НДС, данные о продавце и о самой кассе.

До недавнего времени мерчантам нужно было следить за продажами через бот и проводить фискализацию самостоятельно. Что это означало на практике? Все то же, как если бы продажи шли через офлайн: бот передавал продавцу уведомление о продаже, продавец вручную вбивал в свою кассу все проданные товары и передавал чек по тем контактам, которые покупатель оставил перед оплатой.

За рамками Telegram Яндекс.Касса как сервис уже умела автоматически передавать данные об онлайн-платежах на 70 с лишним моделей ККМ всех популярных поставщиков. Но в платежном боте Кассы такой функции не было из-за ограничений на размер данных, которые наш бот мог получить от бота мерчанта. Все наладилось в феврале, когда Telegram доработал свой протокол для платежных ботов: появилось поле для дополнительной информации к платежному провайдеру — Provider data, и мы реализовали эту возможность у себя. Именно это поле требуется для передачи данных о составе чека. Я.Касса умеет разбирать это поле, поэтому мерчанту остается только правильно настроить своего бота, дополнив его данными о составе чека.

Ниже — код запроса без прикрепленного чека, то есть как было до февраля:

{  "chat_id":147426403,  "title": "Test",  "description": "Test",  "payload":{},  "provider_token":"390540012:LIVE:1514",  "currency": "RUB",  "start_parameter":"mybot",  "prices":[{"label":"Ля-Ля","amount": 6100}] }

Если добавить информацию о составе чека для дальнейшей обработки и фискализации, то запрос к Telegram на отправку счета с дополнительной информацией для платежного бота Яндекс.Кассы будет выглядеть так (внимание на поле Receipt – это и есть данные состава чека):

{  "chat_id":147426403,  "title": "Test",  "description": "Test",  "payload":{},  "provider_token":"390540012:LIVE:1514",  "currency": "RUB",  "start_parameter":"mybot",  "prices":[{"label":"Ля-Ля","amount": 6100}],  "provider_data":{             "receipt":{    "email":"example@example.com",             "items":[             {         "description": "Товар A",         "quantity": "1.00",         "amount": {                 "value": "100.00",         "currency": "RUB"         },         "vat_code": 1             }             ]             }  } } 

Из обязательных данных в запросе:

  • need_phone_number или need_email — они говорят Telegram, что после клика по счету нужно запросить номер телефона (need_phone_number) и/или email (need_email);
  • send_email_to_provider (если вы запрашивали у покупателя email) или send_phone_number_to_provider (если запрашивали номер телефона) — указывают на необходимость отправки введенных значений платежному провайдеру;
  • provider_data с объектом receipt — в составе чека должен быть перечень товарных позиций или услуг, их количество и цены. Все как в обычном чеке.

Чтобы после оплаты в Telegram Я.Касса автоматически «сигналила» вашему кассовому аппарату, что покупателю надо отправить чек (сам чек отправляет ОФД, обслуживающий вашу кассу), нужно сделать следующее:

  1. В личном кабинете Я.Кассы указать настройки своего кассового аппарата, совместимого с Яндекс.Кассой (сейчас Касса поддерживает несколько десятков разновидностей ККТ — например, Атол и Атол Онлайн, Orange Data, УМКА, СтарРус, Эвотор, Дримкас, Искра, Штрих-М, Счетмаш, Инкотекс и другие).
  2. Если у вас еще нет Telegram-бота, создайте его и подключите к боту Яндекс.Кассы по этой инструкции.

Если у вас есть опыт создания платежного бота или остались вопросы о том, как настроить оплату — добро пожаловать в комментарии.

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

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

MHeIDuQ8uXmF-EFO_ecO5j8eIq8.png

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

7RF3ovpiIDU1bmIPbun5c3iMknY.png

3. Например:

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

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

qRyodwpV3vkolb4pAtM1OTmDn_Y.png

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

zZRIem1WX-C5Raj02_Vkow83Y-4.png

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

Платежи в Телеграмм — основные особенности

Алгоритм платежных операций таков:

  • Создатель робота подключает необходимые API-ключи, основываясь на документации Payment API. Также необходимо выбрать провайдера для обработки транзакций из числа подключенных к системе, основываясь на величине комиссий или иных предпочтениях.
  • После всех необходимых настроек для владельцев чат-роботов и их покупателей становится доступна кнопка Pay.
  • Подписчик бот-сервиса, совершая платеж, указывает свои платежные данные и адрес доставки (при необходимости). Эти данные будут привязаны к аккаунту плательщика, если в настройках включена двухэтапная авторизация. Также доступны мобильные платежи Android и Apple.
  • Денежные операции проходят напрямую между двумя сторонами, клиентом и провайдером. Телеграмм не взимает комиссий и не принимает участия в обработке транзакций, а лишь предоставляет Payment-платформу. Данные карт не будут доступны третьим лицам.
  • Как следствие — обработки претензий со стороны Telegram не будет. Решение любых конфликтов остается на совести разработчика, процессинговых служб и банков. Тем не менее, команда Павла Дурова обеспечит надежную и качественную модерацию. Сервисы, заслужившие доверие клиентов, получат особую отметку, а недобросовестные проекты — будут блокироваться.
  • После успешной оплаты заказчику доступен отчет о совершенной операции со всеми данными о заказе: название товара или услуги, стоимость, краткие платежные сведения и данные о доставке.
platezhi-v-telegramme-pozvolyat-priobresti-lyuboj-tovar-ili-uslugu.png
Payment-система позволяет оплачивать любой вид товаров или услуг

На начальном этапе основная предлагаемая процессинговая система — это Stipe, но можно предположить, что в будущем выбор увеличится. Уже сейчас в России подключился сервис Яндекс.Деньги, позже добавится и Qiwi. Выплаты доступны для разработчиков из Индии через Razorpay, в Нигерии, Кении, Гане, Южной Африке, Уганде — через Flutterwave, и в более чем 190 других стран через Paymentwall. Но возможно, некоторым бот-разработчикам придется ждать подключения локальных провайдеров, или проводить платежи из-за рубежа. Еще одна потенциальная сложность связана с законодательной базой для коммерческой деятельности. Будучи физическим лицом, создатель бота не может монетизировать свои труды. Необходимо создание юридического лица, и связанные с этим затраты тоже нужно учитывать.

Разумеется, и продавцы, и покупатели захотят протестировать новый функционал, прежде чем тратить реальные деньги и усилия на разработку. Для этого существует демо-робот Shop Bot, в котором можно пройти по всем шагам от оформления заказа до получения квитанции об оплате. Попробовать потратить небольшую реальную сумму можно с помощью бота Telegram Donate Bot, пожертвовав на развитие проекта от 1 доллара и более.

История развития Payment-платформы

В 2015 году в Сан-Франциско состоялась конференция для стартапов TechCrunch Disrupt, на которой Дуров анонсировал появление Payment API. Этот интерфейс предназначается для автоматизации приема разработчиками чат-ботов и игр денежных средств от пользователей. Оплата может происходить как непосредственно создателю робота за пользование его продуктом, так и перечисляться на внешние ресурсы в рамках реализации функционала того или иного сервиса.

В подтверждение развития этих планов, 03.10.16 главный робот Botfather вносит изменения в условия для пользователей встроенной API-платформы. Правила гласят, что в будущем в Telegram будет введена платформа монетизации ботов и других HTML-сервисов, для реализации финансовой отдачи от работы. Также в этом сообщении подчеркивается, что до тех пор создатели бот-приложений не должны встраивать в свои продукты рекламу или пытаться получить оплату от клиентов.

soobshchenie-ot-botfather-s-polzovatelskim-soglasheniem.png
Botfather высылает сообщение с пользовательским соглашением, которое обязательно нужно прочитать и принять

26 апреля 2017 года подписчики Павла Дурова могли наблюдать в его Instagram-аккаунте небольшой ролик о грядущих обновлениях. На видео был продемонстрирован черновик анонса для нового релиза, где подробно описана система платежей в Телеграмм. Вкратце, в тексте сообщалось, что Payment API предназначено для приема денежных средств от подписчиков, и мессенджер не будет брать никаких комиссий. Также было озвучено приглашение подключаться для всех желающих платежных систем. Самые внимательные соотечественники порадовались, что Дуров еще не окончательно забыл родной язык — на его MacBook можно заметить русскую клавиатуру.

anons-funkcii-platezhej-v-telegramm-v-instagrame-durova.png
Тот самый снимок, где Павел анонсировал грядущие обновления

18 мая 2017 года вышло крупное обновление для смартфонов: начиная с версии 4.0 в Telegram официально работает платежный API.

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

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

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

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

bmjey61T0D6S__QsZ7hlf5pftsk.png

</dl>

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

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

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

oPOIVcUY-O4Comn64RVJCCGQe8s.png

</dl>

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

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

jOi3jvY1ufAL5hqYDnIwulrPmMA.png

</dl>

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

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

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

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

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

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

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

50j_yIARBAwV50bmrRUEzOpbQFo.png

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

1epXHLx7BMacmoa-VHGRjwJ-8f4.png

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

U64ZHsepSSC821RGYau2DiAIYkI.png

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

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

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

CnfsZzsgHinzZW0Qplcswf6H5rM.png

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

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

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

</dl>

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

Используемые источники:

  • https://habr.com/post/351766/
  • https://kassa.yandex.ru/manuals/telegram.html
  • https://ru.telegram-store.com/blog/platezhi-v-telegramm/

Рейтинг автора
5
Материал подготовил
Максим Иванов
Наш эксперт
Написано статей
129
Ссылка на основную публикацию
Похожие публикации