Система быстрых платежей (СБП)
Функциональность Payture позволяет Покупателю оплачивать покупки по QR-коду через Систему быстрых платежей (СБП). Список банков-участников размещен на сайте СБП: sbp.nspk.ru/participants. Вопросы и ответы про СБП здесь: sbp.nspk.ru/faq.
На стороне Продавца
В этом разделе представлен сценарий, когда оплата (отображение QR-кода) выполняется на стороне Продавца.
Выполнение платежей
Платежи через СБП выполняются только по одностадийной схеме. Списание денежных средств происходит со счета и на счет, даже если к ним не привязаны карты.
Порядок выполнения платежа следующий:
- Покупатель переходит к оплате и выбирает оплату по QR-коду.
- Продавец формирует запрос GetQRCode для получения QR-кода.
- В ответе на запрос передается URL, который необходимо закодировать в QR-код (срок жизни QR-кода 72 часа). На мобильном устройстве по этой ссылке возможно напрямую открыть приложение банка (если у Покупателя установлено приложение банка, которое поддерживает оплату по QR).
- Продавец отображает QR-код и/или ссылку и ожидает результат оплаты (получение результата платежа возможно двумя способами: используя стандартный запрос статуса
GetStateи/или в нотификациях от платежного шлюза). - Покупатель в мобильном приложении банка выбирает оплату по QR-коду, сканирует QR-код и подтверждает оплату.
- Payture направляет Продавцу нотификацию с результатами платежа:
- EnginePaySuccess — при успешном выполнении;
- EnginePayFail — при неуспешном платеже или истечении времени на оплату (72 часа).
Рекомендации по использованию запроса статуса
Если для получения результата оплаты Продавец использует запрос статуса GetState, рекомендуется применять следующую схему:
- Продавец начинает запрашивать статус через 15 секунд после отображения QR-кода:
- в течение первых 30 секунд каждые 3 секунды;
- в течение следующих 120 секунд каждые 5 секунд;
- далее с увеличенными интервалами.
- Запрос статуса выполняется до получения статусов
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, закодированная в Base64 | String 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.
