Нигерия
Банковские переводы и оплата через кошелёк OPay в NGN
Перед тем как начать
Авторизация
Как подписывать запросы API-токеном.
Создание платежа
Базовый запрос на создание заказа, который расширяет эта страница.
Этот способ оплаты доступен не всем мерчантам. Уточните доступность у вашего менеджера.
Обзор
| Валюта | Код страны | Способы оплаты |
|---|---|---|
NGN | NG | Банковский перевод с документом · Банковский перевод на одноразовый счёт / OPay / PalmPay · Банковский перевод с BVN · Страница провайдера · Airtel |
В Нигерии доступно несколько вариантов интеграции. Они используют разных провайдеров и требуют разные данные плательщика; какой из них включён для вашего аккаунта, определяется настройками терминала.
Не уверены, какой вариант у вас? Уточните у менеджера.
Чем отличается от обычного заказа
Заказ создаётся через стандартный эндпоинт POST /v1/orders. Базовые поля (amount, currency, successUrl, failUrl, callbackUrl и т. д.) такие же, как у обычного заказа; дополнительно к ним передаётся объект customer с данными плательщика.
| Поле | Тип | Описание |
|---|---|---|
customer | object | Данные плательщика. Набор обязательных полей приведён ниже |
Плательщик перенаправляется на paymentLink и завершает перевод на странице провайдера. Требуется документ, удостоверяющий личность плательщика.
Для этого способа оплаты поле externalUserId обязательно.
Поля объекта customer
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
country | string | ✅ Да | Код страны, всегда NG |
phone | string | ✅ Да | Номер телефона плательщика |
document | string | ✅ Да | Номер документа плательщика |
documentType | string | ✅ Да | Тип документа, например ID |
email | string | ✅ Да | Email плательщика |
firstName | string | ✅ Да | Имя |
lastName | string | ✅ Да | Фамилия |
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "1000.5",
"currency": "NGN",
"externalId": "external_id",
"externalUserId": "external_user_id",
"successUrl": "https://example.com/success",
"failUrl": "https://example.com/fail",
"callbackUrl": "https://example.com/webhooks/payments",
"isFeeOnUser": false,
"customer": {
"firstName": "John",
"lastName": "Doe",
"country": "NG",
"phone": "2348012345678",
"email": "john.doe@example.com",
"document": "A123456789",
"documentType": "ID"
}
}paymentLink открывает страницу с реквизитами временного банковского счёта (название банка, номер счёта, имя получателя). Плательщик самостоятельно делает перевод по этим реквизитам из своего банковского приложения или кошелька OPay / PalmPay / Pay Attitude.
Реквизиты одноразовые и действуют только на точную сумму заказа. Предупредите плательщика, что перевести нужно ровно указанную сумму одним платежом. Иначе обработка может сильно затянуться, а средства могут быть потеряны.
Поля объекта customer
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
phone | string | ⚠️ Зависит от метода | Номер телефона плательщика, например 2348012345678. Обязателен для OPay и PalmPay |
email | string | ⚠️ Зависит от метода | Email плательщика |
firstName | string | ⚠️ Зависит от метода | Имя |
lastName | string | ⚠️ Зависит от метода | Фамилия |
bankAccount | string | ⚠️ Зависит от метода | BVN плательщика (Bank Verification Number), 11 цифр |
bankCode | string | ⚠️ Зависит от метода | Код банка плательщика |
country | string | ❌ Нет | Код страны NG |
Обязательный набор зависит от метода, включённого на терминале. Если нужного поля нет, заказ отклоняется с 400 и списком полей. Без телефона идентификатором плательщика становится email, поэтому передавайте хотя бы одно из них.
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "10000",
"currency": "NGN",
"externalId": "external_id",
"externalUserId": "external_user_id",
"successUrl": "https://example.com/success",
"failUrl": "https://example.com/fail",
"callbackUrl": "https://example.com/webhooks/payments",
"isFeeOnUser": false,
"customer": {
"firstName": "John",
"lastName": "Doe",
"phone": "2348012345678",
"email": "john.doe@example.com"
}
}Получение реквизитов через API (H2H)
Чтобы показать реквизиты на своей странице вместо paymentLink, запросите их после создания заказа:
POST /v1/orders/{orderId}/h2h/bank-transfercurl -X POST "https://api.1capital.capital/v1/orders/{orderId}/h2h/bank-transfer" \
-H "x-api-token: YOUR_API_TOKEN"Первый вызов создаёт платёж у провайдера, повторные возвращают те же реквизиты. Не отправляйте плательщика ещё и на paymentLink: там показан тот же счёт.
{
"accountNumber": "1597534560",
"accountName": "EXAMPLE TECH LTD",
"bankName": "GLOBUS BANK",
"bankCode": null,
"amount": "10000",
"currency": "NGN",
"details": {
"account_name": "EXAMPLE TECH LTD",
"account_number": "1597534560",
"bank_name": "GLOBUS BANK",
"transfer_amount": "10000"
}
}| Поле | Описание |
|---|---|
accountNumber | Счёт для перевода |
accountName | Имя владельца счёта |
bankName | Название банка |
bankCode | Код банка, если провайдер его вернул |
amount | Сумма к переводу, если провайдер её вернул |
details | Все реквизиты в том виде, в каком их вернул провайдер. Названия полей у банков разные: показывайте плательщику все поля |
| Статус | Когда |
|---|---|
400 | Метод, включённый на терминале, не выдаёт реквизиты счёта, или заказ тестовый |
404 | Заказ не найден |
409 | Заказ уже не в статусе CREATED или PENDING |
503 | Провайдер ещё не выдал реквизиты: повторите запрос через несколько секунд |
Плательщик перенаправляется на paymentLink и завершает перевод на странице провайдера. Требуются BVN (Bank Verification Number) и код банка плательщика.
Поля объекта customer
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
country | string | ✅ Да | Код страны, всегда NG |
firstName | string | ✅ Да | Имя |
lastName | string | ✅ Да | Фамилия |
phone | string | ✅ Да | Номер телефона плательщика |
email | string | ✅ Да | Email плательщика |
bankAccount | string | ✅ Да | BVN плательщика (Bank Verification Number), 11 цифр |
bankCode | string | ✅ Да | Код банка плательщика |
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "1000.5",
"currency": "NGN",
"externalId": "external_id",
"externalUserId": "external_user_id",
"successUrl": "https://example.com/success",
"failUrl": "https://example.com/fail",
"callbackUrl": "https://example.com/webhooks/payments",
"isFeeOnUser": false,
"customer": {
"firstName": "John",
"lastName": "Doe",
"country": "NG",
"phone": "2348012345678",
"email": "john.doe@example.com",
"bankAccount": "22123456789",
"bankCode": "058"
}
}Банковский перевод, OPay, PalmPay, Pay Attitude или карта на странице провайдера: плательщик перенаправляется на paymentLink и завершает оплату там.
Поля объекта customer
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
phone | string | ⚠️ Зависит от метода | Номер телефона плательщика, например 2348012345678 |
email | string | ⚠️ Зависит от метода | Email плательщика |
firstName | string | ⚠️ Зависит от метода | Имя |
lastName | string | ⚠️ Зависит от метода | Фамилия |
country | string | ❌ Нет | Код страны NG |
Обязательный набор зависит от оператора, включённого на терминале. Если нужного поля нет или телефон не соответствует формату страны, заказ отклоняется с 400 и списком полей. Передавайте firstName, lastName, email и phone, когда они у вас есть.
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "10000",
"currency": "NGN",
"externalId": "external_id",
"externalUserId": "external_user_id",
"successUrl": "https://example.com/success",
"failUrl": "https://example.com/fail",
"callbackUrl": "https://example.com/webhooks/payments",
"isFeeOnUser": false,
"customer": {
"firstName": "John",
"lastName": "Doe",
"phone": "2348012345678",
"email": "john.doe@example.com"
}
}Отправьте плательщика на paymentLink: запрос на оплату уходит в Airtel при открытии ссылки, и плательщик подтверждает его на телефоне. Страница ждёт результата и показывает его; финальный статус также приходит на ваш callbackUrl.
Поля объекта customer
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
phone | string | ✅ Да | Номер телефона плательщика, например 2348012345678 |
country | string | ❌ Нет | Код страны NG |
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "10000",
"currency": "NGN",
"externalId": "external_id",
"externalUserId": "external_user_id",
"successUrl": "https://example.com/success",
"failUrl": "https://example.com/fail",
"callbackUrl": "https://example.com/webhooks/payments",
"isFeeOnUser": false,
"customer": {
"firstName": "John",
"lastName": "Doe",
"phone": "2348012345678",
"email": "john.doe@example.com"
}
}Ответ
В ответе возвращается стандартный объект заказа. Заказ создаётся со статусом CREATED; перенаправьте плательщика на paymentLink, чтобы он завершил оплату.