Как ни странно, но почему-то на Инфостарте нет описания очень полезной функции Телеграм - оплаты счетов из приложения. Эта возможность появилась в апреле 2021 года, описание https://core.telegram.org/bots/payments#introducing-payments-2-0
За основу для изучения API рекомендую взять бесплатную внешнюю обработку из статьи //infostart.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), можно адаптировать под любую другую конфигурацию.