Для тестирования подключения к платежному шлюзу метода SberPay необходимо руководствоваться следующей инструкцией.
Вся интеграция делится на три основных сценария:
Главная идея заключается в том, чтобы отправлять специальные запросы с необходимым для банковской системы набором параметров. Это может происходить как во время регистрации заказа (APP2APP, BACK2APP), так и после (WEB2APP, mWEB2APP). После того как банковская система уведомлена о заказе, происходит оплата на стороне клиента через мобильное приложение СБОЛ. В шлюзе факт оплаты осуществляется через запрос /notifyPaymentStatus.do.
1. WEB2APP (mWEB2APP) сценарий
Основное различие между WEB2APP и mWEB2APP заключается в том, с какого устройства клиент проводил оплату на платежной странице.
2. App2App сценарий
Уведомление банковской системы о заказе происходит на этапе регистрации в шлюзе через приложение продавца. Подробное описание использования параметра externalParams.
Пример запроса на регистрацию:
GET ../rest/register.do?returnUrl=https://sberbank.ru&amount=120&jsonParams=%7B%22app2app%22:%22true%22,%22app.osType%22:%22android%22,%22app.deepLink%22:%22https://sberbank.ru%22%7D&userName={user-api}&password={password}
3. Back2App сценарий
Уведомление банковской системы о заказе происходит на этапе регистрации в шлюзе через сервисы продавца.
GET ../rest/register.do?returnUrl=https://sberbank.ru&amount=120&jsonParams=%7B%22back2app%22%3A%22true%22%7D&userName=781000012764-20162559-api&password=sberbankIFT
Примеры:
mdOrder - уникальный номер заказа в системе РБС
bankInvoiceId - номер заказа в системе банка (отображается в атрибутах заказа на странице детальной информации, параметр sbolBankInvoiceId)
Отклонение заказа:
POST Content-Type:application/json https://3dsec.sberbank.ru/dummysbolpayment/sbol/notifyPaymentStatus.do
Body: {
"bankInvoiceId": "{{bankInvoiceId}}",
"orderNumber": "{{mdOrder}}",
"stateCode": "DECLINED"
}
Оплата одностадийного заказа:
POST Content-Type:application/json https://3dsec.sberbank.ru/dummysbolpayment/sbol/notifyPaymentStatus.do
Body: {
"bankInvoiceId": "{{bankInvoiceId}}",
"orderNumber": "{{mdOrder}}",
"stateCode": "DEPOSITED"
}
Оплата двухстадийного заказа:
POST Content-Type:application/json https://3dsec.sberbank.ru/dummysbolpayment/sbol/notifyPaymentStatus.do
Body: {
"bankInvoiceId": "{{bankInvoiceId}}",
"orderNumber": "{{mdOrder}}",
"stateCode": "APPROVED"
}
Отмена:
POST Content-Type:application/json https://3dsec.sberbank.ru/dummysbolpayment/sbol/notifyPaymentStatus.do
Body: {
"bankInvoiceId": "{{bankInvoiceId}}",
"orderNumber": "{{mdOrder}}",
"stateCode": "REVERSED",
"merchantId": "123",
"cancelInfo": {
"cancelCreationDate": "2021-04-03T12:14:12"
}
}
Возврат без корзины:
POST Content-Type:application/json https://3dsec.sberbank.ru/dummysbolpayment/sbol/notifyPaymentStatus.do
Body: {
"bankInvoiceId": "{{bankInvoiceId}}",
"orderNumber": "{{mdOrder}}",
"stateCode": "REFUNDED",
"cancelInfo": {
"cancelCreationDate": "2021-04-03T12:14:12",
"cancelAmount": {
"value": 100,
"currency": "RUB"
}
}
}
Возврат с корзиной:
POST Content-Type:application/json https://3dsec.sberbank.ru/dummysbolpayment/sbol/notifyPaymentStatus.do
Body: {
"bankInvoiceId": "{{bankInvoiceId}}",
"orderNumber": "{{mdOrder}}",
"stateCode": "REFUNDED",
"cancelInfo": {
"cancelCreationDate": "2020-07-03T12:14:12",
"cancelAmount": {
"value": 9000,
"currency": "RUB"
}
},
"itemList": {
"items": [
{
"itemPositionId": "3",
"name": "3",
"amount": 9000,
"price": 3000,
"currency": "RUB",
"count": 3,
"quantityMeasure": "ед."
}
]
}
}
Оплата с последующим созданием связки:
POST Content-Type:application/json https://3dsec.sberbank.ru/dummysbolpayment/sbol/notifyPaymentStatus.do
Body: {
"bankBindingId": "05e63b91-2038-41da-b7f2-93566ec7bae5",
"bankInvoiceId": "thdjrhjxBGdGKbMrhA4DIKRoo3DOnQ4q",
"orderNumber": "b4aed2dc-6f89-78a4-b031-97e400f2b4d1",
"stateCode": "DEPOSITED",
"transactionInfo": {
"authCode": "0316967",
"bin": "4507",
"expDate": "202502",
"maskedNumber": "163",
"operationDateTime": "2020-11-30T20:05:43",
"rrn": "711520107063"
}
}
Завершение двухстадийного заказа, а также возвраты и отмены по заказам СБОЛ, можно проводить, используя базовое API-шлюза и личный кабинет.
BindingPaymentSberPay и RecurrentPaymentSberPay, необходимо использовать связки по картам с паном, оканчивающимся на 0015. notifyPaymentStatus.do
https://3dsec.sberbank.ru/dummysbolpayment/sbol/notifyPaymentStatus.do