СБП — Система быстрых платежей
Оплата через QR-коды — это замена интернет-эквайрингу, которая позволяет вам получать оплату от физлиц и экономить на банковских комиссиях.
Вы можете зарегистрировать вашу торговую точку в Системе быстрых платежей, генерировать QR-коды и делать возвраты через API.
Для работы с Системой быстрых платежей должны быть выданы разрешения EditSBPData
ReadSBPData
.
Немного определений
Динамический QR-код — одноразовый QR-код с уникальным идентификатором.
По этому коду можно принять оплату только один раз, и сумма платежа прописывается при создании.
По умолчанию срок действия динамического QR-кода составляет 72 часа, но его можно увеличить или уменьшить, поменяв время в минутах в параметре ttl.
Кассовый QR-код — подтип статического QR-кода, имеющий признаки динамического QR-кода. При создании кассовой ссылки создаётся идентификатор QR-кода, по которому можно проводить неограниченное количество оплат.
После каждой оплаты продавцу будет необходимо активировать ссылку заново.
Срок действия кассового QR-кода по умолчанию 5 минут. Если передать атрибут ttl, его можно увеличить до 20 минут.
Статический QR-код — многоразовый QR-код с одним идентификатором. Код действует бессрочно и по нему можно провести неограниченное количество оплат.
Статический QR-код можно создать с указанием цены — покупатели будут платить только указанную сумму. Или вы можете при создании QR-кода не задавать сумму оплаты: тогда она сможет быть разной при каждой операции, но покупателю придётся вводить её вручную.
B2B QR-код — одноразовый QR-код с уникальным идентификатором, который используется для приёма платежей исключительно от ИП и организаций.
Каждый такой код уникальный: принять платёж на сумму, указанную при его создании, можно только один раз.
По умолчанию B2B QR-код действует 72 часа, но срок можно увеличить или уменьшить, указав время в минутах в параметре ttl.
ТСП — это торгово-сервисное предприятие, то есть магазины или иные торговые точки.
legalId — уникальный идентификатор юрлица в Системе быстрых платежей.
merchantId — уникальный идентификатор ТСП в Системе быстрых платежей.
accountId — номер счёта и БИК через слеш, например 40802810802000000008/044525104
.
Как зарегистрировать юрлицо и торговые точки
Чтобы проверить, зарегистрирована ли ваша компания в Системе быстрых платежей, вызовите метод Get Customer Info.
Если регистрация в СБП есть, вам останется только получить информацию о legalId
и merchantId
и приступить к работе.
Если регистрации в СБП нет, пройдите её и создайте торговую точку одним из следующих методов:
Регистрация юрлица в СБП через метод Register Legal Entity.
В запросе необходимо передать:
- customerCode — уникальный код клиента;
- bankCode — БИК банка. У Точки это 044525104.
При регистрации в СБП юрлицу присваивается уникальный идентификатор — legalId
.
Регистрация нового ТСП через метод Register Merchant.
В запросе необходимо передать:
- legalId — идентификатор зарегистрированного юрлица в СБП;
- address — юридический адрес компании или адрес ТСП;
- city — город, в котором находится ТСП;
- countryCode — нужно указать RU;
- countrySubDivisionCode — код региона-регистрации юридического лица, это первые две цифры кода ОКТМО;
- zipCode — индекс;
- brandName — название ТСП;
- capabilities — возможности ТСП по формированию QR-кодов:
- 001 — возможность формировать только статические QR-коды;
- 010 — возможность формировать только динамические QR-коды;
- 011 — возможность формировать только статические и динамические QR-коды;
- 100 — возможность формировать только кассовые QR-коды;
- 101 — возможность формировать только статические и кассовые QR-коды;
- 110 — возможность формировать только динамические и кассовые QR-коды;
- 111 — возможность формировать статические, динамические и кассовые QR-коды.
- mcc — MCC-код, соответствующий вашей деятельности.
Мы рекомендуем указывать capabilities
— 111, чтобы вам не пришлось заново проводить регистрацию ТСП, если потребуется работать с другим типом QR-кодов.
Также можно добавить contactPhoneNumber
— номер телефона ТСП.
После регистрации ТСП каждой торговой точке присваивается уникальный идентификатор — merchantId
.
Чтобы получить список всех ТСП и информацию по ним можно вызвать метод: Get Merchants List.
Регистрация юрлица или ТСП в СБП через Точку
Зарегистрировать юрлицо и создать торговую точку можно в интернет-банке Точки — раздел «QR-платежи»..
Раздел доступен только руководителю и распорядителю с правом подписи.
Как сгенерировать статические и динамические QR-коды
QR-коды нужны для получения оплат от физлиц. Их можно сформировать только для торговых точек, которые уже зарегистрированы в СБП.
Для регистрации динамического или статического QR-кода выполните запрос: Register Qr Code.
В запросе необходимо передать:
- accountId — уникальный и неизменный идентификатор счёта юрлица.
- merchantId — идентификатор ТСП.
- paymentPurpose — назначение платежа. Покупатель его увидит при считывании QR-кода.
- amount — сумма платежа в копейках. Обязательно при создании динамических QR-кодов, для статических QR-кодов данное поле можно не заполнять.
- qrcType — тип запрашиваемого QR-кода:
- qrcType: 01 — статический QR-код;
- qrcType: 02 — динамический QR-код.
- imageParams — параметры изображения:
- width — ширина изображения (>=200, по умолчанию: 300);
- height — высота изображения (>=200, по умолчанию: 300).
При создании статических и динамических QR-кодов можно указать дополнительные поля:
- currency — валюта операции. На данный момент можно указать только RUB.
- sourceName — название вашей интеграции. Эту информацию покупатель не увидит, можно указывать для аналитики.
- ttl — время действия QR-кода в минутах, можно указать от 1 до 129 600 минут. Данный параметр есть только для динамических QR-кодов. Если при создании динамического QR-кода не передать этот параметр, его срок действия составит 72 часа.
- redirectUrl — это ссылка в формате https, перенаправляющая пользователя на выбранную страницу после проведения оплаты.
Если ваши клиенты оплачивают покупки через приложение, удобнее перенаправлять их по ссылке для оплаты, а не показывать изображение QR-кода.
Для этого в ответе метода Register Qr Code мы передаём атрибут payload
.
Статус динамического QR-кода можно отследить с помощью метода Get Qr Codes Payment Status в течение периода использования QR-кода или 24 часов с момента оплаты. По истечению этого времени узнать статус не получится.
Для статических QR-кодов статус отследить не получится, так как этот QR-код всегда активен.
Как сгенерировать кассовые QR-коды
QR-коды нужны для получения оплат от физлиц. Их можно сформировать только для торговых точек, которые уже зарегистрированы в СБП.
Для регистрации кассового QR-кода выполните запрос: Register Cashbox Qrcode
В запросе необходимо передать:
- accountId — уникальный и неизменный идентификатор счёта юрлица;
- merchantId — идентификатор ТСП;
- imageParams — параметры изображения:
- width — ширина изображения (>=200, по умолчанию: 300);
- height — высота изображения (>=200, по умолчанию: 300).
Дополнительно можно указать redirectUrl — это ссылка в формате https, перенаправляющая пользователя на выбранную страницу после проведения оплаты.
Из ответа необходимо забрать и сохранить следующие параметры:
- qrcId — идентификатор QR-кода;
- payload — ссылка для перенаправления пользователей;
- image — изображение QR-кода.
Эти параметры закрепляются для кассовой ссылки.
Чтобы принимать оплату по QR-коду, его нужно каждый раз активировать с помощью метода: Activate Cashbox Qrcode.
В запросе необходимо передать:
- qrcId — идентификатор QR-кода, полученный в методе Register Cashbox Qrcode;
- amount — сумма платежа в копейках.
Дополнительно в запросе можно указать:
- currency — валюта операции. На данный момент можно указать только RUB.
- paymentPurpose — назначение платежа. Покупатель его увидит при считывании QR-кода.
- ttl — время действия QR-кода в минутах, можно указать от 5 до 20 минут. Если не передавать этот параметр, кассовый QR-код по умолчанию будет действовать 5 минут.
Когда вы активируете QR-код, покупатель сможет провести оплату. После оплаты или по истечению ttl, QR-код деактивируется — необходимо вызвать метод Activate Cashbox Qrcode заново.
Если покупатель передумал совершать оплату или больше нет необходимости в активном QR-коде, можно вручную вызвать метод на деактивацию QR-кода: Deactivate Cashbox Qrcode.
При работе с кассовыми QR-кодами есть возможность изменить расчётный счёт для зачисления денег — но в рамках одной компании. Изменить расчётный счёт одной компании на счёт другой не получится.
Для изменения счёта необходимо вызвать метод Change Cashbox Qrcode Account и передать следующие параметры:
- qrcId — идентификатор QR-кода, полученный в методе Register Cashbox Qrcode;
- accountId — уникальный и неизменный идентификатор счёта юрлица.
Чтобы посмотреть информацию обо всех выпущенных кассовых QR-кодах, вызовите метод Get Cashbox Qrcode List.
Чтобы посмотреть информацию по конкретному кассовому QR-коду, вызовите метод Get Cashbox Qrcode.
Обратите внимание, что необязательные параметры передаются, только когда QR-код активен — по нему ещё не прошла оплата или ещё не закончился ttl
.
Как сгенерировать B2B QR-коды
B2B QR-коды нужны для приёма платежей от ИП и организаций. Формировать их можно только для торговых точек, которые уже зарегистрированы в СБП.
Для регистрации B2B QR-кода выполните запрос Register B2B Qr Code с такими параметрами:
- accountId — уникальный и неизменный идентификатор счёта юрлица;
- merchantId — идентификатор торговой Точки в СБП (ТСП);
- paymentPurpose — назначение платежа, которое покупатель увидит при считывании QR-кода;
- amount — сумма платежа в копейках. Максимальная сумма для B2B QR-кода составляет 1 миллион рублей;
- sourceName — название вашей интеграции. Покупатель его не увидит, можно указывать для аналитики;
- takeTax — информация об НДС (True — для получения платежей с НДС, false — без НДС).
При создании B2B QR-кодов можно указать дополнительные параметры:
- totalTaxAmount — сумма НДС в копейках. Необходимо, если в параметре takeTax стоит true.
- ttl — время действия QR-кода в минутах, можно указать от 1 до 129 600 минут. Если при создании QR-кода не передать этот параметр, его срок действия составит 72 часа.
- redirectUrl — ссылка в формате https, на которую нужно перенаправить пользователя после проведения оплаты.
- uip — назначаемый получателем уникальный идентификатор платежа.
Чтобы посмотреть информацию по конкретному B2B QR-коду, вызовите метод Get B2B Qr Code.
Чтобы сразу узнать о поступлении оплаты, вы можете настроить вебхук с событием incomingSbpB2BPayment на свой URL.
Возврат через СБП
На данный момент вернуть платежи поступившие через СБП можно только по динамическим QR-кодам.
Платежи по статическим, кассовым и B2B QR-кодам возвращаются через интернет-банк Точки.
Принятые по QR-кодам платежи в статусе Accepted
можно возвращать покупателю через Систему быстрых платежей.
Возврат может быть как полным, так и частичным. Главное — чтобы его сумма не превышала сумму поступления на расчётный счёт.
- Получите refTransactionId
-
Если у вас подключён вебхук с событием incomingSbpPayment, то параметр -refTransactionId- мы передадим при зачислении денег.
-
Если у вас нет подключённого вебхука с событием incomingSbpPayment, используйте метод Get Payments — он найдёт платёж, который нужно вернуть.
В запросе укажите необходимый промежуток времени через поля fromDate
и toDate
. Период поиска не ограничен, но удобнее искать за день, неделю или месяц — в зависимости от того, что сообщил покупатель.
Для фильтрации можете указать qrcId
и page
.
В ответе вам нужно взять параметры refTransactionId и qrcId — идентификатора QR-кода в СБП.
- Вызовите метод Start Refund — он отправляет запрос на возврат платежа по СБП. Укажите в запросе
- accountCode и bankCode — это счёт и БИК вашей компании, то есть плательщика, со счёта которого происходит возврат.
- amount — сумма возврата. Указывается в рублях, а не копейках.
- qrcId — идентификатор QR-кода по которому зачислились деньги.
- purpose — назначение платежа — можно не заполнять, если ваш покупатель резидент РФ. Если платёж нужно вернуть
нерезиденту, обязательно заполните поле кодом валютной операции
{VO99020}
.
- Отследите статус возврата платежа с помощью метода Get Refund Data .
Финальный успешный статус —Accepted
. Если возврат не прошёл, будет статусRejected
.