Содержание
«T-commerce»: как работают онлайн-продажи через Telegram
Прошлым летом Telegram выпустил новый API с поддержкой платежей. С тех пор мессенджер стал еще и каналом продаж, который позволяет компаниям не только общаться с клиентом, но и принимать оплату за свои товары и услуги прямо в диалоговом окне. Яндекс.Касса первой среди российских платежных сервисов поддержала эту функцию. Принимать платежи в Telegram через Кассу сразу стали индивидуальные предприниматели и небольшие организации: флористы, магазины чая и кофе, тренеры, организаторы обучающих курсов, благотворительные фонды и многие другие (тут можно почитать отзывы и примеры). Но для более крупных компаний с потоком заказов был один стоппер.
Дело в том, что до недавних пор у Telegram-продаж была одна особенность, не учитывающая чисто российскую специфику электронной торговли, — обязательную отправку онлайн-чеков (требование 54-ФЗ, известного как закон об онлайн-кассах). У Яндекс.Кассы сразу появился специальный протокол, который поддерживал работу с новым кассовым оборудованием и автоматизировал передачу чеков. Но в Telegram такая автоматизация технически не поддерживалась, и продавцы должны были настраивать передачу чеков сами (считайте, плясать с бубном). И вот недавно мессенджер пошел навстречу российскому рынку электронной коммерции и реализовал с Яндекс.Кассой совместный проект, дополнив свой протокол важным элементом — появилось специальное поле для дополнительной информации платежному провайдеру. Теперь продавать через Telegram стало удобно с точки зрения не только клиентского сервиса, но и автоматизации передачи онлайн-чеков (то есть соблюдения 54-ФЗ). Под катом расскажу, что нужно сделать, чтобы запустить продажи в Telegram, принимая платежи через Яндекс.Кассу.
Если вам еще не приходилось ничего покупать через мессенджер, сценарий продаж может быть неочевиден. В одних случаях продажа начинается на сайте, а завершается в Telegram. В других же все обслуживание клиента идет через Telegram-бота. Вот как это будет выглядеть пошагово:
- Покупатель кладет в корзину товар на сайте магазина, а на этапе оплаты выбирает платеж через Telegram (вариант второй — когда товар или услугу клиент изначально выбирает с помощью Telegram-бота; именно такой сценарий рассмотрим на рисунке ниже).
- Бот магазина выставляет покупателю счет.
- Telegram обменивается информацией о выставленном счете с платежным ботом Яндекс.Кассы.
- Плательщик вводит платежную информацию не покидая приложения Telegram.
- Бот Я.Кассы проводит платеж и сообщает об успешном платеже в бэкэнд магазина и в Telegram.
- Telegram уведомляет плательщика и бота магазина.
Стоит ли говорить, что скорость выполнения пп. 1-2 зависит от клиента (выбор товара, ввод платежной информации), а процессы из пп. 3-6 происходят почти мгновенно?
Пример использования платежного бота в сервисе русского языка «Ты справишься!» (@UchenyjBot)
Размер среднего чека при оплате в Telegram
Средний чек при оплате в мессенджере через Яндекс.Кассу составляет 700 рублей — сопоставимый со средним чеком при платеже на сайте. Абсолютный показатель у каждого бизнеса свой. К примеру, средний чек в музыкальной школе, которая принимает оплату через Кассу в Telegram, — 4000 рублей. Подписка на сервис консультаций по русскому языку, процесс оплаты которого показан выше, стоит 149 рублей.
Когда Telegram только выпустил API c поддержкой платежей, казалось, что этот канал продаж будет востребован среди средних и крупных мерчантов, которым под силу написать своего бота, учитывающего все сценарии общения магазина с пользователем. Но на самом деле продавать в Telegram большой ритейл не пошел, зато пришли небольшие сервисные компании и маленькие магазины.
Чтобы настроить продажи в Telegram через Яндекс.Кассу, нужно сделать три главных вещи:
- Зарегистрируйтесь в Яндекс.Кассе: подпишите договор и получите идентификатор магазина (shopId).
- Создайте Telegram-бота, который будет общаться с клиентами. Все боты создаются через @Botfather, но их поведение можно программировать самостоятельно или через конструкторы. Готовый бот нужно активировать через чат с @BotFather.
- Подключить своего бота к платежному боту Яндекс.Кассы. Для этого во вкладке «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 Я.Касса автоматически «сигналила» вашему кассовому аппарату, что покупателю надо отправить чек (сам чек отправляет ОФД, обслуживающий вашу кассу), нужно сделать следующее:
- В личном кабинете Я.Кассы указать настройки своего кассового аппарата, совместимого с Яндекс.Кассой (сейчас Касса поддерживает несколько десятков разновидностей ККТ — например, Атол и Атол Онлайн, Orange Data, УМКА, СтарРус, Эвотор, Дримкас, Искра, Штрих-М, Счетмаш, Инкотекс и другие).
- Если у вас еще нет Telegram-бота, создайте его и подключите к боту Яндекс.Кассы по этой инструкции.
Если у вас есть опыт создания платежного бота или остались вопросы о том, как настроить оплату — добро пожаловать в комментарии.
Как создать бота
1. В Telegram откройте диалог с @BotFather, отправьте ему команду /start, затем — /newbot.
2. Придумайте боту имя (name) и юзернейм (username). Имя бота будет в списке контактов и наверху чата, оно может быть неуникальным. Юзернейм будет в короткой ссылке на бота, он должен быть уникальным.
3. Например:
Яндекс.Касса — имя бота
YandexCheckoutPaymentBot — это юзернейм бота
4. Если юзернейм не занят, BotFather пришлет в ответ сообщение с токеном — «ключом» для доступа к созданному боту, его нельзя сообщать посторонним (даже службе поддержки Кассы или Telegram).
Когда ключ у вас, бот готов: теперь можно добавить иконку и настроить диалог с клиентами. Одновременно можно настраивать платежи через бота.
Платежи в Телеграмм — основные особенности
Алгоритм платежных операций таков:
- Создатель робота подключает необходимые API-ключи, основываясь на документации Payment API. Также необходимо выбрать провайдера для обработки транзакций из числа подключенных к системе, основываясь на величине комиссий или иных предпочтениях.
- После всех необходимых настроек для владельцев чат-роботов и их покупателей становится доступна кнопка Pay.
- Подписчик бот-сервиса, совершая платеж, указывает свои платежные данные и адрес доставки (при необходимости). Эти данные будут привязаны к аккаунту плательщика, если в настройках включена двухэтапная авторизация. Также доступны мобильные платежи Android и Apple.
- Денежные операции проходят напрямую между двумя сторонами, клиентом и провайдером. Телеграмм не взимает комиссий и не принимает участия в обработке транзакций, а лишь предоставляет Payment-платформу. Данные карт не будут доступны третьим лицам.
- Как следствие — обработки претензий со стороны Telegram не будет. Решение любых конфликтов остается на совести разработчика, процессинговых служб и банков. Тем не менее, команда Павла Дурова обеспечит надежную и качественную модерацию. Сервисы, заслужившие доверие клиентов, получат особую отметку, а недобросовестные проекты — будут блокироваться.
- После успешной оплаты заказчику доступен отчет о совершенной операции со всеми данными о заказе: название товара или услуги, стоимость, краткие платежные сведения и данные о доставке.
На начальном этапе основная предлагаемая процессинговая система — это 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-сервисов, для реализации финансовой отдачи от работы. Также в этом сообщении подчеркивается, что до тех пор создатели бот-приложений не должны встраивать в свои продукты рекламу или пытаться получить оплату от клиентов.
26 апреля 2017 года подписчики Павла Дурова могли наблюдать в его Instagram-аккаунте небольшой ролик о грядущих обновлениях. На видео был продемонстрирован черновик анонса для нового релиза, где подробно описана система платежей в Телеграмм. Вкратце, в тексте сообщалось, что Payment API предназначено для приема денежных средств от подписчиков, и мессенджер не будет брать никаких комиссий. Также было озвучено приглашение подключаться для всех желающих платежных систем. Самые внимательные соотечественники порадовались, что Дуров еще не окончательно забыл родной язык — на его MacBook можно заметить русскую клавиатуру.
18 мая 2017 года вышло крупное обновление для смартфонов: начиная с версии 4.0 в Telegram официально работает платежный API.
Как настроить бота для работы с платежами
Обратите внимание: дальше речь пойдёт о настройке бота через API Telegram. Если вы используете конструктор ботов (Manybot, Botobot, Botmaker или любой другой), следуйте его инструкциям.
1. Реализуйте метод sendinvoice из платёжного API Telegram: в ответ на этот запрос ваш бот будет отправлять клиенту счёт на оплату. В счёте должна быть стоимость, название, описание товара, параметр payload и параметр provider_token — это тот самый токен, который выдал @BotFather после подключения вашего бота к боту Кассы.
Посмотреть пример запроса sendinvoice
</dl>
Если вы настраивали фискализацию через Яндекс.Кассу, нужно передавать в Кассу данные для фискализации. Для этого добавьте в запрос следующие параметры:
- need_phone_number или need_email
- send_email_to_provider (если вы запрашивали у клиента электронную почту) или send_phone_number_to_provider (если вы запрашивали у клиента телефон),
- provider_data, а в нём объект receipt. Подробности — в API Яндекс.Кассы (смотрите раздел Атрибуты — receipt).
Посмотреть пример
</dl>
Телефон или почту вы можете запросить у клиента раньше, в диалоге с ботом. Тогда первые два параметра не нужны, достаточно provider_data с объектом receipt.
Посмотреть пример
</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. Нажмите на имя своего бота.
2. Откроется панель управления ботом. Выберите BotSettings — Payments.
3. Если хотите сразу настроить настоящие платежи, в открывшемся меню выберите Connect Яндекс.Касса: платежи. Если хотите сначала протестировать — выберите Connect Яндекс.Касса: тест.
Если выбран бот Яндекс.Касса: платежи
4. Откроется диалог с ботом Яндекс.Кассы.Отправьте ему команду /start, затем ваш shopId (его можно скопировать в личном кабинете Яндекс.Кассы).
5. Бот спросит ваш shopArticleId. Если не знаете этот параметр, отправьте в ответ 0 (ноль).
Если выбран бот Яндекс.Касса: тест
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/