Приём платежей с помощью эквайринга «СберБанк»

Чтобы абоненты-физлица могли оплачивать счета в личном кабинете с помощью эквайринга от СберБанка, последовательно настройте несколько объектов.

  1. Личный кабинет СберБанка
  2. Административный интерфейс LANBilling
  3. Сертификаты НУЦ Минцифры России
  4. Скрипт для callback-уведомлений
  5. Скрипт для автоматических платежей
  6. Конфигурационный файл
  7. Оплата по СБП (Динамический QR СБП)

Личный кабинет СберБанка

Оставьте заявку на подключение на сайте. Дождитесь, пока сотрудники предоставят вам информацию.

В личном кабинете настройте параметры callback-уведомлений:

  • Тип callback-а: Статический
  • Операции:
    • Успешное списание
    • Отмены
    • Возврат

image

Административный интерфейс LANBilling

Создайте профиль для платёжной системы в LANBilling. Логин и пароль нужно будет указать в скрипте callback-уведомлений.

image

Сертификаты НУЦ Минцифры России

Действия различаются для разных ОС.

  1. Создайте каталог:

    mkdir /usr/local/share/ca-certificates/sber/
    

    ``

  2. Скачайте два сертификата:

    wget https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt -O /usr/local/share/ca-certificates/sber/russian_trusted_root_ca_pem.crt
    wget https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt -O /usr/local/share/ca-certificates/sber/russian_trusted_sub_ca_pem.crt
    

    ``

    Подробнее читайте по ссылке.

  3. Обновите хранилище сертификатов:

    update-ca-certificates -v
    

    ``

    Ответ системы при успешном добавлении:

    2 added, 0 removed; done.
    Running hooks in /etc/ca-certificates/update.d...
    

    ``

  4. Проверьте, что сертификаты валидны — заверены центром сертификации. Сделать это можно двумя способами.

    • С помощью wget — при проверке ответ не должен быть пустым.

      wget -qS —spider —max-redirect=0 https://3dsec.sberbank.ru/payment/rest/
      
      
      
    • С помощью curl — при проверке не должна возвращаться ошибка.

      curl https://3dsec.sberbank.ru/payment/webservices/merchant-ws?wsdl
      
      
      
  1. Убедитесь, что существует каталог /etc/pki/ca-trust/source/anchors/.

  2. Скачайте два сертификата:

    wget https://gu-st.ru/content/lending/russian_trusted_root_ca_pem.crt -O /etc/pki/ca-trust/source/anchors/russian_trusted_root_ca_pem.crt
    wget https://gu-st.ru/content/lending/russian_trusted_sub_ca_pem.crt -O /etc/pki/ca-trust/source/anchors/russian_trusted_sub_ca_pem.crt
    

    ``

    Подробнее читайте по ссылке.

  3. Обновите хранилище сертификатов:

    update-ca-trust force-enable
    

    ``

    Ответ системы при успешном добавлении:

    2 added, 0 removed; done.
    Running hooks in /etc/ca-certificates/update.d...
    

    ``

  4. Проверьте, что сертификаты валидны — заверены центром сертификации. Сделать это можно двумя способами.

    • С помощью wget — при проверке ответ не должен быть пустым.

      wget -qS —spider —max-redirect=0 https://3dsec.sberbank.ru/payment/rest/
      
      
      
    • С помощью curl — при проверке не должна возвращаться ошибка.

      curl https://3dsec.sberbank.ru/payment/webservices/merchant-ws?wsdl
      
      
      

Скрипт для callback-уведомлений sber_acq.cgi

Скрипт нужен, чтобы фиксировать в LANBilling результаты оплат. Он обрабатывает запросы от платёжной системы — в них содержится информация об операциях. На основании этих данных скрипт создаёт платежи в биллинге.

