Как организовать отправку HTTPS запросов из 1С 7.7 для работы с СБП?

Программист 1С v7.7 IT и автоматизация бизнеса
← На главную

Работа с современными банковскими API и Системой быстрых платежей (СБП) требует использования протокола HTTPS и защищенных соединений TLS. Старая платформа 1С 7.7 не обладает встроенными средствами для полноценной поддержки современных стандартов шифрования, что делает прямые запросы через устаревшие компоненты нестабильными или невозможными. Давайте разберем, как эффективно решить эту задачу.

Вариант 1: Использование cURL и OpenSSL

Одним из самых надежных способов является применение библиотеки cURL в связке с OpenSSL. Поскольку cURL — это самостоятельный инструмент, он не зависит от ограничений системных библиотек Windows и позволяет использовать актуальные протоколы TLS 1.2 и 1.3.

  1. Скачайте актуальные версии библиотек libcurl и openssl.
  2. Интегрируйте их в 1С 7.7 через внешнюю компоненту (DLL) или вызывайте как внешний процесс.
  3. Для выполнения запроса можно использовать системный вызов WScript.Shell для запуска командной строки с передачей параметров запроса.

Рассмотрим пример логики вызова через запуск внешнего процесса в 1С 7.7:


// Пример формирования команды для вызова cURL
Команда = "curl -X POST https://api.bank.com/payments -d @data.json -o response.txt";
WshShell = СоздатьОбъект("WScript.Shell");
WshShell.Run(Команда, 0, 1);
// После выполнения считываем файл response.txt
ТекстОтвета = СоздатьОбъект("Текст");
ТекстОтвета.Открыть("response.txt");

Вариант 2: Использование промежуточного сервиса (Middleware)

Наиболее архитектурно верным подходом при интеграции с СБП является создание собственной «прокладки» (сервиса-посредника). Это особенно актуально, если у вас несколько рабочих мест или сложная схема взаимодействия с банком.

Преимущества этого подхода:

Реализация сервиса на PHP или Go

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

Разберем этапы работы:

  1. 1С 7.7 отправляет HTTP-запрос (обычный GET/POST) на локальный сервер (например, localhost/api.php).
  2. Скрипт на PHP принимает этот запрос, выполняет защищенное HTTPS-соединение с банком, используя современные библиотеки cURL.
  3. Результат ответа банка возвращается обратно в 1С 7.7 в формате JSON или XML.

Этот подход позволяет 1С 7.7 работать со стандартными и простыми запросами, оставляя всю «тяжелую» работу по криптографии и безопасности внешнему сервису.

Почему WinHttp.WinHttpRequest.5.1 может не подойти?

Многие программисты пытаются использовать WinHttp.WinHttpRequest.5.1, однако важно понимать причину потенциальных сбоев. Этот объект опирается на системные настройки Windows. Если сервер банка требует TLS 1.2 или выше, а ваша операционная система (например, Windows Server 2003 или XP) не настроена или физически не поддерживает эти протоколы, соединение будет сброшено. Поэтому для стабильной работы в современных условиях мы настоятельно рекомендуем использовать внешние библиотеки вроде cURL или вынос логики на современный промежуточный сервис.

Рекомендации по выбору решения

Если вы ограничены в ресурсах и у вас небольшое количество рабочих мест — попробуйте использовать внешние HTTP-компоненты для 1С в виде DLL, которые уже содержат внутри себя скомпилированные версии OpenSSL. Это позволит инкапсулировать работу с HTTPS внутри одной библиотеки, которую достаточно поместить в папку с базой данных.

Если же архитектура вашей системы предполагает развитие, масштабируемость и высокую надежность при работе с СБП — смело выбирайте вариант с собственным промежуточным сервисом. Это «прокладка», которая позволит вам забыть о проблемах несовместимости версий TLS и упростит поддержку всей системы в будущем.

← На главную