Payment Docs
Платежи по странамАфрика

Нигерия

Банковские переводы и оплата через кошелёк OPay в NGN

Перед тем как начать

Этот способ оплаты доступен не всем мерчантам. Уточните доступность у вашего менеджера.

Обзор

ВалютаКод страныСпособы оплаты
NGNNGБанковский перевод с документом · Банковский перевод на одноразовый счёт / OPay / PalmPay · Банковский перевод с BVN · Страница провайдера · Airtel

В Нигерии доступно несколько вариантов интеграции. Они используют разных провайдеров и требуют разные данные плательщика; какой из них включён для вашего аккаунта, определяется настройками терминала.

Не уверены, какой вариант у вас? Уточните у менеджера.

Чем отличается от обычного заказа

Заказ создаётся через стандартный эндпоинт POST /v1/orders. Базовые поля (amount, currency, successUrl, failUrl, callbackUrl и т. д.) такие же, как у обычного заказа; дополнительно к ним передаётся объект customer с данными плательщика.

ПолеТипОписание
customerobjectДанные плательщика. Набор обязательных полей приведён ниже

Плательщик перенаправляется на paymentLink и завершает перевод на странице провайдера. Требуется документ, удостоверяющий личность плательщика.

Для этого способа оплаты поле externalUserId обязательно.

Поля объекта customer

ПолеТипОбязательноеОписание
countrystring✅ ДаКод страны, всегда NG
phonestring✅ ДаНомер телефона плательщика
documentstring✅ ДаНомер документа плательщика
documentTypestring✅ ДаТип документа, например ID
emailstring✅ ДаEmail плательщика
firstNamestring✅ ДаИмя
lastNamestring✅ ДаФамилия

Пример запроса

{
  "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

ПолеТипОбязательноеОписание
phonestring⚠️ Зависит от методаНомер телефона плательщика, например 2348012345678. Обязателен для OPay и PalmPay
emailstring⚠️ Зависит от методаEmail плательщика
firstNamestring⚠️ Зависит от методаИмя
lastNamestring⚠️ Зависит от методаФамилия
bankAccountstring⚠️ Зависит от методаBVN плательщика (Bank Verification Number), 11 цифр
bankCodestring⚠️ Зависит от методаКод банка плательщика
countrystring❌ НетКод страны 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-transfer
curl -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

ПолеТипОбязательноеОписание
countrystring✅ ДаКод страны, всегда NG
firstNamestring✅ ДаИмя
lastNamestring✅ ДаФамилия
phonestring✅ ДаНомер телефона плательщика
emailstring✅ ДаEmail плательщика
bankAccountstring✅ ДаBVN плательщика (Bank Verification Number), 11 цифр
bankCodestring✅ ДаКод банка плательщика

Пример запроса

{
  "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

ПолеТипОбязательноеОписание
phonestring⚠️ Зависит от методаНомер телефона плательщика, например 2348012345678
emailstring⚠️ Зависит от методаEmail плательщика
firstNamestring⚠️ Зависит от методаИмя
lastNamestring⚠️ Зависит от методаФамилия
countrystring❌ НетКод страны 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

ПолеТипОбязательноеОписание
phonestring✅ ДаНомер телефона плательщика, например 2348012345678
countrystring❌ НетКод страны 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, чтобы он завершил оплату.

Поля объекта заказа

Следующие шаги

На этой странице