Настройка различается для разных ОС.

  1. Убедитесь, что установлен PHP 7, а также пакеты perl-cgi, perl-JSON и perl-soap-lite.

  2. Скопируйте скрипт callback-уведомлений sber_acq.cgi в директорию исполняемых скриптов вашего веб-сервера:

    cp /usr/local/billing/payments/sber_acq/sber_acq.cgi /var/www/cgi-bin/
    

    ``

  3. Укажите в файле настройки доступа.

    • Метод подключения к LBcore. По умолчанию — http; если настроена работа API по SSL — https.
    • IP-адрес и порт для подключения к LBcore.
    • Логин и пароль от профиля платёжной системы в LANBilling.
    • Путь, где будет храниться файл с логами.
    # Атрибуты для доступа к LBcore
    my $proto = 'http';
     
    # Атрибуты для доступа к LBcore
    $lbcore_host = '127.0.0.1'
    $manager_login = 'super_pay'
    $manager_pass = '12345'
    

    # Настройка логирования my $log_file = "/var/log/billing/weblogs/sber-acq.log"

    ``

  4. Сделайте скрипт исполняемым:

    chmod +x /var/www/cgi-bin/sber_acq.cgi
    

    ``

  5. Сообщите сотрудникам СберБанка URL скрипта sber_acq.cgi на вашем веб-сервере. Например: https://company.org/cgi-bin/sber_acq.cgi.

  1. Убедитесь, что установлен PHP 7, а также пакеты libsoap-lite-perl, libxml-simple-perl, libcgi-session-perl, libtext-iconv-perl, libjson-perl.

  2. Скопируйте скрипт callback-уведомлений sber_acq.cgi в директорию исполняемых скриптов вашего веб-сервера:

    cp /usr/local/billing/payments/sber_acq/sber_acq.cgi /usr/lib/cgi-bin/
    

    ``

  3. Укажите в файле настройки доступа.

    • Метод подключения к LBcore. По умолчанию — http; если настроена работа API по SSL — https.
    • IP-адрес и порт для подключения к LBcore.
    • Логин и пароль от профиля платёжной системы в LANBilling.
    • Путь, где будет храниться файл с логами.
    # Атрибуты для доступа к LBcore
    my $proto = 'http';
     
    # Атрибуты для доступа к LBcore
    $lbcore_host = '127.0.0.1'
    $manager_login = 'super_pay'
    $manager_pass = '12345'
    

    # Настройка логирования my $log_file = "/var/log/billing/weblogs/sber-acq.log"

    ``

  4. Сделайте скрипт исполняемым:

    chmod +x /usr/lib/cgi-bin/sber_acq.cgi
    

    ``

  5. Сообщите сотрудникам СберБанка URL скрипта sber_acq.cgi на вашем веб-сервере. Например: https://company.org/cgi-bin/sber_acq.cgi.

  1. Убедитесь, что установлен PHP 7, а также пакеты p5-IO-SessionData и p5-SOAP-Lite.

  2. Скопируйте скрипт callback-уведомлений sber_acq.cgi в директорию исполняемых скриптов вашего веб-сервера:

    cp /usr/local/billing/payments/sber_acq/sber_acq.cgi /usr/local/www/apache24/cgi-bin/
    

    ``

  3. Укажите в файле настройки доступа.

    • Метод подключения к LBcore. По умолчанию — http; если настроена работа API по SSL — https.
    • IP-адрес и порт для подключения к LBcore.
    • Логин и пароль от профиля платёжной системы в LANBilling.
    • Путь, где будет храниться файл с логами.
    # Атрибуты для доступа к LBcore
    my $proto = 'http';
     
    # Атрибуты для доступа к LBcore
    $lbcore_host = '127.0.0.1'
    $manager_login = 'super_pay'
    $manager_pass = '12345'
    

    # Настройка логирования my $log_file = "/var/log/billing/weblogs/sber-acq.log"

    ``

  4. Сделайте скрипт исполняемым:

    chmod +x /usr/local/www/apache24/cgi-bin/sber_acq.cgi
    

    ``

  5. Сообщите сотрудникам СберБанка URL скрипта sber_acq.cgi на вашем веб-сервере. Например: https://company.org/cgi-bin/sber_acq.cgi.

Скрипт для автоматических платежей sber_recurrent_payment.py

Выполните эти шаги, если вы работаете с автоплатежами.

  1. Скопируйте скрипт sber_recurrent_payment.py в директорию /usr/local/billing/pymodules/:

    cp /usr/local/billing/payments/sber_acq/sber_recurrent_payment.py /usr/local/billing/pymodules/
    

    ``

  2. Укажите в файле настройки доступа.

    • Логин и пароль от профиля платёжной системы в LANBilling:

      MANAGER = 'super_pay'
      PASSWORD = '12345'
      
      
      
    • ID оператора в биллинге. Если в скрипте задан ненулевой идентификатор OPER_ID, то автоплатежи будут выполняться только по договорам этого оператора:

      OPER_ID = 1
      
      
      
    • Ссылка на платёжный шлюз.

      • Для промышленной среды:

        SBER_URL ='https://securepayments.sberbank.ru/payment/rest/'
        
        
        
      • Или для тестового режима:

        SBER_URL ='https://3dsec.sberbank.ru/payment/rest/'
        
        
        
    • Логин и пароль для доступа к сервису — их выдают сотрудники СберБанка:

      SBER_USERNAME = '781000013674-20152659-api'
      SBER_PASSWORD = 'sberbankNSS'
      
      
      
  3. Перезапустите модуль LBcore. Команды различаются в разных ОС.

    systemctl restart lbcore
    
    service lbcore restart
    

