Приём платежей с помощью Альфа-Банка

Чтобы ваши абоненты могли оплачивать услуги в личном кабинете с помощью Альфа-Банка, последовательно выполните шаги настройки.

  1. Личный кабинет в Альфа-Банке
  2. Административный интерфейс LANBilling
  3. Скрипт callback-уведомлений
  4. Скрипт для автоматических платежей
  5. Конфигурационный файл

Личный кабинет в Альфа-Банке

Зарегистрируйтесь в системе эквайринга Альфа-Банка.

Получите следующие идентификаторы, которые потребуются для дальнейшей настройки: Логин и Пароль магазина для доступа к сервису.

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

Создать профиль менеджера для ВПС

Создайте профиль для платёжной системы в LANBilling.

image

Задать настройки ВПС

  1. Перейдите в раздел «Настройки» — «Настройки ВПС».

    image

  1. Нажмите «Добавить».

    image
  2. Выберите профиль менеджера, созданный ранее. Также выберите оператора, для которого будет действовать ВПС.

    Вы можете настроить несколько экземпляров одной платёжной системы. Для каждой из них пара менеджер/оператор должна быть уникальной.

  3. В поле «ВПС» выберите «Альфа-Банк». Появятся расширенные настройки этой платёжной системы.

    image

    Некоторые поля заполнятся автоматически. Как правило, их не нужно редактировать — это настройки, которые меняются очень редко на стороне платёжной системы.

    • URL платёжного шлюза — https://pay.alfabank.ru/payment/rest/
  4. Введите комментарий. Это поле обязательно для заполнения. Если вы используете несколько экземпляров одной ВПС, комментарий позволит вам отличать их друг от друга.

  5. URL для перенаправления при успешной и неуспешной оплате.

  6. Логин и Пароль для доступа к сервису — реквизиты, полученные при регистрации в системе эквайринга Альфа-Банка.

  7. Код валюты (по ISO 4217) — по умолчанию используется 643 (рубль). Вы можете указать другую валюту. В договорах оператора, для которого вы настраиваете ВПС, должна быть указана соответствующая валюта.

  8. Язык оформления платёжной страницы (по ISO 639-1) — по умолчанию используется русский язык (значение «ru»).

  9. Описание платежа, отображаемое для пользователя — составьте шаблон описания, которое увидит ваш клиент, когда будет пополнять баланс. В шаблоне можно использовать переменные:

    • {amount} — сумма платежа
    • {agrmid} — идентификатор договора
    • {agrmnum} — номер договора
    • {email} — email клиента
    • {mobile} — мобильный телефон клиента
    • {agrnums} — номера договоров (если оплата по нескольким договорам)
    • {currency} — валюта (берется из параметра currency)

    Пример.

    В настройках задан шаблон описания: Оплата {amount} {currency} по договору {agrnum}

    При оплате пользователь увидит свои данные: Оплата 2 500 руб. по договору Contract_1

  10. Минимальный и максимальный размер автоплатежа — если вы работаете с автоплатежами, можно задать минимальную и максимальную сумму регулярных списаний.

  11. Минимальный размер платежа в личном кабинете — позволяет задать минимальную сумму, на которую ваши абоненты могут пополнить баланс в личном кабинете или Telegram-боте. Если не хотите использовать это ограничение, укажите значение 0.

  12. Возможность подключать автоплатежи — позволяет вашим клиентам подключать автооплату в личном кабинете и Telegram-боте. По умолчанию возможность включена.

    Подробнее о том, как устроены автоплатежи

  13. Использовать обычную оплату — возможность использовать обычную оплату картой (не СБП). По умолчанию флаг установлен. Если хотите использовать только способ оплаты «СБП», снимите флаг.

  14. Использовать оплату по СБП — по умолчанию флаг установлен. Если хотите использовать только обычный способ оплаты картой, снимите флаг.

  15. Тип платежа — признак расчета, который будет присваиваться платежам:

    • Полная предварительная оплата
    • Частичная предварительная оплата
    • Аванс
    • Полная оплата
  16. Объект платежа — предмет расчёта:

    • Платёж
    • Товар
    • Работа
    • Услуга
    • Иной предмет расчёта
  17. Класс платежа — укажите идентификатор категории платежей. Он будет присваиваться платежам, совершённым вашими клиентами.

  18. Код платежа — выберите нужный вариант:

    • Безналичный
    • Наличный
    • Продажа без чека
    • Возврат без чека
    image
  19. Сохраните настройки ВПС.

    image

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

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

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

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

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

    ``

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

    # Настройки логирования
    ALFA_LOG = '/var/log/billing/weblogs/alfabank.log'
    

    # Параметры подключения к LBcore HOST = '127.0.0.1' PORT = 1502 MANAGER = 'super_pay' PASSWORD = '12345' OPER_ID = 1

    ``

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

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

    ``

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

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

    ``

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

    # Настройки логирования
    ALFA_LOG = '/var/log/billing/weblogs/alfabank.log'
    

    # Параметры подключения к LBcore HOST = '127.0.0.1' PORT = 1502 MANAGER = 'super_pay' PASSWORD = '12345' OPER_ID = 1

    ``

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

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

    ``

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

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

    ``

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

    # Настройки логирования
    ALFA_LOG = '/var/log/billing/weblogs/alfabank.log'
    

    # Параметры подключения к LBcore HOST = '127.0.0.1' PORT = 1502 MANAGER = 'super_pay' PASSWORD = '12345' OPER_ID = 1

    ``

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

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

    ``

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

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

  1. Убедитесь, что установлен Python 3, а также дополнительные пакеты. Список различается в зависимости от ОС.

    Необходимый пакет: python3-requests.
    Необходимый пакет: python3-requests.noarch.
    Необходимый пакет: py39-requests.
  2. Скопируйте скрипт alfabank_recurrent_payment.py в директорию /usr/local/billing/pymodules/:

    cp /usr/local/billing/payments/alfabank/alfabank_recurrent_payment.py /usr/local/billing/pymodules/
    

    ``

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

    MANAGER = 'super_pay'
    PASSWORD = '12345'
    OPER_ID = 1
    

    ``

  4. Перезапустите модуль LBcore. Команды различаются в разных ОС.

    systemctl restart lbcore
    
    service lbcore restart
    

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

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

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

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

    ``

    Включите платёжную систему, чтобы абоненты смогли вносить через неё оплаты в личном кабинете:

    [alfabank]
    enabled = true
    

    ``

    Убедитесь, что настройки совпадают с теми, которые вы задали для ВПС в административном интерфейсе.

    Пример файла:

    ; Настройки "Alfabank"
    [alfabank]
    enabled = true
    ; Идентификатор менеджера, работающего с данной ВПС
    epsManagerId = ''
    	; url для запроса регистрации заказа
    payUrl = 'https://pay.alfabank.ru/payment/rest/'
    ; url для запроса получения qr кода при сбп оплате
    qrUrl = 'https://pay.alfabank.ru/payment/rest/sbp/c2b/qr/dynamic/'
    ; Логин магазина, полученный при подключении
    userName = ''
    ; Пароль магазина, полученный при подключении
    password = ''
    ; Описание заказа.
    description = 'Оплата {amount} {currency} по договорам {agrnums}'
    ; Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию
    currency = 643
    ; Язык в кодировке ISO 639-1
    language = 'ru'
    ; Продолжительность жизни заказа в секундах
    sessionTimeoutSecs = 1200
    ; Признак способа расчёта
    paymentMethod = 4
    ; Признак предмета расчёта
    paymentObject = 10
    ; Возможность подключать автоплатежи
    allowAutoPayments = true
    ; Сумма минимального платежа
    minPaymentAmount = 10
    ; Возможность использовать обычную оплату
    useCardPayment = true
    ; Возможность использовать СБП оплату
    useSbpPayment = true
    

    ``

    • epsManagerId — идентификатор профиля платёжной системы в LANBilling. Укажите идентификатор того же профиля, который создали для этой ВПС в административном интерфейсе.

    • payUrl — URL платёжного шлюза: https://pay.alfabank.ru/payment/rest/.

    • qrUrl — URL для получения QR-кода при оплате по СБП: https://pay.alfabank.ru/payment/rest/sbp/c2b/qr/dynamic/

    • userName и password — логин и пароль магазина, полученный при регистрации в Альфа-Банке.

    • description — описание платежа, отображаемое для пользователя.

    • currency — код валюты (по ISO 4217). По умолчанию используется 643 (рубль).

    • language — язык платёжной страницы в кодировке ISO 639-1, по умолчанию «ru».

    • sessionTimeoutSecs — длительность жизни заказа, в секундах. По умолчанию 1200.

    • paymentMethod — признак способа расчета. Варианты:

      • 1 — полная предварительная оплата до момента передачи предмета расчёта
      • 2 — частичная предварительная оплата до момента передачи предмета расчёта
      • 3 — аванс
      • 4 — полная оплата в момент передачи предмета расчёта
    • paymentObject — признак предмета расчёта. Варианты:

      • 1 — товар
      • 2 — подакцизный товар
      • 3 — работа
      • 4 — услуга
      • 10 — платёж
      • 13 — иной предмет расчёта
    • allowAutoPayments — возможность подключать автоплатежи.

      • true — клиенты смогут подключать автооплату.
      • false — клиенты не смогут подключать автооплату.
    • minPaymentAmount — позволяет задать минимальную сумму, на которую ваши абоненты могут пополнить баланс. Если не хотите использовать это ограничение, укажите значение 0.

    • useCardPayment — включает возможность обычной оплаты картой (не СБП) в личном кабинете и Telegram-боте.

      • true — клиенты смогут использовать обычную оплату картой.
      • false — клиенты не смогут использовать обычную оплату картой.
    • useSbpPayment — включает возможность оплаты по СБП в личном кабинете и Telegram-боте.

      • true — клиенты смогут оплачивать услуги по СБП.
      • false — клиенты не смогут оплачивать услуги по СБП.
  1. Сохраните конфигурационный файл. Сериализуйте изменения:

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

    ``

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

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

    ``

    Включите платёжную систему, чтобы абоненты смогли вносить через неё оплаты в личном кабинете:

    [alfabank]
    enabled = true
    

    ``

    Убедитесь, что настройки совпадают с теми, которые вы задали для ВПС в административном интерфейсе.

    Пример файла:

    ; Настройки "Alfabank"
    [alfabank]
    enabled = true
    ; Идентификатор менеджера, работающего с данной ВПС
    epsManagerId = ''
    	; url для запроса регистрации заказа
    payUrl = 'https://pay.alfabank.ru/payment/rest/'
    ; url для запроса получения qr кода при сбп оплате
    qrUrl = 'https://pay.alfabank.ru/payment/rest/sbp/c2b/qr/dynamic/'
    ; Логин магазина, полученный при подключении
    userName = ''
    ; Пароль магазина, полученный при подключении
    password = ''
    ; Описание заказа.
    description = 'Оплата {amount} {currency} по договорам {agrnums}'
    ; Код валюты платежа ISO 4217. Если не указано, то используется значение по умолчанию
    currency = 643
    ; Язык в кодировке ISO 639-1
    language = 'ru'
    ; Продолжительность жизни заказа в секундах
    sessionTimeoutSecs = 1200
    ; Признак способа расчёта
    paymentMethod = 4
    ; Признак предмета расчёта
    paymentObject = 10
    ; Возможность подключать автоплатежи
    allowAutoPayments = true
    ; Сумма минимального платежа
    minPaymentAmount = 10
    ; Возможность использовать обычную оплату
    useCardPayment = true
    ; Возможность использовать СБП оплату
    useSbpPayment = true
    

    ``

    • epsManagerId — идентификатор профиля платёжной системы в LANBilling. Укажите идентификатор того же профиля, который создали для этой ВПС в административном интерфейсе.

    • payUrl — URL платёжного шлюза: https://pay.alfabank.ru/payment/rest/.

    • qrUrl — URL для получения QR-кода при оплате по СБП: https://pay.alfabank.ru/payment/rest/sbp/c2b/qr/dynamic/

    • userName и password — логин и пароль магазина, полученный при регистрации в Альфа-Банке.

    • description — описание платежа, отображаемое для пользователя.

    • currency — код валюты (по ISO 4217). По умолчанию используется 643 (рубль).

    • language — язык платёжной страницы в кодировке ISO 639-1, по умолчанию «ru».

    • sessionTimeoutSecs — длительность жизни заказа, в секундах. По умолчанию 1200.

    • paymentMethod — признак способа расчета. Варианты:

      • 1 — полная предварительная оплата до момента передачи предмета расчёта
      • 2 — частичная предварительная оплата до момента передачи предмета расчёта
      • 3 — аванс
      • 4 — полная оплата в момент передачи предмета расчёта
    • paymentObject — признак предмета расчёта. Варианты:

      • 1 — товар
      • 2 — подакцизный товар
      • 3 — работа
      • 4 — услуга
      • 10 — платёж
      • 13 — иной предмет расчёта
    • allowAutoPayments — возможность подключать автоплатежи.

      • true — клиенты смогут подключать автооплату.
      • false — клиенты не смогут подключать автооплату.
    • minPaymentAmount — позволяет задать минимальную сумму, на которую ваши абоненты могут пополнить баланс. Если не хотите использовать это ограничение, укажите значение 0.

    • useCardPayment — включает возможность обычной оплаты картой (не СБП) в личном кабинете и Telegram-боте.

      • true — клиенты смогут использовать обычную оплату картой.
      • false — клиенты не смогут использовать обычную оплату картой.
    • useSbpPayment — включает возможность оплаты по СБП в личном кабинете и Telegram-боте.

      • true — клиенты смогут оплачивать услуги по СБП.
      • false — клиенты не смогут оплачивать услуги по СБП.
  1. Сохраните конфигурационный файл. Сериализуйте изменения:

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

    ``

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

Как устроена работа с НДС

Система берёт значение ставки НДС из карточки оператора. Если в карточке оператора не задана ставка НДС или значение не удаётся распознать — применяется значение «Без НДС».

При пополнении сразу нескольких договоров для каждого из них создаётся отдельная позиция в чеке с соответствующей ставкой НДС. Это связано с тем, что в разных договорах могут быть указаны разные операторы, и у каждого из них может быть своя ставка НДС.