Unitel Fintech platformasi API bilan ishlash uchun zarur konfiguratsiya ma'lumotlari.
https://unitcore.uz/bot/
Barcha so'rovlar uchun Authorization headerida sizga berilgan Bearer token (API_KEY) va tanangizda yoki headerda Merchant ID yuborilishi shart.
| Header Parametr | Turi | Tavsif |
|---|---|---|
| Authorization | string | Bearer SIZNING_API_KALITINGIZ ko'rinishida yuboriladi. |
| Merchant-ID | string | (Ixtiyoriy header) Agar so'rov tanasida (JSON) yuborilmasa, header orqali berasiz. |
Authorization: Bearer ab12cd34ef56gh78 Merchant-ID: 1053 Content-Type: application/json
UNITEL Fintech platformasi orqali savdoni boshlash uchun umumiy to'lov oqimi batafsil tushuntiriladi.
Standart to'lov jarayoni quyidagi bosqichlardan iborat:
| Bosqich | Endpoint | Tavsif |
|---|---|---|
| 1 | Create Link | To'lov havolasini yaratish va foydalanuvchini yo'naltirish |
| 2 | Checkout | Foydalanuvchi to'lov sahifasida karta ma'lumotlarini kiritadi |
| 3 | Callback | To'lov natijasi savdogar serveriga yuboriladi |
| 4 | Check | Savdogar tranzaksiya holatini tekshiradi |
Tizimda to'lovlar 3 ta asosiy holatdan o'tadi:
created).success).Eslatma: To'lov havolasi (Payment Link) ishlatilganda "Perform" bosqichi bizning checkout sahifamizda avtomatik bajariladi.
To'lov muvaffaqiyatli amalga oshirilgandan so'ng, tizim sizning callback_url manzilingizga natijani POST qiladi.
{ "transaction_id": "8910001234", "amount": 500, "status": 1, "order_id": "1001", "paid_at": "2026-04-10T12:00:00Z" }
Foydalanuvchini to'lov sahifasiga yo'naltirish uchun to'lov havolasi yaratiladi.
POST BASE_URL/merchant/pay/link
Header:
Authorization: Bearer API_KALIT(va ixtiyoriyMerchant-ID)
| Fields | Type | Required | Description |
|---|---|---|---|
| amount | integer | Yes | Summa (so'mda (UZS)) |
| order_id | string | Yes | Buyurtma raqami (Invoice ID) |
| return_url | string | No | To'lovdan keyin qaytish manzili |
{ "amount": 1000, "order_id": "order_1001", "return_url": "https://site.uz/success" }
{ "result": { "checkout_url": "https://unitcore.uz/bot/webapp/checkout.php?invoice_id=8910001234", "transaction_id": "8910001234" }, "error": null }
{ "result": null, "error": { "code": "missing_params", "message": "amount and order_id are required" } }
Tranzaksiya holatini so'rash va tekshirish.
POST BASE_URL/merchant/receipts/check/
Header:
Authorization: Bearer API_KALIT(va ixtiyoriyMerchant-ID)
| Fields | Type | Required | Description |
|---|---|---|---|
| transaction_id | string | Yes | Tranzaksiya identifikatori |
{ "transaction_id": "8910001234" }
{ "result": { "transaction_id": "8910001234", "amount": 1000, "status": 1, "status_name": "success" }, "error": null }
Javobdagi status (raqam) – dasturiy mantiq uchun, status_name (matn) – inson o'qishi uchun ishlatiladi.
| Kod (status) | Nom (status_name) | Tavsif |
|---|---|---|
| 0 | created | Tranzaksiya yaratilgan, to'lov kutilmoqda |
| 1 | success | To'lov muvaffaqiyatli amalga oshirildi |
| -1 | canceled | To'lov bekor qilingan yoki rad etilgan |
| 3 | charged | Hold mablag' yechib olindi (faqat Hold uchun) |
{ "result": null, "error": { "code": "transaction_not_found", "message": "Transaction not found" } }
Yaratilgan tranzaksiyani tasdiqlash va to'lovni amalga oshirish.
POST BASE_URL/merchant/receipts/confirm/
Header:
Authorization: Bearer API_KALIT(va ixtiyoriyMerchant-ID)
| Fields | Type | Required | Description |
|---|---|---|---|
| transaction_id | string | Yes | Tranzaksiya identifikatori |
{ "result": { "status": 1 }, "error": null }
{ "result": null, "error": { "code": "already_paid", "message": "Transaction is already paid" } }
Tranzaksiya va to'lov holatlari uchun ishlatiladigan status kodlari.
| Kod | Status | Tavsif |
|---|---|---|
| 0 | Kutilmoqda | Tranzaksiya yaratilgan, to'lov kutilmoqda |
| 1 | To'langan | To'lov muvaffaqiyatli amalga oshirildi |
| -1 | Bekor qilingan | To'lov bekor qilindi yoki qaytarildi |
| -2 | Muddati o'tgan | To'lov vaqti tugagan |
| 2 | Ushlab turilgan | Mablag' hold qilingan (faqat Hold Payment) |
| 3 | Tasdiqlangan | Hold mablag' yechib olindi |
| Kod | Tavsif |
|---|---|
| invalid_card_number | Noto'g'ri karta raqami |
| card_is_already_activated | Karta allaqachon faollashtirilgan |
| insufficient_funds | Hisobda mablag' yetarli emas |
| card_expired | Karta muddati o'tgan |
| invalid_otp | Noto'g'ri SMS kod |
| transaction_not_found | Tranzaksiya topilmadi |
| unauthorized | Avtorizatsiya xatosi |
Obuna (Subscribe) API foydalanuvchi kartalarini saqlash va keyinchalik ulardan to'lov yechish imkonini beradi. Bu usul takroriy to'lovlar va bir martalik to'lovlar uchun ishlatiladi.
| Bosqich | Endpoint | Tavsif |
|---|---|---|
| 1 | CreateCard | Karta raqamini yuborish, SMS olinadi |
| 2 | ConfirmCard | SMS-kodni kiritish va kartani faollashtirish |
| 3 | CreateReceipt | To'lov kvitansiyasini yaratish |
| 4 | PayReceipt | Kvitansiyani to'lash (kartadan yechish) |
| 5 | DeleteCard | Kartani o'chirish (ixtiyoriy) |
cardId) orqali istalgan vaqtda to'lov amalga oshirilishi mumkin.
POST
BASE_URL/merchant/userCard/createUserCard/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | Savdogar tizimidagi foydalanuvchi ID |
| card_number | string | Yes | 9860000000000000 |
| expire_date | string | Yes | YYMM |
| phone_number | string | No | +998********* |
{ "user_id": "user_001", "card_number": "8600...", "expire_date": "2612" }
{ "result": { "card_id": "122421a-xxxx-yyyy", "phone": "99890***00" }, "error": null }
{ "result": null, "error": { "code": "invalid_card_number", "message": "Invalid card number" } }
POST
BASE_URL/merchant/userCard/confirmUserCardCreate/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | Foydalanuvchi ID |
| card_id | string | Yes | createUserCard javobidagi card_id |
| otp | string | Yes | SMS tasdiqlash kodi |
| card_name | string | No | Kartaga nom berish |
| pinfl | string | No | PINFL identifikator |
{ "user_id": "user_001", "card_id": "122421a...", "otp": "123456", "card_name": "Mening Kartam", "pinfl": "07803684736125" }
{ "result": { "user_id": "user_001", "card_id": "78a353ww-c4ff-42ee-...", "number": "860000******9999", "balance": 982807.31, "vendor": "Uzcard" }, "error": null }
{ "result": null, "error": { "code": "invalid_otp", "message": "Invalid SMS code" } }
POST
BASE_URL/merchant/userCard/removeUserCard/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| userId | string | Yes | Foydalanuvchi ID |
| cardId | string | Yes | O'chiriladigan karta tokeni |
{ "result": true, "error": null }
{ "result": null, "error": { "code": "card_not_found", "message": "Card not found" } }
POST
BASE_URL/merchant/userCard/getAllUserCards/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | Foydalanuvchi ID |
{ "result": [ { "card_id": "78a353ww-c4ff-...", "number": "860000******9999", "vendor": "Uzcard" } ], "error": null }
Karta tokeni (card_id) va foydalanuvchi PINFL raqami bir-biriga mosligini tekshirish.
POST
BASE_URL/merchant/card/check-pan-pinfl/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| card_id | string | Yes | Karta tokeni (ro'yxatdan o'tgan bo'lishi shart) |
| pinfl | string | Yes | 14 xonali PINFL raqami |
{ "card_id": "78a353ww-c4ff-...", "pinfl": "52305035650013" }
{ "result": { "match": true }, "error": null }
Barcha API so'rovlari uchun ikkita autentifikatsiya headerini yuborish kerak.
Header:
Authorization: Bearer YOUR_API_KEY Merchant-ID: 123
| Fields | Type | Description |
|---|---|---|
| Authorization | Header | Bearer API_KEY formatida token |
| Merchant-ID | Header | Savdogar identifikatori |
Kvitansiya yaratish va kartadan to'lov yechish.
POST
BASE_URL/merchant/receipts/create/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| amount | integer | Yes | Summa (so'mda (UZS)) |
| account | object | Yes | Buyurtma ma'lumotlari (order_id) |
{ "amount": 500, "account": { "order_id": "1001" } }
POST
BASE_URL/merchant/receipts/pay/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| transaction_id | string | Yes | Kvitansiya ID |
| card_id | string | Yes | Tasdiqlangan karta tokeni |
| user_id | string | Yes | Karta egasi ID |
{ "result": { "status": 1 }, "error": null }
{ "result": null, "error": { "code": "insufficient_funds", "message": "Insufficient funds" } }
Foydalanuvchi kartasining hozirgi holatini va balansi, muddatini tekshirish.
POST
BASE_URL/merchant/userCard/getSingleUserCard/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | Foydalanuvchi ID |
| card_id | string | Yes | Karta token ID |
{ "result": { "card_id": "78a353ww-c4ff-...", "number": "860000******9999", "balance": 982807.31, "vendor": "Uzcard" }, "error": null }
{ "result": null, "error": { "code": "card_not_found", "message": "Card not found" } }
Bir kartadan boshqa kartaga to'g'ridan-to'g'ri pul o'tkazish (Peer-to-Peer).
POST
BASE_URL/merchant/p2p/create/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | Yuboruvchi foydalanuvchi ID |
| card_id | string | Yes | Yuboruvchi karta tokeni |
| receiver_card | string | Yes | Qabul qiluvchi karta raqami |
| amount | integer | Yes | Summa (so'mda (UZS)) |
{ "user_id": "u123", "card_id": "78a353ww-c4ff-...", "receiver_card": "8600140000000000", "amount": 5000 }
{ "result": { "transaction_id": "p2p_90001", : 1 }, "error": null }
{ "result": null, "error": { "code": "insufficient_funds", "message": "Insufficient funds" } }
Kartada ma'lum summani hold qilish (bloklash). Keyinchalik uni yechib olish (Charge) yoki bekor qilish (Dismiss) mumkin.
POST
BASE_URL/merchant/hold/create/
| Fields | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | Foydalanuvchi ID |
| card_id | string | Yes | Karta tokeni |
| amount | integer | Yes | Hold summasi (SUMda) |
| time | integer | No | Hold vaqti (daqiqada). Max: 40320 (28 kun) |
| external_id | string | No | Tashqi identifikator |
{ "user_id": "u123", "card_id": "78a353ww-...", "amount": 100 }
{ "result": { "transaction_id": "h_5001" }, "error": null }
POST
BASE_URL/merchant/hold/confirm/
| Fields | Type | Required | Description |
|---|---|---|---|
| transaction_id | string | Yes | Hold tranzaksiya ID |
| amount | integer | Yes | Yechib olinadigan summa |
{ "transaction_id": "h_5001", "amount": 100 }
POST
BASE_URL/merchant/hold/cancel/
| Fields | Type | Required | Description |
|---|---|---|---|
| transaction_id | string | Yes | Bekor qilinadigan hold ID |
{ "transaction_id": "h_5001" }
POST
BASE_URL/merchant/hold/status/
| Fields | Type | Required | Description |
|---|---|---|---|
| transaction_id | string | No* | Tranzaksiya ID |
| external_id | string | No* | *Kamida bittasi bo'lishi shart |
{ "result": { "transaction_id": "d1be13da-...", "status": "cancelled", "cancel_time": "2025-02-03 11:13:42", "amount": 1000, "payed_at": null }, "error": null }
| Kod | Tavsif |
|---|---|
| hold_not_found | Hold topilmadi |
| hold_time_expired | Hold vaqti tugagan |
| invalid_amount | Summa noto'g'ri |
| transaction_not_found | Tranzaksiya topilmadi |
Savdogar hisobidan foydalanuvchi kartasiga pul o'tkazish.
POST
BASE_URL/merchant/account2card/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| card_number | string | Yes | Qabul qiluvchi karta raqami |
| amount | integer | Yes | Summa (so'mda (UZS)) |
| description | string | No | Izoh |
{ "card_number": "8600140000000000", "amount": 10000, "description": "Oylik to'lov" }
{ "result": { "transaction_id": , "status": 1 }, "error": null }
{ "result": null, "error": { "code": "insufficient_merchant_balance", "message": "Insufficient merchant balance" } }
Ma'lum bir xizmat yoki provayderga to'lov amalga oshirish.
POST
BASE_URL/merchant/service/pay/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | Foydalanuvchi ID |
| card_id | string | Yes | Karta tokeni |
| service_id | string | Yes | Xizmat provayder ID |
| account | string | Yes | Abonent identifikatori |
| amount | integer | Yes | Summa (so'mda (UZS)) |
{ "user_id": "u123", "card_id": "78a353ww-c4ff-...", "service_id": "beeline_uz", "account": "998901234567", "amount": 1000 }
{ "result": { "transaction_id": "svc_70001", "status": 1 }, "error": null }
{ "result": null, "error": { "code": "service_unavailable", "message": "Service temporarily unavailable" } }
Yagona to'lovni bir nechta qabul qiluvchilarga bo'lib yuborish.
POST
BASE_URL/merchant/split/create/Header:
Authorization: Bearer ACCESS_TOKEN
| Fields | Type | Required | Description |
|---|---|---|---|
| user_id | string | Yes | To'lovchi foydalanuvchi ID |
| card_id | string | Yes | Karta tokeni |
| total_amount | integer | Yes | Umumiy summa (so'mda (UZS)) |
| splits | array | Yes | Qabul qiluvchilar ro'yxati |
{ "user_id": "u123", "card_id": "78a353ww-c4ff-...", "total_amount": 10000, "splits": [ { "merchant_id": "merchant_A", "amount": 7000 }, { "merchant_id": "merchant_B", "amount": 3000 } ] }
{ "result": { "transaction_id": "split_80001", "status": 1 }, "error": null }
{ "result": null, "error": { "code": "total_amount_mismatch", "message": "Total amount does not match split sum" } }
splits massividagi summalar yig'indisi totalAmount ga teng bo'lishi kerak.