Прием платежей (PayIn)
Интеграция приема P2P-платежей с помощью Syncra Merchant API V2
Прием платежей (PayIn)
Функционал входящих платежей (PayIn) позволяет мерчантам автоматизировать процесс приема средств от физических лиц через систему быстрых платежей (СБП), банковские карты (Card2Card) и другие методы онлайн-оплаты.
Процесс оплаты (PayIn Flow)
Классический сценарий проведения платежа состоит из следующих шагов:
- Создание транзакции: Мерчант отправляет POST-запрос на
/deals/payin, указывая сумму, валюту и свои URL-адреса для перенаправления. - Получение URL оплаты: API возвращает уникальную ссылку на платежную страницу
payment_page_url. - Перевод средств: Клиент переходит по ссылке, видит реквизиты P2P-трейдера (например, номер карты Сбербанка) и совершает обычный перевод в мобильном приложении своего банка.
- Уведомление: После подтверждения получения трейдером и проверки системой, шлюз отправляет серверный Webhook Callback мерчанту, а клиента перенаправляет на Success URL.
Эндпоинт создания PayIn запроса
POST /api/v1/p2p/merchant/deals/payinПараметры запроса (JSON Body)
| Поле | Тип | Обяз. | Описание |
|---|---|---|---|
amount | int64 | Да | Сумма платежа в минимальных единицах валюты (копейках для RUB). Например, 150000 = 1500.00 RUB. |
currency | string | Да | ISO 4217 код валюты платежа. Определяется конфигурацией тенанта (например, "RUB", "KZT"). |
idempotency_key | string | Да | Уникальный идентификатор запроса на стороне мерчанта. Используется для предотвращения дублирования платежей. |
client_id | string | Нет | Уникальный ID плательщика в вашей системе (казино, ЛК). |
payment_method | string | Нет | Желаемый метод оплаты: sbp, card, sberpay, tpay и др. Если не указан, клиент выбирает на форме. |
callback_url | string | Нет | URL вашего обработчика вебхуков для этой транзакции. |
success_url | string | Нет | URL для перенаправления клиента в случае успешной оплаты. |
failed_url | string | Нет | URL для перенаправления клиента в случае ошибки или отмены оплаты. |
Пример запроса
{
"amount": 250050,
"currency": "RUB",
"idempotency_key": "order_uuid_abc123456",
"client_id": "player_user_9921",
"payment_method": "sbp",
"callback_url": "https://merchant.example/callbacks/syncra",
"success_url": "https://merchant.example/payment/success",
"failed_url": "https://merchant.example/payment/failed"
}Пример ответа (200 OK)
{
"data": {
"id": "7ac148fe-19a3-45bb-b992-019fac55b721",
"status": "PENDING",
"amount": 250050,
"currency": "RUB",
"payment_page_url": "https://checkout.syncra.money/pay/7ac148fe-19a3-45bb-b992-019fac55b721",
"created_at": "2026-07-12T17:20:00Z"
}
}Статусы PayIn транзакции
Каждая транзакция в системе проходит через определенные состояния. Ниже приведены все 12 числовых статусов V1 и их соответствующие строковые аналоги в V2:
| Код V1 | Название V1 | Финальный? | Статус V2 | Описание состояния |
|---|---|---|---|---|
| 1 | WaitingPayment | Нет | PENDING | Транзакция создана, ожидает оплаты клиентом. |
| 2 | ConfirmedByPayer | Нет | CUSTOMER_CONFIRMED | Клиент нажал кнопку «Я оплатил», ожидает проверки трейдером. |
| 11 | Paid | Да | PAID | Средства успешно зачислены, сделка закрыта. |
| 12 | Cancelled | Да | CANCELLED | Платеж отменен мерчантом или клиентом вручную. |
| 13 | Timeout | Да | EXPIRED | Истекло время, отведенное на оплату (таймаут). |
| 14 | OverPaid | Да | OVERPAID | Клиент перевел сумму, превышающую указанную в счете. |
| 15 | PartiallyPaid | Да | UNDERPAID | Клиент перевел сумму меньше указанной в счете. |
| 16 | Returned | Да | REFUNDED | Средства были возвращены клиенту в полном объеме. |
| 21 | Disput | Нет | DISPUTED | Возник спор по платежу (клиент заявляет об оплате, трейдер отрицает). |
| 31 | WaitingPaymentChannel | Нет | AWAITING_METHOD | Ожидание выбора клиентом платежного метода и генерации реквизитов. |
| 32 | RollingBack | Нет | REFUNDING | Запущен процесс возврата средств клиенту. |
| 1000 | Unknown | Нет | UNKNOWN | Непредвиденное состояние ошибки в системе. |
Поддерживаемые методы оплаты
Доступные методы оплаты определяются конфигурацией вашего тенанта (таблица p2p_payment_methods). При создании платежа укажите slug метода в параметре payment_method. Актуальный список можно получить через GET /banks.
Типичные значения:
sbp— Система быстрых платежей (перевод по номеру телефона).card— Перевод по номеру банковской карты.sberpay— Быстрая оплата через Сбербанк.tpay— Быстрая оплата через Т-Банк.
Список методов может расширяться администратором в реальном времени без перезапуска сервисов. Если payment_method не указан, клиент сам выбирает метод на платёжной форме.
Пример на curl
curl -X POST https://api.syncra.money/api/v1/p2p/merchant/deals/payin \
-H "X-Merchant-Token: your_token_here" \
-H "X-Timestamp: 1783856120" \
-H "X-Signature: t=1783856120,v1=9e87d0c3c8801d0a5198d023b6b19a16f2c8d2037920ab3e09819cd8e412cfab" \
-H "Content-Type: application/json" \
-d '{
"amount": 100000,
"currency": "RUB",
"idempotency_key": "my_unique_p2p_key_001"
}'