Прием платежей через SberPay
Этот сценарий описывает прием платежа через SberPay. Для оплаты не требуется вводить данные карты. Имеется возможность проводить платежи с автоподтверждением платежа. При подключении уточните у менеджера, какая схема работы вам необходима.
На оплату методом SberPay после подтверждения платежа дается 20 минут. Если в течение 20 минут вы не передадите Банку подтверждение в методе
session/confirm
, оплата не будет произведена, и сессия автоматически завершится в статусеcanceled
.
Сценарий оплаты
Сценарий оплаты зависит от канала платежа клиента: мобильное приложение (app), мобильный браузер (mobile_web) или десктопный браузер (web).
- Мобильное приложение (app)
- Мобильный браузер (mobile_web)
- Десктопный браузер (web)
- Создайте платежную сессию отдельно от платежа методом
session/create
или одновременно с платежом c помощью методаsession/init/payment
с набором необходимых параметров, в том числе:
sber_pay
в параметреtype
,app
в параметреchannel
,- URL для переадресации плательщика в параметре
return_url
.Если вы создали сессию отдельно от платежа, отправьте запрос
session/start/payment
.
- Дождитесь от Банка 131 вебхука
ready_to_confirm
— он означает, что Банк готов провести платеж и ждет вашего подтверждения. - Подтвердите платеж запросом
session/confirm
или отмените платеж, отправив запросsession/cancel
.Опционально: вы можете вызвать методы отправки дополнительных уведомлений, СМС или PUSH, используя метод
sberpay/push
. Выбор для отправки СМС или PUSH производится на стороне провайдера (Сбер). Мы не рекомендуем использовать методsberpay/push
вместе с параметромchannel = app
, в данном случае успешная оплата не гарантируется! - Получите вебхук
action_required
для перенаправления плательщика в приложение Сбера по URL из параметраredirect.url
. - Для устройств на iOS перенаправьте плательщика по диплинку из параметра
redirect.url
в одно из приложений Сбера (СберБанк Онлайн или СБОЛ) для оплаты. Для выбора приложения используйте следующий алгоритм (см. пример кода):- Открытие ссылки
btripsexpenses://sbolpay/...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
budgetonline-ios://sbolpay....
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
ios-app-smartonline://sbolpay/...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
app-online-ios://sbolpay/...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
sberpay://...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
sbolpay://...
. - Ожидание 50мс.
- Обновление страницы.
- Переход по ссылке на лендинг Сбер.
- Открытие ссылки
- Дождитесь, когда плательщик либо подтвердит, либо отменит оплату. Сбер отправляет плательщика в ваше приложение или на сайт по диплинку или URL, который был передан в параметре
return_url
. - Дождитесь от Банка 131 вебхука
payment_finished
с результатом проведения платежа или периодически опрашивайте статус транзакции (не чаще чем 1 раз в 5 секунд).Если плательщик откажется от оплаты, то об этом станет известно только по истечении 20 минут — как только закончится срок жизни заказа на оплату через SberPay.
- Сообщите пользователю статус платежа.
Пример запроса
curl -X
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "sber_pay",
"sber_pay": {
"phone": "71234567890",
"channel": "app"
}
}
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"metadata": "app",
"customer": {
"reference": "user-ebf7-4815-af0a-b1f77e6de7e7"
},
"payment_options": {
"return_url": "https://t.me/bank131"
}
}'
Пример ответа
{
"status": "ok",
"session": {
"id": "ps_12345",
"status": "in_progress",
"created_at": "2023-09-29T05:42:10.549869Z",
"updated_at": "2023-09-29T05:42:10.948457Z",
"acquiring_payments": [
{
"id": "pm_131",
"status": "in_progress",
"created_at": "2023-09-29T05:42:10.973559Z",
"customer": {
"reference": "user-ebf7-4815-af0a-b1f77e6de7e7"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "sber_pay",
"sber_pay": {
"phone": "71234567890",
"channel": "app"
}
}
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"metadata": "order123",
"payment_options": {
"return_url": "https://t.me/bank131",
"recurrent": false
}
}
]
}
}
- Создайте платежную сессию отдельно от платежа методом
session/create
или одновременно с платежом c помощью методаsession/init/payment
с набором необходимых параметров, в том числе:
-
sber_pay
в параметреtype
, -
mobile_web
в параметреchannel
, -
URL для переадресации плательщика в параметре
return_url
.Если вы создали сессию отдельно от платежа, отправьте запрос
session/start/payment
.
- Дождитесь от Банка 131 вебхука
ready_to_confirm
— он означает, что Банк готов провести платеж и ждет вашего подтверждения. - Подтвердите платеж запросом
session/confirm
или отмените платеж, отправив запросsession/cancel
.Опционально: вы можете вызвать методы отправки дополнительных уведомлений, СМС или PUSH, используя метод
sberpay/push
. Выбор для отправки СМС или PUSH производится на стороне провайдера (Сбер). - Получите вебхук
action_required
для перенаправления плательщика в приложение Сбера по URL из параметраredirect.url
. Для устройств на iOS перенаправьте плательщика по диплинку из параметраredirect.url
в одно из приложений Сбера (СберБанк Онлайн или СБОЛ) для оплаты. Для выбора приложения используйте следующий алгоритм (см. пример кода):- Открытие ссылки
btripsexpenses://sbolpay/...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
budgetonline-ios://sbolpay....
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
ios-app-smartonline://sbolpay/...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
app-online-ios://sbolpay/...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
sberpay://...
. - Ожидание 50мс.
- Обновление страницы (этот шаг нужен для автоматического скрытия алерта с ошибкой, если ссылку не удалось открыть).
- Редирект на свою же страницу с обновленными параметрами запроса.
- Открытие ссылки
sbolpay://...
. - Ожидание 50мс.
- Обновление страницы.
- Переход по ссылке на лендинг Сбер.
- Открытие ссылки
- Дождитесь, когда плательщик либо подтвердит, либо отменит оплату. Сбер отправляет плательщика в ваше приложение или на сайт по диплинку или URL, который был передан в параметре
return_url
. - Дождитесь от Банка 131 вебхука
payment_finished
с результатом проведения платежа или периодически опрашивайте статус транзакции (не чаще чем 1 раз в 5 секунд).Если плательщик откажется от оплаты, то об этом станет известно только по истечении 20 минут — как только закончится срок жизни заказа на оплату через SberPay.
- Сообщите пользователю статус платежа.
Пример запроса
curl -X POST \
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "sber_pay",
"sber_pay": {
"phone": "71234567890",
"channel": "mobile_web"
}
}
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"metadata": "mobile_web",
"customer": {
"reference": "user-ebf7-4815-af0a-b1f77e6de7e7"
},
"payment_options": {
"return_url": "https://t.me/bank131"
}
}'
Пример ответа
{
"status": "ok",
"session": {
"id": "ps_12345",
"status": "in_progress",
"created_at": "2023-09-29T05:42:10.549869Z",
"updated_at": "2023-09-29T05:42:10.948457Z",
"acquiring_payments": [
{
"id": "pm_131",
"status": "in_progress",
"created_at": "2023-09-29T05:42:10.973559Z",
"customer": {
"reference": "user-ebf7-4815-af0a-b1f77e6de7e7"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "sber_pay",
"sber_pay": {
"phone": "71234567890",
"channel": "mobile_web"
}
}
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"metadata": "order123",
"payment_options": {
"return_url": "https://t.me/bank131",
"recurrent": false
}
}
]
}
}
- Создайте платежную сессию отдельно от платежа методом
session/create
или одновременно с платежом c помощью методаsession/init/payment
с набором необходимых параметров, в том числе:
-
sber_pay
в параметреtype
, -
web
в параметреchannel
, -
номер телефона плательщика в параметре
phone
. -
URL для переадресации плательщика в параметре
return_url
.Если вы создали сессию отдельно от платежа, отправьте запрос
session/start/payment
.
- Дождитесь от Банка 131 вебхука
ready_to_confirm
— он означает, что Банк готов провести платеж и ждет вашего подтверждения. - Подтвердите платеж запросом
session/confirm
или отмените платеж, отправив запросsession/cancel
.Опционально: вы можете вызвать методы отправки дополнительных уведомлений, СМС или PUSH, используя метод
sberpay/push
. Выбор для отправки СМС или PUSH производится на стороне провайдера (Сбер). - Дождитесь, когда плательщик либо подтвердит, либо отменит оплату. Сбер отправляет плательщика в ваше приложение или на сайт по диплинку или URL, который был передан в параметре
return_url
. - Дождитесь от Банка 131 вебхука
payment_finished
с результатом проведения платежа или периодически опрашивайте статус транзакции (не чаще чем 1 раз в 5 секунд).Если плательщик откажется от оплаты, то об этом станет известно только по истечении 20 минут — как только закончится срок жизни заказа на оплату через SberPay.
- Сообщите пользователю статус платежа.
Пример запроса
curl -X POST \
https://proxy.bank131.ru/api/v1/session/init/payment' \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "sber_pay",
"sber_pay": {
"phone": "71234567890",
"channel": "web"
}
}
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"metadata": "web",
"customer": {
"reference": "user-ebf7-4815-af0a-b1f77e6de7e7"
},
"payment_options": {
"return_url": "https://131.ru"
}
}'
Пример ответа
{
"status": "ok",
"session": {
"id": "ps_12345",
"status": "in_progress",
"created_at": "2023-09-29T05:42:10.549869Z",
"updated_at": "2023-09-29T05:42:10.948457Z",
"acquiring_payments": [
{
"id": "pm_131",
"status": "in_progress",
"created_at": "2023-09-29T05:42:10.973559Z",
"customer": {
"reference": "user-ebf7-4815-af0a-b1f77e6de7e7"
},
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "sber_pay",
"sber_pay": {
"phone": "71234567890",
"channel": "web"
}
}
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"metadata": "order123",
"payment_options": {
"return_url": "https://t.me/bank131",
"recurrent": false
}
}
]
}
}
Выбор приложения Сбер для устройств на iOS
Пример кода для применения логики выбора
const openBtripsexpenses = () => {
window.location.href =
"btripsexpenses://sbolpay/invoicing/v2?bankInvoiceId=1961101c8c524c7fa15a9f101e965c58&orderNumber=d76d899c-6ffb-7116-ae89-afc802a92bb01";
};
const openBudgetonline = () => {
window.location.href =
"budgetonline-ios://sbolpay/invoicing/v2?bankInvoiceId=1961101c8c524c7fa15a9f101e965c58&orderNumber=d76d899c-6ffb-7116-ae89-afc802a92bb0";
};
const openIosAppSmartonline = () => {
window.location.href =
"ios-app-smartonline://sbolpay/invoicing/v2?bankInvoiceId=1961101c8c524c7fa15a9f101e965c58&orderNumber=d76d899c-6ffb-7116-ae89-afc802a92bb0";
};
const openAppOnline = () => {
window.location.href =
"app-online-ios://sbolpay/invoicing/v2?bankInvoiceId=1961101c8c524c7fa15a9f101e965c58&orderNumber=d76d899c-6ffb-7116-ae89-afc802a92bb0";
};
const openSberpay = () => {
window.location.href =
"sberpay://invoicing/v2?bankInvoiceId=1961101c8c524c7fa15a9f101e965c58&orderNumber=d76d899c-6ffb-7116-ae89-afc802a92bb0";
};
const openSbolpay = () => {
window.location.href =
"sbolpay://invoicing/v2?bankInvoiceId=1961101c8c524c7fa15a9f101e965c58&orderNumber=d76d899c-6ffb-7116-ae89-afc802a92bb0";
};
const openLandingpage = () => {
window.location.href =
"https://www.sberbank.ru/ru/person/payments/online_sberpay";
};
const clearMessage = () => {
window.location.href =
"./same_page.html";
};
if (platform == "android") {
setTimeout(openSberpay, 100);
clearMessage();
setTimeout(openLandingpage, 800);
} else if (platform == "iPhone") {
setTimeout(openIosAppSmartonline, 50);
clearMessage();
setTimeout(openAppOnline, 50);
clearMessage();
setTimeout(openBtripsexpenses, 50);
clearMessage();
setTimeout(openBudgetonline, 50);
clearMessage();
setTimeout(openSberpay, 50);
clearMessage();
setTimeout(openSbolpay, 50);
clearMessage();
setTimeout(openLandingpage, 800);
}
Рекуррентные платежи
Рекуррентные платежи CIT через SberPay не поддерживаются.
Чтобы проводить рекуррентные платежи MIT через SberPay:
-
Получите рекуррентный токен, передав в запросе
recurrent=true
(в объектеpayment_options
).Пример запроса
curl -X
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "internet_banking",
"internet_banking": {
"type": "sber_pay",
"sber_pay": {
"phone": "71234567890",
"channel": "app"
}
}
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"metadata": "app",
"customer": {
"reference": "user-ebf7-4815-af0a-b1f77e6de7e7"
},
"payment_options": {
"return_url": "https://t.me/bank131",
"recurrent": "true"
}
}' -
При проведении последующих платежей передавайте рекуррентный токен.
Пример запроса
curl -X
https://proxy.bank131.ru/api/v1/session/init/payment \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_details": {
"type": "recurrent",
"recurrent": {
"token": "e9876f32bcd947f79c324cf2da5726304a894f6ae2037de7705fdb3e0a134d39"
}
},
"amount_details": {
"amount": 1000,
"currency": "RUB"
},
"metadata": "app",
"customer": {
"reference": "user-ebf7-4815-af0a-b1f77e6de7e7"
}
}'