Конфигурационный файл sberbank.ini

Действия различаются для разных ОС.

  1. Внесите изменения в файл конфигурации sberbank.ini:

    nano /etc/lanbilling/phpclient/client/sberbank.ini
    

    ``

    • Включите платёжную систему в личном кабинете абонентов LANBilling.

      [sberbank]
      enabled = true
      
      
      
    • Если вы работаете с автоплатежами, укажите ID профиля платёжной системы из LANBilling:

      epsManagerId = 14
      
      
      
    • Если вы не работаете с автоплатежами, отключите их:

      allowAutoPayments = false
      
      
      
    • Укажите cсылку на платёжный шлюз.

      • Для промышленной среды:

        path = 'https://securepayments.sberbank.ru/payment/rest/'
        
        
        
      • Или для тестового режима:

        path = 'https://3dsec.sberbank.ru/payment/rest/'
        
        
        
    • Введите логин и пароль для доступа к сервису — их выдают сотрудники СберБанка.

      userName = '781000013674-20152659-api'
      password = 'sberbankNSS'
      
      
      
    • Установите минимальную сумму платежа. Чтобы убрать ограничение, введите «0».

      minPaymentAmount = 10
      
      
      
    • Включите отображение кнопки оплаты через СБП.

      useSbpPayment = true
      
      
      
    • При необходимости скройте кнопку «Оплата», оставив только оплату по СБП:

      useCardPayment = false
      
      
      
    • Если вы предоставляете абонентам возможность оплаты по СБП, укажите параметры подключения и сертификаты. Подробнее об этом читайте ниже.

    • Дополнительно: валюта, описание заказа, ставка НДС, наименование товара, тип и объект платежа, а также другие параметры.

  1. Сохраните конфигурационный файл. Сериализуйте изменения:

    /usr/local/sbin/lbwebcfg -y client /etc/lanbilling/phpclient/client/
    

    ``

  1. Внесите изменения в файл конфигурации sberbank.ini:

    nano /usr/local/etc/lanbilling/phpclient/client/sberbank.ini
    

    ``

    • Включите платёжную систему в личном кабинете абонентов LANBilling.

      [sberbank]
      enabled = true
      
      
      
    • Если вы работаете с автоплатежами, укажите ID профиля платёжной системы из LANBilling:

      epsManagerId = 14
      
      
      
    • Если вы не работаете с автоплатежами, отключите их:

      allowAutoPayments = false
      
      
      
    • Укажите cсылку на платёжный шлюз.

      • Для промышленной среды:

        path = 'https://securepayments.sberbank.ru/payment/rest/'
        
        
        
      • Или для тестового режима:

        path = 'https://3dsec.sberbank.ru/payment/rest/'
        
        
        
    • Введите логин и пароль для доступа к сервису — их выдают сотрудники СберБанка.

      userName = '781000013674-20152659-api'
      password = 'sberbankNSS'
      
      
      
    • Установите минимальную сумму платежа. Чтобы убрать ограничение, введите «0».

      minPaymentAmount = 10
      
      
      
    • Включите отображение кнопки оплаты через СБП.

      useSbpPayment = true
      
      
      
    • При необходимости скройте кнопку «Оплата», оставив только оплату по СБП:

      useCardPayment = false
      
      
      
    • Если вы предоставляете абонентам возможность оплаты по СБП, укажите параметры подключения и сертификаты. Подробнее об этом читайте ниже.

    • Дополнительно: валюта, описание заказа, ставка НДС, наименование товара, тип и объект платежа, а также другие параметры.

  1. Сохраните конфигурационный файл. Сериализуйте изменения:

    /usr/local/sbin/lbwebcfg -y client /usr/local/etc/lanbilling/phpclient/client/
    

    ``

Настройка завершена. Теперь абоненты-физлица могут пополнять баланс в личном кабинете с помощью этой платёжной системы.

Оплата по СБП (Динамический QR СБП)

Можно предоставить абонентам возможность совершать оплаты по СБП — с помощью банковского приложения на смартфоне.

Динамический QR‑код привязан к конкретной покупке и содержит в себе её сумму. Такой QR‑код не нужно вручную отправлять абонентам — достаточно разместить на сайте платежную форму и подключить оплату через СБП. Для этого дополнительно нужно настроить:

