💰 Telegram Bot Payments API

Хотите превратить своего бота в продавца? Наш перевод официальной документации Telegram Bot Payments API раскроет секреты интеграции платежей за товары и услуги. Узнайте, как за пару часов запустить систему, которая будет работать как часы!

⚠️ Данный текст частично содержит перевод официальной документации ↗️
💰 Telegram Bot Payments API

Привет, разработчик! Если вы мечтали монетизировать своего Telegram-бота, но не знали, с чего начать — вы в правильном месте. Перед вами полный перевод документации Bot Payments API, которая научит вас принимать платежи за физические товары и цифровые услуги. Оригинал, конечно, можно найти на официальном сайте, но зачем мучиться с языковым барьером, когда всё уже адаптировано под русскоязычный менталитет? Здесь — никакой воды, только четкие примеры, жизненные кейсы и лайфхаки от тех, кто уже прошел этот путь.

Платежи за физические товары

Платежи за физические товары и услуги были впервые добавлены в Telegram в 2017 году и позволяют ботам:

  • Принимать платежи из более чем 200 стран с использованием более 20 провайдеров.
  • Отправлять счета в любой чат, включая группы и каналы.
  • Получать платежи от пользователей на мобильных или десктопных приложениях.
  • Попробовать @ShopBot для создания тестового счета – или начать сообщение с @ShopBot ... в любом чате для инлайн-счета.
  • Посмотреть Демо Магазин для примера Telegram Канала, используемого как виртуальный магазин.

Посмотрите @ShopBot для примера виртуального магазина – затем используйте наши специализированные руководства для цифровых и физических продуктов, чтобы создать свой собственный.

Как это работает?

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

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

Бот может предложить несколько вариантов доставки для физических товаров в зависимости от адреса доставки. Когда все готово, пользователи вводят данные своей кредитной карты или выбирают сохраненную карту — и оплачивают товар. Telegram также поддерживает Apple Pay и Google Pay. После завершения транзакции торговый бот может отправить сообщение-чеки с деталями оплаты, информацией о доставке и доставке.

Подробная информация и пошаговые инструкции доступны ниже.

Платежи через сторонних поставщиков

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

