Сенегал
Оплата мобильными деньгами в XOF
Перед тем как начать
Авторизация
Как подписывать запросы API-токеном.
Создание платежа
Базовый запрос на создание заказа, который расширяет эта страница.
Этот способ оплаты доступен не всем мерчантам. Уточните доступность у вашего менеджера.
Обзор
| Валюта | Код страны | Способы оплаты |
|---|---|---|
XOF | SN | Мобильные деньги: Free Money, Orange Money, Wave |
Доступны два сценария. Какой сценарий и какой оператор включены для вашего аккаунта, определяется настройками терминала.
Не уверены, какой вариант у вас? Уточните у менеджера.
Чем отличается от обычного заказа
Заказ создаётся через стандартный эндпоинт POST /v1/orders. Базовые поля (amount, currency, successUrl, failUrl, callbackUrl и т. д.) такие же, как у обычного заказа; дополнительно к ним передаётся объект customer с данными плательщика.
| Поле | Тип | Описание |
|---|---|---|
customer | object | Данные плательщика. Набор обязательных полей приведён ниже |
Для этого способа оплаты поле externalUserId обязательно.
Операторы: Free Money, Orange Money, Wave.
Отправьте плательщика на paymentLink: запрос на оплату уходит оператору при открытии ссылки, и плательщик подтверждает его на телефоне (push-уведомление или USSD-запрос). Страница ждёт результата и показывает его; финальный статус также приходит на ваш callbackUrl.
Поля объекта customer
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
phone | string | ✅ Да | Номер телефона плательщика, только цифры с кодом страны: 221771234567 |
firstName | string | ⚠️ Зависит от оператора | Имя |
lastName | string | ⚠️ Зависит от оператора | Фамилия |
email | string | ⚠️ Зависит от оператора | Email плательщика |
country | string | ❌ Нет | Код страны SN. Необязателен: страна определяется методом |
Обязательный набор зависит от оператора, включённого на терминале. Если нужного поля нет или телефон не соответствует формату страны, заказ отклоняется с 400 и списком полей. Передавайте firstName, lastName, email и phone, когда они у вас есть.
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "1000",
"currency": "XOF",
"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": "221771234567",
"email": "john.doe@example.com"
}
}Операторы: Free Money, Orange Money, Wave.
Плательщик перенаправляется на paymentLink — страницу провайдера — и подтверждает оплату там (некоторые операторы дополнительно присылают подтверждение на телефон).
Поля объекта customer
| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
phone | string | ✅ Да | Номер телефона плательщика, только цифры с кодом страны: 221771234567 |
firstName | string | ⚠️ Зависит от оператора | Имя |
lastName | string | ⚠️ Зависит от оператора | Фамилия |
email | string | ⚠️ Зависит от оператора | Email плательщика |
address | string | ⚠️ Зависит от оператора | Адрес плательщика |
country | string | ❌ Нет | Код страны SN. Необязателен: страна определяется методом |
Обязательный набор зависит от оператора, включённого на терминале. Если нужного поля нет или телефон не соответствует формату страны, заказ отклоняется с 400 и списком полей. Передавайте firstName, lastName, email и phone, когда они у вас есть.
Пример запроса
{
"purpose": "Payment for order #1234",
"amount": "1000",
"currency": "XOF",
"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": "221771234567",
"email": "john.doe@example.com",
"address": "12 Rue Example, Dakar"
}
}Сумма должна быть кратна 5 (требование провайдера), иначе платёж будет отклонён.
Ответ
В ответе возвращается стандартный объект заказа. Заказ создаётся со статусом CREATED; перенаправьте плательщика на paymentLink, чтобы он завершил оплату.