Система быстрых платежей (СБП)

Функциональность Payture позволяет Покупателю оплачивать покупки по QR-коду через Систему быстрых платежей (СБП). Список банков-участников размещен на сайте СБП: sbp.nspk.ru/participants. Вопросы и ответы про СБП здесь: sbp.nspk.ru/faq.

На стороне Продавца

В этом разделе представлен сценарий, когда оплата (отображение QR-кода) выполняется на стороне Продавца.

Выполнение платежей

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

Порядок выполнения платежа следующий:

  1. Покупатель переходит к оплате и выбирает оплату по QR-коду.
  2. Продавец формирует запрос GetQRCode для получения QR-кода.
  3. В ответе на запрос передается URL, который необходимо закодировать в QR-код (срок жизни QR-кода 72 часа). На мобильном устройстве по этой ссылке возможно напрямую открыть приложение банка (если у Покупателя установлено приложение банка, которое поддерживает оплату по QR).
  4. Продавец отображает QR-код и/или ссылку и ожидает результат оплаты (получение результата платежа возможно двумя способами: используя стандартный запрос статуса GetState и/или в нотификациях от платежного шлюза).
  5. Покупатель в мобильном приложении банка выбирает оплату по QR-коду, сканирует QR-код и подтверждает оплату.
  6. Payture направляет Продавцу нотификацию с результатами платежа:
    • EnginePaySuccess — при успешном выполнении;
    • EnginePayFail — при неуспешном платеже или истечении времени на оплату (72 часа).

Рекомендации по использованию запроса статуса

Если для получения результата оплаты Продавец использует запрос статуса GetState, рекомендуется применять следующую схему:

  1. Продавец начинает запрашивать статус через 15 секунд после отображения QR-кода:
    • в течение первых 30 секунд каждые 3 секунды;
    • в течение следующих 120 секунд каждые 5 секунд;
    • далее с увеличенными интервалами.
  2. Запрос статуса выполняется до получения статусов Charged или Rejected. Заказ в данном случае может принимать следующие статусы:
    • Pending — ожидание оплаты Покупателем;
    • Charged — платеж выполнен успешно;
    • Rejected — неуспешный платеж или время на оплату истекло (72 часа).

Описание метода GetState представлено в разделах Payture API, Payture InPay и Payture eWallet.

Возврат

Возврат выполняется стандартной командой Refund (см. в разделах Payture API, Payture InPay и Payture eWallet).

GetQRCode

https://{Environment}.payture.com/ncapi/GetQRCode

Метод для получения QR-кода для оплаты через СБП.

Запрос

curl https://sandbox3.payture.com/ncapi/GetQRCode \
  -X POST \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d PaymentKey=Merchant \
  -d OrderId=5f63838d-fb03-00c6-c890-c67cfc1c54ea \
  -d Amount=12480 \
  -d AdditionalField1=Value1 \
  -d AdditionalField2=Value2
Получить ссылку

В запросах наименования параметров чувствительны к регистру

ПараметрОписаниеФормат
PaymentKeyНаименование платежного Терминала
Предоставляется с параметрами тестового/рабочего доступа
String
Mandatory
OrderIdУникальный идентификатор платежа в системе Продавца
Рекомендуемый формат: GUID/UUID или Alphanumeric. Другие форматы могут вызвать сбои в работе банковских сервисов.
String [1..50]
Mandatory
AmountСумма платежа в копейках (или другая минимальная единица валюты терминала)
Цифры, не содержащие десятичных или других разделителей
Integer
Mandatory
ChequeИнформация о чеке в формате JSON, закодированная в Base64String
Optional
Дополнительные параметрыЛюбые дополнительные параметры Продавца
Дополнительных параметров может быть несколько. Каждый параметр передается отдельно

Optional

Ответ

Передается в JSON.

Примеры ответов

{
    "Success": true,
    "ErrCode": "NONE",
    "OrderId": "ca6db0c6-546e-4a75-a4c1-7ac7e6b428c1",
    "QRCodeId": "AD10004QCI3EQ5S19N689BOA45F54714",
    "QRCodePayload": "https://qr.nspk.ru/AD10004QCI3EQ5S19N689BOA45F54714?type=02&bank=100000000015&sum=2725&cur=RUB&crc=2D98"
}
ПараметрОписаниеФормат
SuccessПризнак успешности операции. Принимает значения:
true — операция успешна, QR-код получен
false — не удалось выполнить операцию
Boolean
Mandatory
ErrCodeКод ошибки. См. коды ошибокString
Mandatory
OrderIdИдентификатор платежа в системе Продавца
Соответствует переданному в запросе
String [1..50]
Mandatory
QRCodeIdИдентификатор QR-кода в СБП
Передается, если Success=true
String [1..32]
Mandatory
QRCodePayloadСсылка на оплату, которую необходимо закодировать в QR-код.
На мобильных устройствах возможно прямое перенаправление Покупателя по этой ссылке. В таком случае мобильное устройство Покупателя предложит открыть приложение банка (если у Покупателя установлено приложение банка, которое поддерживает оплату по QR).
Передается, если Success=true
String [1..999]
Mandatory

Сценарии СБП

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

Сценарии платежа

Последние 2 цифры Amount в GetQRCodeРезультат
00Успешное получение ссылки, успешная автооплата через 5 секунд
01Неуспешное получение ссылки, ошибка PROCESSING_TIMEOUT на GetQRCode
02Неуспешное получение ссылки, ошибка PROCESSING_ERROR на GetQRCode
03Успешное получение ссылки, успешная автооплата через 60 секунд
04Успешное получение ссылки, успешная автооплата через 120 секунд
05Успешное получение ссылки, неуспешная автооплата с ошибкой PROCESSING_ERROR через 60 секунд
06Успешное получение ссылки, неуспешная автооплата с ошибкой PROCESSING_ERROR через 120 секунд

Возврат

Последние 2 цифры Amount в RefundРезультат
00Успешный возврат
01Ошибка PROCESSING_ERROR на возврат
02Ошибка PROCESSING_MERCHANT_LIMIT на возврат
03Ошибка PROCESSING_TIMEOUT, возврат в процессинге проведён не будет
04Ошибка PROCESSING_TIMEOUT, успешный возврат через 30 секунд
05Ошибка WRONG_CARD_INFO на возврат

Для подключения СБП платежей на тестовую среду, необходимо обращаться в техническую поддержку Payture.