Если вы работаете в компании, предоставляющей услуги, аналогичные самостоятельным аккаунтам в Stripe Connect, пожалуйста, дайте нам знать через @BotSupport (включите хештег #paymentsprovider в ваше сообщение).


Платежный API

В этом разделе рассматриваются платежи через Bot API Telegram более подробно.

Подключение платежей

Чтобы начать принимать платежи, вам нужен Telegram-бот. Используйте BotFather, чтобы создать бота, если у вас его еще нет.

Теперь у вас есть торговый бот, который может предлагать товары или услуги пользователям Telegram. В этом документе мы будем называть его @merchantbot.

Получение токена

  • Используйте команду /mybots в чате с BotFather и выберите @merchantbot, который будет предлагать товары или услуги.
  • Перейдите в Настройки бота > Платежи.
  • Выберите провайдера, и вы будете перенаправлены к соответствующему боту.
  • Введите необходимые данные, чтобы успешно подключить провайдера платежей, затем вернитесь в чат с Botfather.
  • Теперь сообщение будет показывать доступные провайдеры. Каждый из них будет иметь имя, токен и дату подключения провайдера.
  • Вы будете использовать токен при работе с Bot API.

Реализация платежей

Необходимые методы для создания вашей реализации платежей вы найдете в Разделе Платежей Руководства по Bot API.

Тестирование платежей: провайдер 'Stripe TEST MODE'

Пока вы все еще разрабатываете и тестируете платежи для вашего бота, используйте провайдер “Stripe TEST MODE”. В этом режиме вы можете совершать платежи, не списывая средства с реальных счетов. Реальные карты не могут быть использованы в тестовом режиме, но вы можете использовать тестовые карты, такие как 4242 4242 4242 4242 (полный список здесь). Вы можете переключаться между тестовым режимом и живым режимом столько раз, сколько захотите, но, пожалуйста, ознакомьтесь с чек-листом для выхода в живую перед тем, как выйти в живую.

Пошаговый процесс

Смотрите Bot API: Платежи для полного списка доступных методов и объектов.

1. Создание счета

Пользователь связывается с @merchantbot и запрашивает покупку чего-либо. Бот формирует сообщение-счет с описанием товара или услуги, суммой к оплате и запрашиваемой информацией о доставке. Существует два способа создания счета:

A. Счет от бота

Используйте метод sendInvoice для генерации счета и отправки его в чат. Параметр provider_token — это то место, куда вы помещаете значение token, который вы получили ранее через Botfather. Один торговый бот может использовать несколько различных токенов для разных пользователей или разных товаров и услуг.

Сообщения-счета с кнопкой оплаты могут быть отправлены в чаты любого типа: личные чаты с пользователем, группы или каналы. Полученное сообщение-счет будет выглядеть так:

Счет от бота

B. Инлайн-счет

Если @merchantbot поддерживает инлайн-режим, вы можете использовать inputInvoiceMessageContent, чтобы позволить пользователям делиться счетами за ваши товары и услуги в их личных чатах с друзьями или в группах и каналах. Эти счета будут иметь Кнопку оплаты, которую можно использовать несколько раз.

Инлайн-счет

2. Выбор поведения пересылки

Существует два способа обработки пересланных копий ваших счетов, контролируемых параметром start_parameter в методе sendInvoice.

  • A. Мульти-чат счет. Пересланные копии показывают кнопку Оплатить, которую могут нажимать несколько пользователей и пытаться оплатить товары или услуги. Инлайн-счета всегда являются мульти-чат счетами.
  • B. Одно-чат счет. Счет может быть оплачен только из чата, в который он был отправлен, пересланные копии показывают кнопку URL с глубоким ссылкой на бота. Глубокая ссылка может быть использована для генерации аналогичного счета в чате с ботом, для отображения сообщения об ошибке или для других целей. Дополнительная информация о глубоком связывании »

Если одно-чат счет отправляется в чат с @merchantbot, его можно оплатить один раз. Если одно-чат счет отправляется в любой другой чат, его можно оплатить много раз многими пользователями.

Чтобы лучше понять, как это работает, попробуйте переключить параметр “Оплатить из пересылок” при создании счетов с помощью нашего демо @ShopBot.

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

3. Советы (необязательный шаг)

Если параметр max_tip_amount установлен выше 0, пользователи могут добавить чаевые к своему платежу. Вы можете использовать параметр suggested_tip_amounts, чтобы предложить конкретные суммы, которые, по вашему мнению, будут актуальны для счета.

Добавление чаевых

4. Информация о доставке и другие детали (необязательный шаг)

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

Информация о доставке

5. Предложите варианты доставки на основе адреса доставки (необязательный шаг)

Если был запрошен адрес доставки и вы включили параметр is_flexible, Bot API отправит Update с полем shipping_query боту. Бот должен ответить, используя answerShippingQuery, либо с списком возможных вариантов доставки и соответствующими ценами на доставку, либо с ошибкой (например, если доставка по указанному адресу невозможна).

Совет: Рекомендуется, чтобы бот-торговец подтвердил наличие товаров/услуг на этом этапе – чтобы уведомить пользователя в случае, если они больше недоступны. Это особенно важно, если вы используете мульти-чат, инлайн или одиночные чаты, многоразовые счета.

6. Выберите вариант доставки (необязательный шаг)

Пользователь выбирает вариант доставки из списка (общая сумма к оплате может измениться на этом этапе) и переходит к оформлению заказа.

Выберите вариант доставки

7. Предварительная проверка заказа

Пользователь вводит свои платежные данные и нажимает кнопку окончательной оплаты. В этот момент Bot API отправляет Update с полем pre_checkout_query боту, который содержит всю доступную информацию о заказе. Ваш бот должен ответить, используя answerPrecheckoutQuery, в течение 10 секунд после получения этого обновления, иначе транзакция будет отменена.

Бот может вернуть ошибку, если он не может обработать заказ по какой-либо причине. Мы настоятельно рекомендуем указывать причину неудачи в завершении заказа в понятной для человека форме (например, "Извините, у нас закончились резиновые утки! Вас заинтересует чугунный медведь вместо этого?"). Telegram отобразит эту причину пользователю.

Внимание: Крайне важно убедиться, что ваш бот только принимает множественные платежи, когда заказ может быть обработан правильно. Это особенно важно, если вы используете мульти-чат, инлайн или одиночный чат, многоразовые счета.

8. Оформление заказа

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

Если сообщение-счет было отправлено в чате с @merchantbot, оно становится Чеком в пользовательском интерфейсе — пользователь может открыть этот чек в любое время и увидеть все детали транзакции:

Чек

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

Запуск в работу

После того как вы протестировали всё и подтвердили, что ваша реализация платежей работает, вы готовы переключиться в РЕАЛЬНЫЙ РЕЖИМ. Для этого перейдите в BotFather > /mybots > выберите @merchantbot > Настройки бота / Платежи и включите Stripe LIVE MODE. Вы получите токен, который содержит строку :LIVE: в середине, например, 123:LIVE:XXXX. Не передавайте этот токен третьим лицам!

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

Живой контрольный список

  • Мы настоятельно рекомендуем включить двухфакторную аутентификацию для учетной записи Telegram, которая управляет вашим ботом.
  • Вы, как владелец бота, несете полную ответственность в случае возникновения конфликтов или споров. Вы должны быть готовы правильно обрабатывать споры и возвраты (в случае с Stripe, смотрите здесь).
  • Чтобы избежать недоразумений и возможных юридических проблем, убедитесь, что ваш бот может ответить на команду /terms (или предлагает аналогично простой способ доступа к вашим Условиям и Положениям). Ваши Условия и Положения должны быть написаны понятным языком и легко воспринимаемы вашими пользователями. Пользователи должны подтвердить, что они прочитали и согласны с вашими условиями, прежде чем совершить покупку.
  • Ваш бот должен предоставлять поддержку своим клиентам, либо отвечая на команду /support, либо иным четко обозначенным способом. У пользователей должен быть ясный способ связаться с вами по вопросам их покупок, и вы должны обрабатывать их запросы на поддержку своевременно. Вы должны уведомить своих пользователей о том, что поддержка Telegram или поддержка ботов не сможет помочь им с покупками, сделанными через ваш бот.
  • Убедитесь, что ваше серверное оборудование и программное обеспечение стабильны. Используйте резервные копии, чтобы не потерять данные о платежах ваших пользователей.
  • Убедитесь, что вы завершили живой контрольный список для вашего выбранного поставщика платежей, а также этот.

FAQ

Как мне стать платежным провайдером?

Если вы работаете в компании, которая предоставляет услуги, аналогичные отдельным счетам в Stripe Connect, пожалуйста, дайте нам знать через @BotSupport (пожалуйста, включите хэштег #paymentsprovider в ваше сообщение).

Сколько вы берете?

Telegram не взимает комиссию за использование Payments API. Однако имейте в виду, что у большинства платежных провайдеров будут свои комиссии. Например, Stripe в США взимает 2,9% + 30¢ за каждую успешную транзакцию по карте (см. веб-сайт Stripe для получения дополнительной информации о ценах).

Нужен ли мне бот для приема платежей?

Да. Если вы не разработчик, вам нужно будет либо нанять кого-то, чтобы он сделал бота для вас (рекомендуется), либо использовать бота, созданного сторонней компанией. Мы настоятельно рекомендуем проявлять крайнюю осторожность при использовании услуг ботов, которые обрабатывают платежи за вас – Telegram не поддерживает такие боты и не одобряет ни один из сторонних ботов, предлагающих эти услуги.

Что может продавать мой бот?

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

Особое примечание: Из-за ограничений Apple разработчики ботов в настоящее время не могут принимать платежи за цифровые товары и виртуальные услуги от пользователей iOS.

UPD 2024: Благодаря недавним изменениям в Руководстве по обзору Apple, пользователи скоро смогут оплачивать цифровые товары и услуги с помощью Telegram Stars на всех платформах.

Как обрабатываются споры?

Telegram выступает в роли посредника между платящим пользователем, разработчиком бота и выбранной ими платежной системой. Пользователь отправляет свои данные кредитной карты непосредственно в платежную систему. Затем ответ платежной системы и данные о доставке, введенные пользователем, передаются разработчику бота для обработки заказа.

Поскольку Telegram не обрабатывает платежи, мы не храним и не можем получить доступ к каким-либо конфиденциальным данным. Из-за этой структуры Telegram не может обрабатывать жалобы или возвраты средств – любые спорные платежи являются ответственностью разработчиков ботов, платежных провайдеров и банков, участвующих в обмене.

Смотрите также: Политика конфиденциальности Telegram

Как я могу поддерживать платежи в своем стороннем приложении, которое использует Telegram API?

Вы можете ознакомиться с документацией по платежам MTProto.

Поддерживаемые валюты

Платежи в Telegram в настоящее время поддерживают следующие валюты (вот JSON версия, если вам это нужно).

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

Минимальные и максимальные суммы для каждой из валют примерно соответствуют лимиту US$ 1-10000. Сумма должна быть выражена в 12 цифрах или меньше, поэтому максимальное значение будет соответственно ниже для некоторых валют с низкой стоимостью. Обратите внимание, что для каждой валюты, кроме USD, эти лимиты зависят от обменных курсов и могут изменяться со временем (планируйте это, когда вы реализуете лимиты в своем коде).

Код Название Минимальная сумма Максимальная сумма
AED Дирхам Объединенных Арабских Эмиратов AED 3.67 AED 36,724.95
AFN Афгани AFN73.00 AFN730,009.17
ALL Албанский лек 92,06ALL 920.592,10ALL
AMD Армянский драм 391.99 AMD 3,919,886.12 AMD
ARS Аргентинское песо ARS 1.063,74 ARS 10.637.431,99
AUD Австралийский доллар AU$1.58 AU$15,790.05
AZN Азербайджанский манат 1,70 AZN 17 021,77 AZN
BAM Конвертируемая марка Боснии и Герцеговины 1,81 BAM 18.083,81 BAM
BDT Бангладешская така BDT 119.97 BDT 1,199,700.42
BGN Болгарский лев 1,81 BGN 18 111,00 BGN
BHD Бахрейнский динар BHD 0.377 BHD 3,768.750
BND Доллар Брунея BND1,32 BND13.203,70
BOB Боливийский боливиано BOB 6,82 BOB 68.228,05
BRL Бразильский реал R$ 5,75 R$ 57.545,05
BYN Белорусский рубль 3,23 BYN 32 313,01 BYN
CAD Канадский доллар CA$1.44 CA$14,367.20
CHF Швейцарский франк 0.89 CHF 8'856.60 CHF
CLP Чилийское песо CLP 940 CLP 9.397.299
CNY Китайский юань CN¥7.25 CN¥72,510.96
COP Колумбийское песо COP 4.113,00 COP 41.130.000,00
CRC Коста-риканский колон CRC495,97 CRC4.959.663,44
CZK Чешская крона 23,20 CZK 231 969,83 CZK
DKK Датская крона 6,91 DKK 69092,20 DKK
DOP Доминиканское песо DOP61.55 DOP615,519.75
DZD Алжирский динар DZD 133.62 DZD 1,336,222.34
EGP Египетский фунт EGP 50.67 EGP 506,712.98
ETB Эфиопский бирр ETB128.55 ETB1,285,530.95
EUR Евро 0,93 € 9 262,70 €
GBP Британский фунт £0.78 £7,764.75
GEL Грузинский лари 2,78 GEL 27 801,79 GEL
GHS Ghanaian cedi GHS15.52 GHS155,188.48
GTQ Guatemalan Quetzal GTQ7.72 GTQ77,220.50
HKD Hong Kong Dollar HK$7.77 HK$77,707.50
HNL Honduran Lempira HNL 25.60 HNL 256,023.62
HRK Croatian Kuna 6,95 HRK 69.544,04 HRK
HUF Hungarian Forint 367,38 HUF 3 673 803,88 HUF
IDR Indonesian Rupiah IDR16.300,00 IDR163.000.000,00
ILS Israeli New Sheqel ₪ 3.63 ₪ 36,288.50
INR Indian Rupee ₹87.15 ₹871,492.50
IQD Iraqi dinar IQD 1,311.586 IQD 13,115,858.440
IRR Iranian rial 42,100 IRR 421,000,003/52 IRR
ISK Icelandic Króna 136 ISK 1.357.704 ISK
JMD Jamaican Dollar JMD156.95 JMD1,569,510.45
JOD Jordanian dinar JOD0.709 JOD7,094.040
JPY Japanese Yen ¥148 ¥1,480,450
KES Kenyan Shilling KES129.56 KES1,295,621.28
KGS Kyrgyzstani Som 87-45 KGS 874 503-84 KGS
KRW South Korean Won ₩1,448 ₩14,475,150
KZT Kazakhstani Tenge KZT491-34 KZT4 913 394-55
LBP Lebanese Pound LBP 89,707.47 LBP 897,074,701.24
LKR Sri Lankan Rupee LKR 295.81 LKR 2,958,058.41
MAD Moroccan Dirham MAD 9.74 MAD 97,353.39
MDL Moldovan Leu 18.17 MDL 181,719.19 MDL
MMK Myanmar kyat MMK2,099.09 MMK20,990,916.91
MNT Mongolian Tögrög MNT3 470,41 MNT34 704 126,98
MOP Macanese pataca MOP8.01 MOP80,137.50
MUR Mauritian Rupee MUR45.22 MUR452,203.78
MVR Maldivian Rufiyaa 15.41 MVR 154,103.78 MVR
MXN Mexican Peso MX$20.27 MX$202,671.70
MYR Malaysian Ringgit MYR4.41 MYR44,145.04
MZN Mozambican Metical MZN63.90 MZN639,037.29
NGN Nigerian Naira NGN1,515.00 NGN15,150,003.44
NIO Nicaraguan Córdoba NIO 36.85 NIO 368,476.91
NOK Norwegian Krone NOK 10,86 NOK 108 599,04
NPR Nepalese Rupee NPR139.22 NPR1,392,156.14
NZD New Zealand Dollar NZ$1.75 NZ$17,511.60
PAB Panamanian Balboa PAB 1.00 PAB 10,011.54
PEN Peruvian Nuevo Sol PEN 3.66 PEN 36,579.15
PHP Philippine Peso PHP57.21 PHP572,050.38
PKR Pakistani Rupee PKR280.34 PKR2,803,359.02
PLN Polish Złoty 3,85 PLN 38 495,82 PLN
PYG Paraguayan Guaraní PYG 7.928 PYG 79.278.365
QAR Qatari Riyal QAR 3.65 QAR 36,500.72
RON Romanian Leu 4,59 RON 45.926,04 RON
RSD Serbian Dinar 108,13 RSD 1.081.345,45 RSD
RUB Russian Ruble 93,50 RUB 935 034,38 RUB
SAR Saudi Riyal SAR 3.75 SAR 37,516.73
SEK Swedish Krona 10,09 SEK 100.864,04 SEK
SGD Singapore Dollar SGD1.33 SGD13,309.04
SYP Syrian pound SYP 13,002.47 SYP 130,024,689.47
THB Thai Baht ฿33.76 ฿337,560.38
TJS Tajikistani Somoni 10;91 TJS 109 131;18 TJS
TRY Turkish Lira 36,40 TRY 364.008,04 TRY
TTD Trinidad and Tobago Dollar TTD6.80 TTD67,964.75
TWD New Taiwan Dollar NT$32.84 NT$328,420.38
TZS Tanzanian Shilling TZS2,648.18 TZS26,481,797.63
UAH Ukrainian Hryvnia 41,27UAH 412 664,61UAH
UGX Ugandan Shilling UGX3,674 UGX36,736,954
USD United States Dollar $1.00 $10,000.00
UYU Uruguayan Peso UYU 42,66 UYU 426.613,76
UZS Uzbekistani Som 12 934,07 UZS 129 340 654,27 UZS
VND Vietnamese Đồng 25.505 ₫ 255.050.000 ₫
YER Yemeni Rial YER 246.80 YER 2,468,035.91
ZAR South African Rand ZAR 18.25 ZAR 182,514.20
Комментарии