Vepay - Банк 131. API для денежных пере водов
Начало работы
Формат запросов
Каждый запрос должен быть подписан.
Как выпустить ключ и подписать запрос, можно посмотреть здесь.
Все данные в запросах к Банку 131 и уведомлениях от Банка передаются методами POST или GET по протоколу HTTP. Параметры сообщения упаковываются в JSON-объект.
Аутентификация
В заголовках запросов к Банку необходимо передавать данные для идентификации: идентификатор вашего проекта и подпись запроса.
Название | Обязательность | Тип данных | Описание |
---|---|---|---|
X-PARTNER-PROJECT | + | string | Идентификатор проекта. Если в запросе используется промокурс валюты, нужно указать идентификатор (id) проекта соответствующего промокурса |
X-PARTNER-SIGN | + | string | Подпись запроса |
Пример запроса с аутентификацией
curl -X POST \
https://demo.bank131.ru/api/v1/session/create \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
// тело запроса
}'
Адреса серверов
Для тестирования: https://demo.bank131.ru
Для реальных операций: https://proxy.bank131.ru
Сессии и транзакции
Платежная сессия
В рамках платежной сессии session проходят все операции в API. Одна платежная сессия может объединять несколько операций, например, платеж и возврат.
Статусы платежной сессии (status)
- created — сессия создана, ожидает старта или отмены;
- in_progress — в обработке;
- accepted — успешно завершена;
- cancelled — отменена;
- error — в процессе работы произошла непредвиденная ошибка.
Статус error не является финальным. Обратитесь в поддержку Банка 131 и дождитесь финального статуса транзакции.
Статусы выплаты (status)
- in_progress — в обработке.
- pending — ожидает вашего подтверждения (
session/confirm
) или отмены (session/cancel
). - succeeded — выплата прошла успешно.
- failed — выплата не прошла из-за ошибки.
Промокурсы
Для проведения рекламных акций возможно отклонение от курса валюты в меньшую сторону.
При проведении транзакции по промокурсу в аутентификации в X-PARTNER-PROJECT передается идентификатор (id) соответствующего промокурса.
Сценарий проведения платежа
- Отправьте запрос, используя метод
session/multi/init
. В ответе вы получите информацию о платежной сессии, в рамках которой будут проходить все последующие операции. - Дождитесь от Банка 131 вебхука
action_required
. Банк отправляет вам этот вебхук в случае, когда для продолжения операции вам или вашим пользователям нужно совершить какие-то действия. Например, пользователю необходимо пройти аутентификацию по 3D Secure при платеже банковской картой. - Дождитесь от Банка 131 вебхука
payment_finished
с результатом проведения операции.
Методы
session/multi/init
Метод предназначен для старта перевода.
Адрес для отправки запроса
/api/v1/session/multi/init
Параметры запроса
Название | Обязательность | Тип | Описание |
---|---|---|---|
payment_options | - | object | Параметры рекуррентного платежа |
payment_details_multi | + | array | Параметры платежа |
payout_details_multi | - | array | Описание способа получения выплаты |
amount_details | + | object | Детали суммы |
amounts | + | object | Сумма и валюта оплаты/выплаты и курс |
source | + | object | Данные об оплате (эквайринг) |
amount | + | int | Сумма оплаты в минорных значениях (копейках). Для передачи 100 рублей укажите 1000 |
currency | + | string | Валюта оплаты в формате ISO 4217. Регистр не важен. Всегда: rub |
amount | + | int | Сумма выплаты в минорных значениях (копейках). Для выплаты 100 рублей укажите 1000 |
currency | + | string | Валюта выплаты в формате ISO 4217. Регистр не важен |
rate | + | object | Данные о курсах валют. Если передается промокурс, нужно указать его идентификатор в X-PARTNER-PROJECT |
+ | decimal | Курс для этой операции. Формат: 4 знака после запятой. Курс рассчитывается как RUB/валюта получения | |
from_currency | + | string | Валюта оплаты в формате ISO 4217. Регистр не важен. Всегда: rub |
to_currency | + | string | Валюта выплаты в формате ISO 4217. Регистр не важен |
provider_rate | + | object | Данные о курсах валют на стороне провайдера (Банк СНГ) |
rate | + | decimal | Курс для этой операции. Формат: 4 знака после запятой. Курс рассчитывается как RUB/валюта получения |
from_currency | + | string | Валюта расчета с банком СНГ в формате ISO 4217. Регистр не важен. Всегда: rub |
to_currency | + | string | Валюта выплаты в формате ISO 4217. Регистр не важен |
participant_details | + | object | Информация об отправителе и получателе |
payment_metadata | + | object | Флаг сценария конвертации на стороне банка СНГ |
provider_tx_id | + | string | Идентификатор операции на стороне банка СНГ (будет передан Банком 131 в параметре transfer-to-card.transfer ). Обязателен для сценария конвертации на стороне банка СНГ |
Пример запроса
Пример
curl -X POST \
https://demo.bank131.ru/api/v1/session/multi/init \
-H 'Content-Type: application/json' \
-H 'X-PARTNER-PROJECT: your_project_name' \
-H 'X-PARTNER-SIGN: signature' \
-d '{
"payment_options": {
"recurrent": true,
"return_url": "https://www.131.ru/"
},
"payment_details_multi": [
{
"type": "card",
"card": {
"type": "bank_card",
"bank_card": {
"number": "4242424242424242",
"expiration_year": "22",
"security_code": "123",
"expiration_month": "01"
}
}
}
],
"payout_details_multi": [
{
"type": "card",
"card": {
"type": "bank_card",
"bank_card": {
"number": "5058270610441098"
}
}
}
],
"amounts": {
"source": {
"amount": 100000,
"currency": "rub"
},
"rate": {
"rate": "9.2222",
"from_currency": "rub",
"to_currency": "tjs"
},
"provider_rate": {
"rate": "8.22",
"from_currency": "rub",
"to_currency": "tjs"
}
},
"amount_details": {
"amount": 10843,
"currency": "tjs"
},
"participant_details": {
"sender": {
"citizenship_country_iso3": "RUS",
"first_name": "Ольга",
"last_name": "Пахмутова",
"middle_name": "Семёновна",
"country_iso3": "TUR",
"state": "",
"city": "Уренгой",
"postal_code": "",
"street": "Конаковская",
"building": "1",
"flat": "",
"date_of_birth": "1998-03-15",
"identity_document": {
"id_type": "Паспорт гражданина Российской Федерации",
"id_number": "8008 579120",
"issue_date": "2020-03-01",
"division_code": "",
"issued_by": "ОВД ПО Кировскому району"
},
"source_of_money": "",
"description": "",
"contacts": {
"phone": {
"full_number": "+79376151530",
"country_iso3": "RUS",
"operator_code": "937",
"short_number": "6151530"
},
"email": ""
}
},
"recipient": {
"first_name": "Maksim",
"last_name": "Pahmutov",
"middle_name": "Semenovich",
"date_of_birth": "2000-11-08",
"contacts": {
"phone": {
"full_number": "+43523452345"
},
"email": ""
}
}
},
"payment_metadata": {
"provider_tx_id": "test1"
},
"customer": {
"reference": "lucky"
}
}'
Пример ответа
Пример
{
"status": "ok",
"session": {
"id": "ps_5988",
"status": "in_progress",
"created_at": "2024-07-02T12:13:23.692217Z",
"updated_at": "2024-07-02T12:13:24.871574Z",
"payments": [
{
"id": "po_2040",
"status": "in_progress",
"created_at": "2024-07-02T12:13:24.894376Z",
"customer": {
"reference": "lucky"
},
"payment_method": {
"type": "card",
"card": {
"brand": "mir",
"last4": "1098",
"country_iso3": "TJK"
}
},
"amount_details": {
"amount": 10843,
"currency": "tjs"
},
"amounts": {
"gross": {
"amount": 10843,
"currency": "tjs"
}
},
"paymentMetadata": {},
"participant_details": {
"sender": {
"full_name": "Ольга Пахмутова Семёновна",
"first_name": "Ольга",
"last_name": "Пахмутова",
"middle_name": "Семёновна",
"country_iso3": "TUR",
"city": "Уренгой",
"postal_code": "",
"building": "1",
"date_of_birth": "1998-03-15",
"street": "Конаковская",
"state": "",
"identity_document": {
"id_type": "Паспорт гражданина Российской Федерации",
"id_number": "8008 579120",
"issue_date": "2020-03-01",
"division_code": "",
"issued_by": "ОВД ПО Кировскому району"
},
"citizenship_country_iso3": "RUS",
"contacts": {
"phone": {
"full_number": "+79376151530",
"country_iso3": "RUS",
"operator_code": "937",
"short_number": "6151530"
},
"email": ""
}
},
"recipient": {
"full_name": "Maksim Pahmutov Semenovich",
"first_name": "Maksim",
"last_name": "Pahmutov",
"middle_name": "Semenovich",
"date_of_birth": "2000-11-08",
"contacts": {
"phone": {
"full_number": "+43523452345"
},
"email": ""
}
}
}
}
],
"acquiring_payments": [
{
"id": "pm_3345",
"status": "in_progress",
"created_at": "2024-07-02T12:13:24.894294Z",
"customer": {
"reference": "lucky"
},
"payment_details": {
"type": "card",
"card": {
"brand": "visa",
"last4": "4242",
"country_iso3": "GBR"
}
},
"amount_details": {
"amount": 10843,
"currency": "tjs"
},
"amounts": {
"gross": {
"amount": 10843,
"currency": "tjs"
}
},
"participant_details": {
"sender": {
"full_name": "Ольга Пахмутова Семёновна",
"first_name": "Ольга",
"last_name": "Пахмутова",
"middle_name": "Семёновна",
"country_iso3": "TUR",
"city": "Уренгой",
"postal_code": "",
"building": "1",
"date_of_birth": "1998-03-15",
"street": "Конаковская",
"state": "",
"identity_document": {
"id_type": "Паспорт гражданина Российской Федерации",
"id_number": "8008 579120",
"issue_date": "2020-03-01",
"division_code": "",
"issued_by": "ОВД ПО Кировскому району"
},
"citizenship_country_iso3": "RUS",
"contacts": {
"phone": {
"full_number": "+79376151530",
"country_iso3": "RUS",
"operator_code": "937",
"short_number": "6151530"
},
"email": ""
}
},
"recipient": {
"full_name": "Maksim Pahmutov Semenovich",
"first_name": "Maksim",
"last_name": "Pahmutov",
"middle_name": "Semenovich",
"date_of_birth": "2000-11-08",
"contacts": {
"phone": {
"full_number": "+43523452345"
},
"email": ""
}
}
}
}
]
}
}
session/cancel
Метод предназначен для отмены платежа. Подробнее смотрите здесь.
session/status
Метод предназначен для получения информации о сессии. Подробнее смотрите здесь.
Рекуррентные платежи
Токен для рекуррентных платежей
Вам нужно провести один успешный платеж с указанием сохранить данные банковской карты. В ответ на такой платеж вернется токен. Токен можно сохранить и проводить с ним следующие платежи.
Как получить токен при создании платежной сессии
Передайте в запросе recurrent=true
(в объекте payment_options
).
Это можно сделать при создании платежной сессии или в любом запросе на проведение платежа.
Если такой платеж пройдет успешно, вам вернется токен, по которому этот платеж можно повторить.
В этом случае вам нужно получить согласие пользователя на своей стороне — заранее.