Платежи в Телеграмм: возможности платформы монетизации ботов Payment API

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

Именно такую кнопку мы обавили в Telegram в этом обновлении: теперь вы можете как покупать любой товар или услугу в один клик, так и продавать что угодно при помощи ботов. Вот, как это выглядит:

При первой покупке вам потребуется указать данные своей карты (да, один раз повозиться с этим всё же придётся) и адрес для доставки. Если ваш аккаунт защищён с помощью двухэтапной авторизации, то вы сможете сохранить всю эту информацию для будущих покупок. Ну и, само собой, вы можете оплатить товар с помощью Apple Pay или Android Pay.

Кто же будет обрабатывать платежи? Ответ прост: любой банк или сервис, который захочет. В частности, в России обработкой платежей будут заниматься Яндекс.Деньги и QIWI, а в Узбекистане — Payme.

Если к системе решат подключиться другие сервисы, мы напишем об этом на специальном канале @BotNewsRu.

Во всей этой системе Telegram выступает в роли посредника между пользователем, разработчиком бота и платёжной системой, которую этот бот использует. Все платёжные данные, которые вы вводите, отправляются напрямую в платёжную систему. Дальше, если система увидела ваш платёж и ;даёт добро, ваши контактные данные (адрес для доставки) отправляется боту, чтобы он ;мог завершить оформление заказа.

У такой системы есть как преимущества, так и недостатки.

Из плюсов: ваши данные будут находиться в безопасности, поскольку Telegram не хранит и не обрабатывает их.

Из минусов: Telegram не сможет обрабатывать жалобы и возвраты средств. Все эти проблемы вам придётся решать самостоятельно: с владельцем бота, платёжной системой или вашим банком.

Однако, Telegram будет контролировать ситуацию в целом и будет блокировать ботов, которые занимаются мошенничеством, вымогательством или прочими нехорошими вещами.

Что делать, если я…

  • …обычный пользователь: просто ждите, пока разработчики ботов напишут что-нибудь интересное. А пока можете поиграть с демо-ботом, который продаёт несуществующие вещи: @ShopBot.
  • …разработчик ботов: как обычно, читайте документацию и делайте ботов.
  • …платёжный сервис: подключайтесь к нашему API.

Удачного шоппинга!

platezhi-v-telegramm-dlya-monetizacii-botov.png

Появление у Telegram собственной бот-платформы вызвало бурный рост в сфере программирования чат-ботов, однако никому не интересно заниматься такой разработкой на благотворительной основе. В версии 4.0 появились платежи в Телеграмм — теперь платить в мессенджере так же легко, как в ближайшем супермаркете. Разберемся, чего ждать с появлением Payment API.

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

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

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

Botfather высылает сообщение с пользовательским соглашением, которое обязательно нужно прочитать и принять

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

Тот самый снимок, где Павел анонсировал грядущие обновления

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

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

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

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

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

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

Альтернативные способы монетизации ботов

Поскольку первоначально у программистов не было прямого способа получать доход от своих разработок, были созданы альтернативные пути монетизации. Существуют российские и зарубежные рекламные сети, которые предлагают владельцам ботов рассылать рекламные сообщения с биржи объявлений. Пример такой рекламной площадки — BotRevenue.com. По предлагаемой схеме подписчики будут получать рекламу вместе с ответом от робота. Таким образом, рекламодатели могут размещать свои посты в самых популярных проектах, а разработчики — получать прибыль. Сервис работает по модели «cost per click».

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

Монетизация возможна через сторонние биржи рекламы, однако это нарушает условия для разработчиков

Прочие нововведения — Instant View и Telescope

В упомянутом релизе были добавлены еще некоторые важные новинки в мессенджере:

  • Во-первых, логическое развитие получила опция просмотра внешних ресурсов Instant View. Клиенты давно оценили удобство открытия ссылок непосредственно в Telegram, но количество источников, подключенных к Instant View, было ограничено. Теперь появилась возможность подключить к этой опции любой сайт. Подробнее о технологии мгновенного просмотра читайте в блоге Telegram-store.
  • Во-вторых, разработан сервис Telescope. Он доступен по адресу telesco.pe. В названии прослеживается аналогия с сервисом для публикации статей — Telegra.ph. Телескоп предназначен для владельцев публичных каналов в Телеграмм, и в целом напоминает популярный формат Stories. Как работать с Telescope — разбираемся в отдельном посте.
  • Наконец, поклонники мессенджера ждали появления видео-сообщений. Возникает резонный вопрос: в чем отличие визуальных сообщений от обычных видеозаписей, которые и раньше любой пользователь мог прикрепить к диалогу? Суть этой разработки заключается в обеспечении большего удобства и скорости для мгновенной отправки видеороликов, по аналогии с функцией voice message.
Появился подсервис Telescope, и доработан Instant View для большего числа сайтов

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