Обратите внимание: оплату по СБП не удастся настроить, если сервер, где установлен личный кабинет, работает под управлением Centos 7.

СБП: сертификаты

  1. Измените настройки openssl:

    nano /etc/ssl/openssl.cnf
    

    ``

    Задайте такие параметры:

    openssl_conf = openssl_init
    
    [openssl_init]
    providers = provider_sect
    
    [provider_sect]
    default = default_sect
    legacy = legacy_sect
    
    [default_sect]
    activate = 1
    
    [legacy_sect]
    activate = 1
    

    ``

  2. Зарегистрируйте приложение в личном кабинете Sber API Registry. В итоге вы должны иметь:

    • Значения параметров ClientID и ClientSecret, которые далее потребуются для конфигурационного файла sberbank.ini
    • Контейнер с сертификатами безопасности, который нужно сохранить на ваш сервер
  3. Извлеките из контейнера корневые сертификаты — они будут представлены в файле cacerts.cer. Введите команду с учётом расположения и названия вашего контейнера:

    openssl pkcs12 -in /home/certificate_ccc123-45bb-67aa.p12 -cacerts -nokeys -out cacerts.cer
    

    ``

  4. Переименуйте полученный файл в «cacerts.crt»:

    mv cacerts.cer cacerts.crt
    

    ``

    Дальнейшие действия различаются в зависимости от ОС.

  1. Добавьте файл с корневыми сертификатами в хранилище:

    cp cacerts.crt /usr/local/share/ca-certificates/
    

    ``

  2. Обновите хранилище:

    update-ca-certificates -v
    

    ``

Можно проверить, что сертификаты добавлены:

awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-certificates.crt | grep -i "SberAPI CA"

Ответ системы при успешном добавлении:

subject=C = RU, ST = Moscow, L = Moscow, O = Sberbank of Russia, OU = SberAPI, CN = SberAPI CA
  1. Добавьте файл с корневыми сертификатами в хранилище:

    cp cacerts.crt /etc/pki/ca-trust/source/anchors/
    

    ``

  2. Обновите хранилище:

    update-ca-trust force-enable
    

    ``

Можно проверить, что сертификаты добавлены:

awk -v cmd='openssl x509 -noout -subject' ' /BEGIN/{close(cmd)};{print | cmd}' < /etc/ssl/certs/ca-bundle.crt | grep -i "SberAPI CA"

Ответ системы при успешном добавлении:

subject=C = RU, ST = Moscow, L = Moscow, O = Sberbank of Russia, OU = SberAPI, CN = SberAPI CA

СБП: скрипт для callback-уведомлений

Команды различаются для разных ОС.

  1. Скопируйте скрипт callback-уведомлений sber_qr.py в директорию исполняемых скриптов вашего веб-сервера:

    cp /usr/local/billing/payments/sber_acq/sber_qr.py /var/www/cgi-bin/
    

    ``

  2. Укажите в файле настройки доступа.

    • IP-адрес и порт для подключения к LBcore.
    • Логин и пароль от профиля платёжной системы в LANBilling.
    • Путь, где будет храниться файл с логами.
    • Идентификатор категории платежей.
    # Атрибуты для доступа к LBcore
    HOST = '127.0.0.1'
    PORT = 34012
    MANAGER_LOGIN = 'super_pay'
    MANAGER_PASS = '12345'
    

    # Путь к лог-файлу с историей LOG_FILE = "/var/log/billing/sber_qr.log"

    # Класс платежа (id) из таблицы pay_classses CLASS_ID = 0

    ``

  3. Сделайте скрипт исполняемым:

    chmod +x /var/www/cgi-bin/sber_qr.py
    

    ``

  1. Скопируйте скрипт callback-уведомлений sber_qr.py в директорию исполняемых скриптов вашего веб-сервера:

    cp /usr/local/billing/payments/sber_acq/sber_qr.py /usr/lib/cgi-bin/
    

    ``

  2. Укажите в файле настройки доступа.

    • IP-адрес и порт для подключения к LBcore.
    • Логин и пароль от профиля платёжной системы в LANBilling.
    • Путь, где будет храниться файл с логами.
    • Идентификатор категории платежей.
    # Атрибуты для доступа к LBcore
    HOST = '127.0.0.1'
    PORT = 34012
    MANAGER_LOGIN = 'super_pay'
    MANAGER_PASS = '12345'
    

    # Путь к лог-файлу с историей LOG_FILE = "/var/log/billing/sber_qr.log"

    # Класс платежа (id) из таблицы pay_classses CLASS_ID = 0

    ``

  3. Сделайте скрипт исполняемым:

    chmod +x /usr/lib/cgi-bin/sber_qr.py
    

    ``

  1. Скопируйте скрипт callback-уведомлений sber_qr.py в директорию исполняемых скриптов вашего веб-сервера:

    cp /usr/local/billing/payments/sber_acq/sber_qr.py /usr/local/www/apache24/cgi-bin/
    

    ``

  2. Укажите в файле настройки доступа.

    • IP-адрес и порт для подключения к LBcore.
    • Логин и пароль от профиля платёжной системы в LANBilling.
    • Путь, где будет храниться файл с логами.
    • Идентификатор категории платежей.
    # Атрибуты для доступа к LBcore
    HOST = '127.0.0.1'
    PORT = 34012
    MANAGER_LOGIN = 'super_pay'
    MANAGER_PASS = '12345'
    

    # Путь к лог-файлу с историей LOG_FILE = "/var/log/billing/sber_qr.log"

    # Класс платежа (id) из таблицы pay_classses CLASS_ID = 0

    ``

  3. Сделайте скрипт исполняемым:

    chmod +x /usr/local/www/apache24/cgi-bin/sber_qr.py
    

    ``

