При построении систем оперативного взаимодействия с клиентами (например, при интеграции 1С с личным кабинетом на сайте) часто возникает необходимость получать данные о поступивших платежах в режиме времени, близком к реальному. Рассмотрим, с какими техническими и архитектурными сложностями можно столкнуться при реализации автоматической загрузки банковских выписок каждые 15 минут, и какие варианты решения задачи существуют.
Главная сложность при создании регламентного задания для регулярного получения выписок заключается в разграничении клиентского и серверного контекста выполнения кода.
Проанализируем основные технические препятствия:
usr1cv8).Рассмотрим несколько архитектурных подходов к решению задачи в зависимости от предоставляемых банком возможностей.
Технология 1С:ДиректБанк позволяет обмениваться документами с банком напрямую из программы 1С без установки промежуточного программного обеспечения «Клиент-Банк». Если банк поддерживает автоматическое получение выписки без применения аппаратных токенов (например, по логину/паролю или авторизационному токену), процесс можно автоматизировать.
Разберем порядок настройки по шагам:
РегламентноеЗадание, которое будет вызывать функции модуля интеграции прямого обмена с банком.Пример вызова получения выписки в коде обработчика фонового задания (упрощенный фрагмент):
// Выполнение запроса выписки в серверном контексте
ПараметрыОбмена = Новый Структура;
ПараметрыОбмена.Вставить("Организация", Организация);
ПараметрыОбмена.Вставить("БанковскийСчет", БанковскийСчет);
ПараметрыОбмена.Вставить("ПериодЗапроса", Новый НастройкиПериода);
// Вызов процедур подсистемы прямого обмена с банком
DirectBankСервер.ЗапроситьВыпискуЗаПериод(ПараметрыОбмена);
Для крупного бизнеса и задач высокой степени автоматизации многие финансовые организации предлагают специализированные корпоративные сервисы (Host-to-Host / Open API, например Alfa-Link и аналогичные решения других банков). Этот подход предназначен именно для автоматического взаимодействия систем «сервер-сервер».
Плюсы данного подхода:
Реализация выполняется путем отправки HTTP-запросов к API банка из регламентного задания 1С с использованием объекта HTTPСоединение и обработкой полученного ответа в формате JSON или XML.
Если главной целью является моментальное информирование клиента на сайте о поступившей оплате, классическая загрузка выписок каждые 15 минут может оказаться неэффективной из-за задержек межбанковских переводов. Платежи по обычным банковским реквизитам могут обрабатываться банками от нескольких часов до нескольких дней.
Выясним, какие альтернативные инструменты подходят для задачи мгновенной проверки:
HTTPСервис, который обрабатывает входящее сообщение и моментально меняет статус заказа или счета.Проанализируем практическую сторону обработки загруженных данных. В банковской выписке часто отсутствует полная информация для автоматического проведения документа ПоступлениеНаРасчетныйСчет. Для корректной автоподвязки оплаты к счетам и заказам на сайте необходимо соблюдение следующих условий:
СчетНаОплатуПокупателю или ЗаказПокупателя.