SigmaPay

Payin API (приём платежей)

Эндпоинты приёма платежей — создание, получение, отмена, подтверждение, загрузка доказательств. Формат запросов, коды ошибок, TransactionPayload.

Payin API позволяет создавать платёжные транзакции, получать их данные, отменять, подтверждать и загружать доказательства оплаты (чеки). Все запросы требуют авторизации: заголовок x-public-token и подпись signature.

Базовый путь: /api/v1/payin

Спецификация API (Swagger)

Полная спецификация эндпоинтов, схем запросов/ответов и интерактивная документация доступны во вкладке API (OpenAPI). Там же можно посмотреть актуальные модели и попробовать запросы.

Общая логика

  • Данные по транзакции отдаются из БД API (с кэшированием). Операции отмены, подтверждения и загрузки proof выполняются в Core; после этого API возвращает актуальные данные из БД.
  • Успешные ответы имеют вид { "message": "OK", "data": <TransactionPayload> }. Формат data одинаков для всех эндпоинтов (см. Формат данных транзакции).

Эндпоинты

GET /api/v1/payin/:transactionId — получение платежа

Возвращает данные по платежу по transactionId (чтение из БД).

ПараметрРасположениеТипОбязательныйОписание
transactionIdpathstringдаUUID транзакции

Для подписи при GET передаётся тот же transactionId в query и signature — см. Авторизация (раздел про запросы по transactionId).

Ответ 200: { "message": "OK", "data": <TransactionPayload> }

Ошибки: 401 (авторизация), 403 (доступ к payin отключён), 404 (транзакция не найдена), 500.


POST /api/v1/payin — создание платежа

Создаёт платёж в Core и возвращает актуальные данные из БД. Тело запроса — application/json. Подпись считается по полям body (в т.ч. amount, clientId, gate и т.д.) — см. Авторизация.

Тело запроса:

ПолеТипОбязательныйОписание
amountnumberдаСумма платежа
clientIdnumberдаID клиента мерчанта
gatestringнетID шлюза
paymentMethodstringнетМетод оплаты
paymentIdstringнетВнешний ID платежа (ваш)
descriptionstringнетОписание (до 500 символов)
isTestnumberнет0 или 1 — тестовый платёж
clientIpstringнетIP клиента
clientEmailstringнетEmail клиента
clientNamestringнетИмя клиента
successUrlstringнетURL редиректа при успехе
failureUrlstringнетURL редиректа при ошибке
webhookUrlstringнетURL вебхука
webhookMethodstringнетget или post
languagestringнетКод языка (до 16 символов)

Полный список полей и типов — во вкладке API (OpenAPI).

Ответ 200: { "message": "OK", "data": <TransactionPayload> }

Ошибки: 400 (невалидное тело), 401, 403 (ERROR_ACCESS_PAYIN_DISABLED), 404 (транзакция не найдена после создания), 500 (в т.ч. ERROR_CORE_INVALID_RESPONSE при отсутствии transactionId в ответе Core).


DELETE /api/v1/payin/:transactionId — отмена платежа

Отменяет платёж в Core и возвращает актуальные данные из БД. Подпись — по payload с полем transactionId (то же, что в URL); для DELETE тело с transactionId и signature — см. Авторизация (раздел про запросы по transactionId).

ПараметрРасположениеТипОбязательный
transactionIdpathstringда

Ответ 200: { "message": "OK", "data": <TransactionPayload> }

Ошибки: 401, 403, 404, 500. При ошибке Core возвращается его статус и тело.


PATCH /api/v1/payin/:transactionId — подтверждение платежа

Подтверждает платёж в Core (confirm) и возвращает актуальные данные из БД. Подпись — по transactionId (как в URL) и signature в body.

ПараметрРасположениеТипОбязательный
transactionIdpathstringда

Ответ 200: { "message": "OK", "data": <TransactionPayload> }

Ошибки: 401, 403, 404, 500.


POST /api/v1/payin/:transactionId — загрузка доказательства оплаты (proof)

Загружает файл доказательства оплаты (чек) в Core. Тело — multipart/form-data, поле document (файл). Допустимые MIME: image/* (кроме image/gif), application/pdf. Максимальный размер файла — 10 МБ. Подпись — по transactionId (из URL) и signature в body.

ПараметрРасположениеТипОбязательный
transactionIdpathstringда

Ответ 200: { "message": "OK", "data": <TransactionPayload> }

Ошибки: 400 (ERROR_INVALID_REQUEST при отсутствии файла, ERROR_INVALID_DOCUMENT_TYPE при недопустимом типе), 401, 403, 404, 500.


Формат данных транзакции (TransactionPayload)

Объект data в успешных ответах имеет следующую структуру. Точные типы и вложенные объекты см. во вкладке API.

ПолеТипОписание
createdAtstringДата создания (dd.mm.yyyy HH:mm:ss)
updatedAtstringДата обновления
expiresAtstringВремя истечения платежа
merchantIdnumberID мерчанта
externalIdstringВнешний ID платежа (если передан при создании)
transactionIdstringUUID транзакции
statusstringpending | success | failed | canceled | expired | processing | proof_requested
amountnumberСумма
currencystringВалюта
exchangeRatenumberКурс
descriptionstringОписание (опционально)
isTestbooleanПризнак тестового платежа
paymentPagestringURL платёжной страницы
paymentTelegramBotstringОпционально. Ссылка на Telegram-бота с параметром tid (UUID транзакции), если платёж создан с указанием tgbotId. Формат: https://t.me/{username}?tid={transactionId}
paymentobjectcardName, bankName, cardNumber, phoneNumber, qrCode, accountNumber, ibanNumber (строки или null)
clientobjectid, email, name, ip, userAgent, country, city (строки или null; id — строка)

Коды ошибок (message)

messageHTTPОписание
ERROR_PUBLIC_TOKEN_REQUIRED401Нет заголовка x-public-token
ERROR_SIGNATURE_REQUIRED401См. Авторизация
ERROR_SIGNATURE_INVALID401См. Авторизация
ERROR_PUBLIC_TOKEN_INVALID401См. Авторизация
ERROR_ACCESS_PAYIN_DISABLED403Доступ к payin отключён для мерчанта
ERROR_TRANSACTION_NOT_FOUND404Транзакция не найдена или нет доступа
ERROR_INVALID_REQUEST400Невалидный запрос (например нет файла в proof)
ERROR_INVALID_DOCUMENT_TYPE400Недопустимый тип файла для proof
ERROR_CORE_REQUEST_FAILED4xx/5xxОшибка ответа Core (тело может содержать детали)
ERROR_CORE_INVALID_RESPONSE500В ответе Core нет transactionId (create)
ERROR_SERVER_INTERNAL_ERROR500Внутренняя ошибка сервера

Полный перечень эндпоинтов, схем и примеров запросов/ответов — во вкладке API (OpenAPI).

On this page