Перейти к основному содержимому

Рекуррентные платежи через СБП

API Zetplat позволяет:

Как получить токен со списанием средств​

1. Создайте платежную сессию​

Отправьте запрос на создание сессии transaction/initiate. В ответе придет идентификатор платежной сессии.

2. Начните платеж​

Отправьте запрос на проведение платежа transaction/start/checkout.

3. Дождитесь вебхука для платежа​

Zetplat отправит вам вебхук approve_pending и будет ждать подтверждения или отмены.

4. Подтвердите или отмените платеж​

Проверьте данные для платежа, а затем подтвердите или отмените его:

5. Выполните дополнительные действия​

Дождитесь вебхука action_pending. В параметре user_action.payment_qr.qr_data.qr_contentпередается диплинк на оплату. Его можно показать плательщику в виде QR-кода или отправить по нему плательщика в приложение банка-эмитента.

6. Дождитесь результата платежа​

Zetplat отправит вам вебхук checkout_results.

Если платеж успешен, в вебхуке будут переданы значения status=completed (объект session_info) и status=successful (массив payouts), а в параметре recurring_token_info.token будет передан токен для последующих оплат.

Если платеж неуспешен, в вебхуке будут переданы значения status=canceled (объект transaction) и status=unsuccessful (массив payouts), а рекуррентного токена не будет.

Пример
curl -X POST \
https://partner.ru \
-H 'Content-Type: application/json' \
-H 'X-Signature: signature' \
-d '{
"type": "checkout_results",
"session_info": {
"id": "ps_713610",
"transaction_status": "completed",
"created_date": "2024-08-08T08:06:51.841432Z",
"updated_at": "2024-08-08T08:14:56.168219Z",
"payments": [{
"id": "pm_308906",
"transaction_status": "successful",
"created_date": "2024-08-08T08:06:51.931193Z",
"completed_date": "2024-08-08T08:14:55.996273Z",
"user_info": {
"user_id": "user123",
"contact_info": [{
"phone_number": "7123****345"
}]
},
"payment_info": {
"type": "fps_info"
},
"recurring_token_info": {
"token": "6a6a29c4193a8e1049231e1497a3c5f180e120b20db81b39f53ec478029b53cf",
"created_date": "2024-08-08T10:10:27+03:00",
"completed_date": "2034-08-08T10:10:27+03:00",
"token_active": true,
"type": "recurring_token"
},
"sum_info": {
"sum": 1000,
"currency_code": "RUB"
},
"fee_info": {
"net": {
"sum": 1000,
"currency_code": "RUB"
},
"gross": {
"sum": 1000,
"currency_code": "RUB"
}
}
}],
"actions": {
"approve": "2024-08-08T08:06:52.184593Z",
"finalize": "2024-08-08T08:14:55.699095Z"
}
}
}'

Схема привязки счета к СБП​

Как получить токен без списания средств​

Чтобы получить токен для рекуррентных платежей через СБП без фактического списания денег, выполните стандартные шаги по проведению платежа через СБП.

При создании запроса transaction/initiate укажите "type": "fps_info" и "allow_recurring": true.

В объекте sum_info укажите любое положительное числом (например, 1 рубль). В этом случае значение объекта игнорируется, и сумма списана не будет.

Токен для рекуррентных платежей вернется в вебхуке checkout_results.

Пример
curl -X POST \
https://api-demo.zetplat.com/api/v1/transaction/initiate \
-H 'Content-Type: application/json' \
-H 'X-Project-Id: your_project_name' \
-H 'X-Signature: signature' \
-d '{
"payment_info": {
"type": "fps_info"
},
"sum_info": {
"sum": 100,
"currency_code": "rub"
},
"user_info": {
"user_id": "lucky"
},
"payment_settings": {
"allow_recurring": true
}
}'

Когда получите токен, принимайте рекуррентные платежи стандартным образом.

Пример
curl -X POST \
https://api-demo.zetplat.com/api/v1/transaction/initiate \
-H 'Content-Type: application/json' \
-H 'X-Project-Id: your_project_name' \
-H 'X-Signature: signature' \
-d '{
"payment_info": {
"type": "recurring_token_info",
"recurring_token_info": {
"token": "e9876f32bcd947f79c324cf2da5726304a894f6ae2037de7705fdb3e0a134d39"
}
},
"sum_info": {
"sum": 10000,
"currency_code": "rub"
},
"user_info": {
"user_id": "lucky"
}
}'

Подробнее о статусах платежа
Описание кодов ошибок и их значений