Каталог решений - Оплата счетов через Telegram

Оплата счетов через Telegram

Оплата счетов через Telegram

В наличии

Изучаем методы API для работы с платежами через Telegram. Встроенная функция оплаты счетов в Телеграм.

Категория:

Описание

Как ни странно, но почему-то на Инфостарте нет описания очень полезной функции Телеграм — оплаты счетов из приложения. Эта возможность появилась в апреле 2021 года, описание https://core.telegram.org/bots/payments#introducing-payments-2-0

За основу для изучения API рекомендую взять бесплатную внешнюю обработку из статьи //sale.itcity.ru/public/1479683/ 

1. Настроим бота для работы с платежами. Открываем в Telegram бота @BotFather, отправляем ему команду /mybots, выбираем своего бота, выбираем в меню пункт "Payments".

 

 

2. Среди предложенных вариантов рассмотрим тестовые платежи через "ЮKassa", выбираем соответствующий пункт "Connect ЮKassa: тест" и переходим к другому боту @YooKassaTestBot. С ним все просто: выполняем команду "/start", дальше бот попросит отправить два идентификатора "shopId" и "shopArticleId", отправляем их ему.

У вашего бота должен появиться токен для оплаты. Посмотреть его можно через @BotFather — "Payments", на скриншоте видно в самом верху сообщения "method connected: — ЮKassa: тест: 382764670:TEST:28305 2021-08-10 19:20".

3. Настройки закончены, переходим в конфигуратор 1С. Чтобы отправить счет на оплату, достаточно вызывать POST метод https://core.telegram.org/bots/api#sendinvoice:

prices = Новый Массив;

Для каждого ТекСтр Из Объект.Счет.Товары Цикл
	Стр = Новый Структура;
	Стр.Вставить("label",  ТекСтр.Номенклатура.Наименование);
	Стр.Вставить("amount", ТекСтр.Сумма*100);

	prices.Добавить(Стр);	
КонецЦикла;

СтруктураЗапроса = Новый Структура;          
СтруктураЗапроса.Вставить("chat_id",        Объект.channel);
СтруктураЗапроса.Вставить("title",          "Заголовок счета"); 
СтруктураЗапроса.Вставить("description",    "Описание");
СтруктураЗапроса.Вставить("payload",        Строка(Объект.Счет.УникальныйИдентификатор()));
СтруктураЗапроса.Вставить("provider_token", Объект.provider_token);
СтруктураЗапроса.Вставить("currency",       "RUB");
СтруктураЗапроса.Вставить("prices",         prices);

ТекстЗапроса = СтруктураВJSON(СтруктураЗапроса);

Ресурс = "bot" + Объект.token + "/sendInvoice";

Рез = TelegramОтправитьЗапрос(Ресурс, "POST", ТекстЗапроса);

Важный нюанс: при формировании поля prices сумму указываем в копейках, чтобы не было дробных значений (то же самое для других валют https://core.telegram.org/bots/api#labeledprice).

4. Если все параметры заполнили верно, то получателю придет сообщение:

 

 

5. Нажимаем "Заплатить" и открывшемся окне видим состав счета и возможность выбрать карту для оплаты:

 

 

Для тестового платежа ЮKassa предоставляет карту: 1111 1111 1111 1026, срок 12/22, CVC 000. Эти реквизиты можно увидеть в сообщениях от бота @YooKassaTestBot, может быть у Вас они будут другие. Нажимаем "Заплатить".

 

 

6. Далее нашему боту необходимо в течение 10 секунд подтвердить оплату (например, проверить остатки на складе, зарезервировать товар и т.д.). Для этого он должен получить уведомления от сервера Telegram и отправить в ответ подтверждение.

Уведомления получаем методом getUpdates ищем записи с типом "pre_checkout_query". Подтверждение отправляем методом answerPreCheckoutQuery. В обработке это реализовано через команду "Подтвердить оплату".

 

 

7. В Телеграме будет получено сообщение, что счет успешно оплачен. А метод getUpdates вернет новое уведомление с типом SuccessfulPayment. Его можно обработать, чтобы, например, чтобы изменить в 1С статус счета на "оплачен".

 

Обработка проверялась на Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.94.17), можно адаптировать под любую другую конфигурацию.

has been added to your cart:
Оформление заказа