Создание платежа

Создание платежа

POST /v2/payment · Статус API: stable · Подпись: обязательна

Тело запроса

ПараметрТипОбязательныйОписание
accountIdStringОбязательноID счёта, с которого списывается платёж. Пользователь userId должен иметь права на списание с этого счёта.
fieldsObjectОбязательноРеквизиты получателя (см. requiredFields услуги).
service.idStringОбязательноID услуги в домене Finik.
transactionIdStringОбязательноУникальный ID транзакции на вашей стороне. Ключ идемпотентности: повторный запрос с тем же ID вернёт 409 и не создаст дубликат платежа.
userIdStringОбязательноID пользователя, от имени которого делается запрос.

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

POST /v2/payment
POST /v2/payment HTTP/1.1
Host: api.paymentsgateway.averspay.kg
Content-Type: application/json
signature: <signature>
x-api-key: <apiKey>
x-api-timestamp: 1719900000000 // Use Date.now() for the current timestamp.

{
  "accountId": "e2a32f7a-d5c0-11ec-9d64-0242ac120002",
  "fields": {
    "amount": 100,
    "phone": "+996502502502"
  },
  "service": { "id": "averspay" },
  "transactionId": "74e55218-d5b8-11ec-9d64-0242ac120002",
  "userId": "d822f440-d5c0-11ec-9d64-0242ac120002"
}

Ответ (дополнительно к полям запроса)

ПараметрТипОбязательныйОписание
idStringОбязательноУникальный ID транзакции в домене Finik. Используется в GET /v2/payments/{paymentId}.
requestDateNumberОбязательноДата поступления запроса, UNIX timestamp.
statusStringОбязательноСтатус платежа: CANCELED, FAILED, PENDING, PROCESSING, SUCCEEDED.
statusCodeNumberОбязательно200 — синхронная услуга (результат уже финальный), 201 — асинхронная (принято в обработку, статус придёт позже).
transactionDateNumberОпциональноДата проведения транзакции, UNIX timestamp. Наличие этого поля означает финальное состояние платежа.

Примеры ответов

200 OK — успешный платёж
{
  "accountId": "e2a32f7a-d5c0-11ec-9d64-0242ac120002",
  "fields": {
    "amount": 100,
    "phone": "+996502502502"
  },
  "requestDate": 1647519215,
  "service": { "id": "averspay" },
  "status": "SUCCEEDED",
  "statusCode": 200,
  "transactionDate": 1652774887442,
  "transactionId": "74e55218-d5b8-11ec-9d64-0242ac120002",
  "userId": "d822f440-d5c0-11ec-9d64-0242ac120002"
}
403 Forbidden — ошибочный запрос
{
  "statusCode": 403,
  "errorMessage": "User is not authorized to access this resource with an explicit deny"
}

Проверка статуса

GET /v2/payments/{paymentId} · Статус API: stable · Подпись: обязательна

ПараметрТипОбязательныйОписание
paymentIdStringОбязательноID платежа (id из ответа на создание платежа).

Когда проверять: в 99% случаев статус на стороне поставщика услуг меняется в течение 30 секунд. Рекомендуемая стратегия — подождать 30 секунд и проверить статус. Для лучшего UX и производительности рекомендуем вместо поллинга реализовать вебхук.

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

GET /v2/payments/{paymentId}
GET /v2/payments/1354731116_CCB5D786-B5D6-494A-8B6A-26F25BCA1D1B_CREDIT HTTP/1.1
Host: api.paymentsgateway.averspay.kg
signature: <signature>
x-api-key: <apiKey>
x-api-timestamp: 1719900000000 // Use Date.now() for the current timestamp.

Пример ответа (сокращён)

200 OK — статус платежа
{
  "id": "1354731116_CCB5D786-B5D6-494A-8B6A-26F25BCA1D1B_CREDIT",
  "accountId": "0242ac12-d5c0-11ec-9d64-e2a32f7a0002",
  "amount": 200,
  "fields": {
    "amount": 200,
    "phone": "+996709111213"
  },
  "requestDate": 1672983615075,
  "service": { "id": "averspay" },
  "status": "SUCCEEDED",
  "statusCode": 200,
  "transactionDate": 1672983615133,
  "transactionId": "CCB5D786-B5D6-494A-8B6A-26F25BCA1D1B",
  "transactionType": "CREDIT",
  "userId": "0242ac12-d5c0-11ec-9d64-d822f4400002"
}

Статус может быть SUCCEEDED, FAILED или PROCESSING.

Баланс счёта

GET /v2/accounts/{accountId} · Статус API: stable · Подпись: обязательна

ПараметрТипОбязательныйОписание
accountIdStringОбязательноID счёта, баланс которого нужно получить.

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

GET /v2/accounts/{accountId}
GET /v2/accounts/0242ac12-d5c0-11ec-9d64-e2a32f7a0002 HTTP/1.1
Host: api.paymentsgateway.averspay.kg
signature: <signature>
x-api-key: <apiKey>
x-api-timestamp: 1719900000000 // Use Date.now() for the current timestamp.

Пример ответа

200 OK — баланс
{
  "id": "0242ac12-d5c0-11ec-9d64-e2a32f7a0002",
  "balance": {
    "amount": 200,
    "currency": "KGS"
  },
  "name": "Agent 007"
}