Зачем нужна оплата?

В жизни каждого разработчика телеграм ботов наступает момент, когда необходимо реализовать оплату в вашем боте. И тут у вас есть два пути. Первый — зарегистрировать ИНН, ИП/Юридическое лицо и подключить официальную оплату от телеграма или просто использовать сторонний сервис по типу Free-Kassa, QIWI и т.д. Думаю выбор очевиден, в этой статье я буду использовать QIWI, потому что так хочу. Для начала давайте подумаем как бот будет проверять что пришло, от кого и какая сумма. Капитан очевидность подсказывает мне, что необходимо будет получить всю историю переводов на аккаунт, который мы будем использовать в качестве нашего счета для приема платежей. Давайте это сделаем:

import requests import json  QIWI_TOKEN = '' QIWI_ACCOUNT = ''  s = requests.Session() s.headers['authorization'] = 'Bearer ' + QIWI_TOKEN   parameters = {'rows': '50'} h = s.get('https://edge.qiwi.com/payment-history/v1/persons/'+ QIWI_ACCOUNT +'/payments', params = parameters) req = json.loads(h.text)

В константу QIWI_TOKEN мы записываем api ключ для работы с QIWI, получить его можно тут. А в QIWI_ACCOUNT мы записываем номер телефона вашего главного счета. Если вы все сделали правильно, ошибок не будет. Данные находятся в словаре req, включающем в себя списки с данными. А точнее (не читать)переменную req включающую словарь data, в котором находится список из нумерованных словарей включающих в себя списки. Тут мы должны получить номер телефона, комментарий(позже поймете зачем) и сумму транзакции. Для того, чтобы продолжить писать код, вы должны будете уметь использовать базы данных, если вы не ничего не умеете или даже не знаете, что это такое — вот вам ссылка на статью, в которой достаточно понятно описана работа с Sqlite3. Теперь давайте продумаем алгоритм, который будет использован в нашем боте.

  1. Генерируем рандомное число от 100000 до 999999.
  2. Временно заносим данные в таблицу (id пользователя, номер телефона, сумма, сгенерированное ранее рандомное число)
  3. Проверяем комментарий, аккаунт и сумму в словаре req.
  4. Если сумма, телефон и комментарий сошлись — засчитываем оплату.
  5. Добавляем свой функционал после оплаты…

Сейчас вы наверное задумались, а зачем нужно проверять этот комментарий и генерировать рандомное число? А все гениальное — просто. Дело в том, что если мы просто проверим сумму и телефон, то бот сможет найти ранее отправленную транзакцию и засчитать её. Проще говоря, это сделано для безопасности и минимизации багов. Продолжим писать код: Создаем таблицу:

import sqlite3  c.execute("CREATE TABLE IF NOT EXISTS payment_query(user_id INTEGER, phone TEXT, sum INTEGER, code INTEGER)")

Заносим данные в таблицу, как только пользователь захочет что-то оплатить в вашем боте.

from random import randint  # создаем иссуственные данные, которые хотим проверить phone = '+79999999999' sum = 100 random_code = randint(100000, 999999)  c.execute(f"INSERT INTO payment_query VALUES({message.from_user.id}, {phone}, {sum}, {random_code})") conn.commit()

Далее необходимо сделать какую-то проверку оплаты, в моем случае — это будет инлайн клавиатура:Вот пример из моего недавнего бота Как только пользователь нажмет на кнопку оплаты, бот получит историю переводов с QIWI. Теперь нам нужно сделать самое главное — проверку оплаты.

result = c.execute(f"SELECT * FROM payment_query WHERE user_id = {call.message.chat.id}").fetchone() # достаем данные из таблицы  # не рекомендую так делать, но это просто для теста (простите) phone = result[1]  random_code = result[3] sum = result[2]  # проходимся циклом по словарю for i in range(len(req['data'])):     if req['data'][i]['account'] == phone:         if req['data'][i]['comment'] == random_code:             if req['data'][i]['sum']['amount'] == sum:                 c.execute(f"DELETE FROM payment_query WHERE user_id = {call.message.chat.id}") # удаляем временные данные из таблицы                # код, который сработает, если оплата прошла успешно

Вот и все, надеюсь я помог вам решить очередную проблему! Заказчики, вы где? Пишите мне в телеграм: , жду всех!

Прошлым летом 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-бота, создайте его и подключите к боту Яндекс.Кассы по этой инструкции.

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

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

  • https://tlgrm.ru/blog/payments.html
  • https://ru.telegram-store.com/blog/platezhi-v-telegramm/
  • https://habr.com/ru/post/470023/
  • https://habr.com/ru/company/yoomoney/blog/351766/

Оцените статью
Рейтинг автора
5
Материал подготовил
Илья Коршунов
Наш эксперт
Написано статей
134
Добавить комментарий