Тариф и оплата
Подписка компании на Wasyt: состояние тарифа, баланс и долг, пополнение картой или по QR через платёжный шлюз. Филиал работает по тарифу головной компании.
| Метод | Адрес | Назначение |
|---|---|---|
| GET | /company/tariff | Информация о тарифе |
| POST | /company/tariff/pay-card | Оплатить картой |
| POST | /company/tariff/pay-card/confirm | Подтвердить оплату картой |
| POST | /company/tariff/pay-qr | Оплатить по QR |
| GET | /company/tariff/payment-status/{externalId} | Статус платежа |
Информация о тарифе
/company/tariffПодписка головной компании: реквизиты клиента, статус и блокировка, период оплаты (в том числе отложенная смена), баланс, долг, сумма к оплате и рекомендуемый платёж, стоимость за месяц/год, дата следующего списания и расшифровка по услугам. Если тариф не настроен — пустой объект с 200.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
client | object | |
client.full_name | string | ФИО |
client.inn | string | ИНН |
client.agreement_number | string | Номер договора |
client.agreement_date | null | |
client.phone | string | Телефон |
status | string | Статус |
is_blocked | boolean | Заблокирован |
block_at | null | |
block_scheduled | boolean | |
billing_period | string | |
pending_billing_period | null | |
pending_billing_period_at | null | |
balance | integer | Баланс |
debt | integer | Долг |
due_now | integer | |
amount_to_pay | integer | |
recommended_payment | object | |
recommended_payment.amount | integer | Сумма |
recommended_payment.current_period_amount | integer | |
recommended_payment.next_period_amount | integer | |
recommended_payment.next_period_starts_at | string | |
recommended_payment.is_prorated | boolean | |
monthly_total | integer | |
yearly_total | integer | |
period_total | integer | |
days_until_next_charge | integer | |
next_payment_at | string | |
trial_ends_at | null | |
breakdown | object[] | |
breakdown[].title | string | |
breakdown[].amount | integer | Сумма |
breakdown[].is_filial | boolean |
{
"client": {
"full_name": "Director 1",
"inn": "000000001",
"agreement_number": "001/2026",
"agreement_date": null,
"phone": "998020000001"
},
"status": "active",
"is_blocked": false,
"block_at": null,
"block_scheduled": false,
"billing_period": "monthly",
"pending_billing_period": null,
"pending_billing_period_at": null,
"balance": 0,
"debt": 0,
"due_now": 8300,
"amount_to_pay": 8300,
"recommended_payment": {
"amount": 257300,
"current_period_amount": 8300,
"next_period_amount": 249000,
"next_period_starts_at": "2026-10-01",
"is_prorated": true
},
"monthly_total": 249000,
"yearly_total": 5388000,
"period_total": 249000,
"days_until_next_charge": 1,
"next_payment_at": "2026-10-01",
"trial_ends_at": null,
"breakdown": [
{
"title": "Company 1",
"amount": 150000,
"is_filial": false
},
{
"title": "Company 1-1",
"amount": 99000,
"is_filial": true
}
]
}Оплатить картой
/company/tariff/pay-cardОткрывает оплату тарифа картой в шлюзе и создаёт платёж в статусе pending; предыдущий незавершённый платёж отменяется. Возвращает external_id, transaction_id, cid и телефон, на который отправлен SMS-код, — их нужно передать в подтверждение. Нет тарифа — 404, шлюз недоступен — 503.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
amount | number | Да | Сумма. До 2 знаков после запятой. Не меньше 1. Не больше 999999999999.99 |
card_number | integer | Да | Ровно 16 цифр |
expire_date | string | Да | Срок действия карты. Макс. 7 символов |
phone | string | Нет | Телефон (информационно; код приходит на телефон карты). Формат 998xxyyyzzzz |
{
"amount": 50000,
"card_number": "8600123412341234",
"expire_date": "03/99",
"phone": "998901234567"
}curl -X POST "https://api.wasyt.uz/company/tariff/pay-card" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"amount":50000,"card_number":"8600123412341234","expire_date":"03/99","phone":"998901234567"}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
external_id | string | |
transaction_id | string | Транзакция |
cid | string | |
otp_sent_phone | string |
{
"external_id": "da4264bb-2767-471d-bd02-c968a284068c",
"transaction_id": "gw-tx-1",
"cid": "gw-cid-1",
"otp_sent_phone": "+99890***1234"
}Подтвердить оплату картой
/company/tariff/pay-card/confirmПередаёт в шлюз SMS-код по transaction_id и cid из ответа оплаты картой и возвращает ответ шлюза. Баланс пополняется после уведомления шлюза. Ошибки шлюза (просроченный или неверный код) переводятся в понятное сообщение с 400, недоступность — 503.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
transaction_id | string | Да | Транзакция |
cid | string | Да | Идентификатор карты из ответа оплаты |
otp | string | Да | Код из SMS |
Ответ
Пример ответа пока не записан тестами.
Оплатить по QR
/company/tariff/pay-qrОткрывает страницу оплаты у выбранного провайдера (click, uzum, payme, paylov) и создаёт платёж в статусе pending; предыдущий незавершённый платёж отменяется. Возвращает external_id, checkout_url и qr_content — QR-код ссылки в виде PNG data URI. Оплата подтверждается асинхронно, статус проверяется отдельным методом.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Тело запроса
| Поле | Тип | Обязательно | Описание |
|---|---|---|---|
amount | number | Да | Сумма. До 2 знаков после запятой. Не меньше 1. Не больше 999999999999.99 |
provider | string | Да | Допустимые значения: click, uzum, payme, paylov |
{
"amount": 50000,
"provider": "click"
}curl -X POST "https://api.wasyt.uz/company/tariff/pay-qr" \
-H "Accept: application/json" \
-H "Accept-Language: ru" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{"amount":50000,"provider":"click"}'Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
external_id | string | |
provider | string | |
checkout_url | string | |
qr_content | string |
{
"external_id": "9678dea4-c43c-4a97-8941-9bd518748625",
"provider": "click",
"checkout_url": "https://checkout.example/abc",
"qr_content": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUAAAAFAAQMAAAD3XjfpAAAABlBMVEUEAgT8/vxJvsdeAAAACXBIWXMAAA7EAAAOxAGVKw4bAAABpUlEQVRoge2ZMXLEMAhFceVj+KjyUX0MVyYrPiAl2+wkMyLFp/BI4m31B/jSin4YQpDgH8BHPPbX9tptu/XUI+2KXCNYATbT6JrAVxz35mf2E4IlYFeqpXqnMXrn2U6wHjwsLRvEJPhvQDCuXtYawTLQ254dKuI8shW+90eCi0CPqKb5Ez..."
}Статус платежа
/company/tariff/payment-status/{externalId}Статус платежа по external_id из ответа оплаты: status, status_label, amount и is_paid (true, когда шлюз подтвердил оплату и баланс пополнен). Фронтенд опрашивает метод, пока на экране QR. Чужой или неизвестный платёж — 404.
Заголовки
| Заголовок | Значение | Описание |
|---|---|---|
Authorization | Bearer {token} | Токен из POST /common/auth/login |
Accept | application/json | Ответ в JSON |
Accept-Language | ru | Язык сообщений и названий: ru, uz, oz |
Параметры пути
| Параметр | Описание |
|---|---|
externalId | External Id |
Ответ · 200
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
external_id | string | |
status | string | Статус |
status_label | string | |
amount | integer | Сумма |
is_paid | boolean |
{
"external_id": "ext-pending",
"status": "pending",
"status_label": "В процессе",
"amount": 50000,
"is_paid": false
}
