Тестирование
Тестирование карточных платежей
Для тестирования API-запросов используйте выданный вам в процессе онбординга идентификатор сайта — siteUid. Тестируйте на картах из списка ниже, иначе операция будет отклонена.
Тестовые карты:
-
MIR:
- 2200111753579001
- 2200117996077364
- 2200119066335755
- 2200113704697015
- 2200119753612540
-
VISA:
- 4282529780951108
- 4433079223745277
- 4433096334531891
- 4648276478204536
- 4433094693138127
-
MC:
- 5324619129671504
- 5186479678835191
- 5203415510291044
- 5586966955309532
- 5586966837580789
Конфигурация тестовых сценариев
Для тестирования сценариев и имитации отклонённых операций используйте в запросе поле comment в методе «Создание платежа». Поле должно содержать строку с JSON-структурой флагов и их значений.
Пример заполнения поля:
...
"comment": "{\"decline_payment\":false, \"3ds_flow\": \"3ds1\"}",
...
Описание флагов для принудительного отклонения операций:
"decline_payment": (Boolean) — при значенииtrueплатёж будет отклонён системой"decline_capture": (Boolean) — при значенииtrueподтверждение будет отклонено системой"decline_refund": (Boolean) — при значенииtrueвозврат будет отклонён системой
Описание значений флага для тестирования сценариев 3-D Secure (3DS):
3DS-аутентификация не производится при оплате по ранее сохранённым реквизитам: при передаче значений CIT_CREDENTIAL_ON_FILE или MIT_CREDENTIAL_ON_FILE в поле paymentMethod.tokenizationCredentials.type метода «Создание платежа».
При оплате без использования ранее сохранённых реквизитов доступна имитация 3DS с помощью флага 3ds_flow. Флаг задаёт версию 3DS, которая вернётся в ответе на запрос создания платежа.
Принимает значения:
"none"— значение по умолчанию"3ds1"— эмуляция прохождения 3DS1"3ds2"— эмуляция прохождения 3DS2
При отсутствии флага 3ds_flow или значении none платёж будет переведён в статус COMPLETED.
Для успешного завершения 3DS-аутентификации при вызове метода «Завершение аутентификации» передайте в запросе следующий PaRes:
eJxVjkELgkAQhf+K7N127ZQ1rkTaJaRIO8uiky7kGjsa/fxWiUJ4h8e8j4+B+N09vBda0r2JWLASzENT9bU2TcR2t+Lob1gsoWgtYpJjNVqUkCGRatDTdcSo77DUNZpB3zVaJuGyvyL9t6eySAsiOx9OaVI6Ls2Bz7gE/pVOdlu1ygzcqcapkjsmakC5FmHoi8ClEGI7JQA+L07zQ/ni2Q9oEUph
Тестирование СБП
Для разработки и тестирования реализована возможность воспроизвести поддерживаемые ответы при работе с методами разделов «Функциональные ссылки СБП» и «Кассовые ссылки СБП».
Для тестирования необходимо:
- Использовать
siteUid, выданный при онбординге - Задать тестовый сценарий в одном из запросов
- Создание Функциональной ссылки СБП
- Оплата СБП-токеном
- Активация Кассовой ссылки СБП
Конфигурация тестовых сценариев
Сценарий передаётся:
-
В одном из полей метода «Создание Функциональной ссылки СБП» в зависимости от типа QR-кода:
paymentPurpose— для создания статичных и динамических QR-кодов (QRCodeDynamic,QRCodeStatic) и сценария «Оплата с привязкой счета» (QRCodeDynamic+ заполненное полеpaymentToken)paymentToken.tokenizationPurpose— для создания токена (QRCodeToken) и последующей работы с платежом
-
В поле
commentметода «Создание платежа» при оплате СБП-токеном (SBPTokenPaymentMethod), принимает поле сценарияpayWithToken -
В поле
paymentPurposeметода «Активация Кассовой ссылки СБП», принимает поля сценария:activateCRQRCdeactivateCRQRCgetCRQRCStatusrefund
-
paymentPurpose— для создания статичных и динамических QR-кодов (QRCodeDynamic,QRCodeStatic) и сценария «Оплата с привязкой счета» (QRCodeDynamic+ заполненное полеpaymentToken) -
paymentToken.tokenizationPurpose— для создания токена (QRCodeToken) и последующей работой с платежом
В методе «Создание платежа» при оплате СБП-токеном (SBPTokenPaymentMethod):
comment— в запросе при оплате по СБП-токену, принимает поле сценарияpayWithToken
Поле должно содержать JSON-строку (экранированный JSON), определяющую сценарии обработки. Если поле не заполнено или содержит некорректный JSON — используется сценарий по умолчанию.
Поля сценария
createQrc
Определяет сценарий поведения при создании QR-кода, дальнейшей обработке платежа и выпуске токена.
| Значение | Описание |
|---|---|
OK_WITHOUT_CALLBACKS | Значение по умолчанию. QR-код успешно создан, уведомления не отправляются. Используется, если нужно протестировать только генерацию QR-кода без имитации оплаты. |
OK_PAYMENT_ACCEPTED | QR-код успешно создан, далее имитируется успешный платёж: отправляется уведомление об успешной обработке платежа. |
OK_PAYMENT_REJECTED | QR-код успешно создан, далее имитируется отклонение платежа: отправляется уведомление об отказе. |
OK_SUBSCRIPTION_ACCEPTED | QR-код успешно создан, далее имитируется успешная активация токена и отправка уведомления о его статусе. Используется для QRCodeToken для выпуска токена. |
OK_PAYMENT_AND_SUBSCRIPTION_ACCEPTED | QR-код успешно создан, далее имитируется успешный платёж и успешная активация токена. Используется для сценария «Оплата с привязкой счёта». |
OK_SUBSCRIPTION_REJECTED | QR-код успешно создан, далее имитируется отказ в активации токена. |
ERROR | Ошибка при создании QR-кода. Например, неверные параметры запроса или сбой на стороне СБП. |
payWithToken
Определяет дальнейший сценарий поведения при оплате по токену.
| Значение | Описание |
|---|---|
OK | Значение по умолчанию. Оплата по токену успешно выполнена. Возвращается успешный ответ, отправляется уведомление об успешном платеже. |
OK_WITHOUT_CALLBACKS | Оплата по токену успешно выполнена. Уведомления не отправляются. |
OK_REJECTED | Оплата по токену отклонена. Отправляется уведомление об отказе. |
ERROR | Ошибка при оплате по токену — например, сбой сервиса или некорректный запрос. Возвращается ошибка. |
refund
Определяет сценарий поведения при возврате платежа.
| Значение | Описание |
|---|---|
OK_WITHOUT_CALLBACKS | Значение по умолчанию. Возврат считается успешным, но уведомления не отправляются. |
OK_ACCEPTED | Возврат успешно выполнен, отправляется уведомление о подтверждении возврата. |
OK_REJECTED | Возврат отклонён, отправляется уведомление о неуспехе операции. |
ERROR | Ошибка при возврате. |
activateCRQRC
Определяет сценарий поведения при активации кассовой ссылки и дальнейшей обработке платежа.
| Значение | Описание |
|---|---|
OK_WITHOUT_CALLBACKS | Значение по умолчанию. Кассовая ссылка успешно активирована, уведомления не отправляются. Используется, если требуется протестировать только активацию кассовой ссылки без имитации оплаты. |
OK_PAYMENT_ACCEPTED | Кассовая ссылка успешно активирована, далее имитируется успешный платёж: отправляется уведомление об успешной обработке платежа. |
OK_PAYMENT_REJECTED | Кассовая ссылка успешно активирована, далее имитируется отклонение платежа: отправляется уведомление об отказе. |
ERROR | Ошибка при активации кассовой ссылки. Например, сбой сервиса. |
deactivateCRQRC
Определяет сценарий поведения при деактивации кассовой ссылки.
| Значение | Описание |
|---|---|
OK | Значение по умолчанию. Кассовая ссылка успешно деактивирована. |
ERROR | Ошибка при деактивации кассовой ссылки. Например, сбой сервиса. |
Если кассовая ссылка активирована со сценарием деактивации ERROR, её нельзя деактивировать запросом деактивации кассовой ссылки. Но её можно активировать с другим сценарием через запрос активации кассовой ссылки.
getCRQRCStatus
Определяет сценарий поведения при запросе статуса кассовой ссылки.
| Значение | Описание |
|---|---|
OK_WAITING_PAYMENT | Значение по умолчанию. Возвращаемый статус кассовой ссылки — WAITING_PAYMENT. Кассовая ссылка активирована и готова к оплате. |
OK_IN_PROGRESS | Возвращаемый статус кассовой ссылки — IN_PROGRESS. Операция по кассовой ссылке в процессе выполнения. |
ERROR | Ошибка при запросе статуса кассовой ссылки. Например, сбой сервиса. |
Примеры сценариев
- Успешное создание динамического QR-кода без последующей оплаты.
....
"qrcType": "DYNAMIC",
"paymentPurpose": "{\"createQrc\":\"OK_WITHOUT_CALLBACKS\"}"
....
- Успешное создание статического QR-кода с последующей имитацией успешной оплаты.
....
"qrcType": "STATIC",
"paymentPurpose": "{\"createQrc\":\"OK_PAYMENT_ACCEPTED\"}"
....
- Успешное создание динамического QR-кода с последующей имитацией успешной оплаты и имитацией успешного возврата при отправке запроса «Создание операции возврата».
...
"qrcType": "DYNAMIC",
"paymentPurpose": "{\"createQrc\":\"OK_PAYMENT_ACCEPTED\",\"refund\":\"OK_ACCEPTED\"}"
...
- Сценарий «Оплата с привязкой счёта». Генерация динамического QR-кода с успешной оплатой и привязкой счета.
....
"qrcType": "DYNAMIC",
"paymentToken": {
"tokenizationPurpose": "Тестирование сценария оплаты с привязкой счета"
},
"paymentPurpose": "{\"createQrc\":\"OK_PAYMENT_AND_SUBSCRIPTION_ACCEPTED\"}",
....
- Сценарий «Привязка счета без оплаты». Отказ от активации подписки.
....
"qrcType": "TOKEN",
"paymentToken": {
"tokenizationPurpose": "{\"createQrc\":\"OK_SUBSCRIPTION_REJECTED\"}"
},
....
- Сценарий «Оплата по привязке». Имитирует отказ оплаты по токену при отправке запроса «Создание платежа» с методом оплаты
SBP_TOKEN.
....
"paymentMethod": {
"type":"SBP_TOKEN",
"token": "AS1000670LSS7DN18SJQDNP4B05KLJL2",
},
"comment": "{\"payWithToken\":\"OK_REJECTED\"}"
....
- Успешная активация кассовой ссылки с последующей имитацией успешной оплаты и имитацией успешного возврата при отправке запроса «Создание операции возврата».
...
"paymentPurpose": "{\"activateCRQRC\":\"OK_PAYMENT_ACCEPTED\",\"refund\":\"OK_ACCEPTED\"}"
...
- Успешная активация кассовой ссылки без последующей оплаты. Имитирует ошибку при деактивации кассовой ссылки.
...
"paymentPurpose": "{\"activateCRQRC\":\"OK_WITHOUT_CALLBACKS\",\"deactivateCRQRC\":\"ERROR\"}"
...
Особенности тестовой среды
При выполнении запроса «Создание Кассовой ссылки СБП», в случае передачи опционального поля qrcId, его значение должно иметь префикс TEST- для успешного выполнения запроса.
Передача значения без соответствующего префикса может быть использована для имитации ошибки при выполнении запроса — например, сбоя сервиса.