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

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

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

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

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

В личном кабинете настройте параметры 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-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.

  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
      
      
      
    • Если вы предоставляете абонентам возможность оплаты по СБП, укажите параметры подключения и сертификаты. Подробнее об этом читайте ниже.

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

  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
      
      
      
    • Если вы предоставляете абонентам возможность оплаты по СБП, укажите параметры подключения и сертификаты. Подробнее об этом читайте ниже.

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

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

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

    ``

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

Оплата по СБП

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

Обратите внимание: оплату по СБП не удастся настроить, если сервер, где установлен личный кабинет, работает под управлением 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.