СБП: конфигурационный файл

  1. Откройте файл конфигурации sberbank.ini:

    nano /etc/lanbilling/phpclient/client/sberbank.ini
    

    ``

  2. Укажите данные.

    • Идентификатор клиента — его выдают сотрудники Сбербанка:

      memberId = '000001'
      
      
      
    • ClientID и ClientSecret из личного кабинета Sber API Registry:

      clientId = 'ccc123-45bb-67aa'
      clientSecret = '976fac54-d569-4026-b75c-2157a19a272d'
      
      
      
    • Адреса для создания заказа — оставьте значения по умолчанию:

      tokenURL = 'https://mc.api.sberbank.ru:443/prod/tokens/v3/oauth'
      qrURL = 'https://mc.api.sberbank.ru/prod/qr/order/v3/creation'
      scope = 'https://api.sberbank.ru/qr/order.create'
      
      
      
    • Идентификатор терминала — его выдают сотрудники Сбербанка:

      tid = '10266753'
      
      
      
    • Путь к контейнеру с сертификатами безопасности и пароль к нему:

      certificatePath = '/home/certificate_ccc123-45bb-67aa.p12'
      certificatePassword = 'Atlantis-1234'
      
      
      
  3. Сериализуйте изменения:

    /usr/local/sbin/lbwebcfg -y client /etc/lanbilling/phpclient/client/
    

    ``

  1. Откройте файл конфигурации sberbank.ini:

    nano /usr/local/etc/lanbilling/phpclient/client/sberbank.ini
    

    ``

  2. Укажите данные:

    • Идентификатор клиента — его выдают сотрудники Сбербанка:

      memberId = '000001'
      
      
      
    • ClientID и ClientSecret из личного кабинета Sber API Registry:

      clientId = 'ccc123-45bb-67aa'
      clientSecret = '976fac54-d569-4026-b75c-2157a19a272d'
      
      
      
    • Адреса для создания заказа — оставьте значения по умолчанию:

      tokenURL = 'https://mc.api.sberbank.ru:443/prod/tokens/v3/oauth'
      qrURL = 'https://mc.api.sberbank.ru/prod/qr/order/v3/creation'
      scope = 'https://api.sberbank.ru/qr/order.create'
      
      
      
    • Идентификатор терминала — его выдают сотрудники Сбербанка:

      tid = '10266753'
      
      
      
    • Путь к контейнеру с сертификатами безопасности и пароль к нему:

      certificatePath = '/home/certificate_ccc123-45bb-67aa.p12'
      certificatePassword = 'Atlantis-1234'
      
      
      
  3. Сериализуйте изменения:

    /usr/local/sbin/lbwebcfg -y client /usr/local/etc/lanbilling/phpclient/client/
    

    ``

Проверка взаимодействия

Проведите платежи, используя реквизиты тестовых карт. Данные тестовых карт узнайте у сотрудников СберБанка.

В качестве параметра «Cardholder name» нужно использовать не менее двух слов, набранных латинскими буквами. Например, ALEXEY ALEXEEV.

Карты с параметрами «veres=y», «pares=y» или «pares=a» используют технологию «3-D Secure». Для них понадобится код на странице ACS: 12345678.