inPAY.uz REST API
Merchantlarga to'lov tranzaksiyalarini xavfsiz va tezkor yaratish imkoniyati. RESTful arxitekturasi, JSON format, Bearer Token autentifikatsiya.
Autentifikatsiya
API bilan ishlash uchun Bearer Token olish kerak. Token 24 soat amal qiladi. Har bir so'rovda Authorization: Bearer {token} headerini yuboring.
| Parametr | Tip | Majburiy | Tavsif |
|---|---|---|---|
| merchant_id | integer | ✓ Ha | Merchant identifikatori |
| merchant_token | string | ✓ Ha | Merchant token (32 belgili) |
Accept: application/json
{
"success": true,
"bearer_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtZXJjaGFudF9pZCI6MTM1MywiaWF0IjoxNjk..."
}To'lov Yaratish
Yangi to'lov tranzaksiyasini yaratish. Muvaffaqiyatli bo'lsa foydalanuvchini pay_url ga yo'naltiring.
Content-Type: application/json
Authorization: Bearer {your_bearer_token}| Parametr | Tip | Majburiy | Tavsif |
|---|---|---|---|
| merchant_id | string | ✓ Ha | Merchant ID |
| token | string | ✓ Ha | Merchant token |
| amount | number | ✓ Ha | To'lov summasi (min: 1 000 so'm) |
| description | string | — Ixtiyoriy | To'lov haqida izoh |
| payment_method | string | — Ixtiyoriy | To'lov usuli (click, payme, inPAY) |
| callback_url | string | — Ixtiyoriy | Webhook URL manzili |
| phone | string | — Ixtiyoriy | Telefon raqami (998901234567) |
{
"success": true,
"order_id": "1ff2f5a6d66f6e9c",
"pay_url": "https://inPAY.uz/checkout/1ff2f5a6d66f6e9c",
"phone": "998335717717",
"message": "invoice yaratildi",
"security": {
"ip_mode": "optional",
"ip_check": "IP verified (optional)"
}
}Webhook Xabarnomalar
To'lov muvaffaqiyatli bo'lganda avtomatik bildirishnoma
| Parametr | Tip | Tavsif |
|---|---|---|
| amount | string | To'lov summasi (masalan: "15000.00") |
| status | string | To'lov holati: success yoki failed |
| order_id | string | Buyurtma identifikatori |
| transaction_id | integer | inPAY.uz tizimidagi tranzaksiya ID |
| created_at | string | Yaratilgan vaqt (2025-12-10 05:14:52) |
{
"amount": "15000.00",
"status": "success",
"order_id": "1ff2f5a6d66f6e9c",
"transaction_id": 149,
"created_at": "2025-12-10 05:14:52"
}- Webhook URL ni callback_url da yuboring — aks holda kassadagi default URL ishlatiladi
- Handler JSON formatini qabul qilishi va HTTP 200 qaytarishi shart
- Webhook URL HTTPS bo'lishi tavsiya etiladi
Tranzaksiya Holati
| Parametr | Tip | Majburiy | Tavsif |
|---|---|---|---|
| order_id | string | ✓ Ha | To'lov yaratishda qaytarilgan buyurtma ID |
{
"success": true,
"order_id": "1ff2f5a6d66f6e9c",
"status": "pending",
"amount": 15000,
"payment_method": "click",
"created_at": "2025-12-10 05:14:52",
"paid_at": null
}{
"success": true,
"order_id": "1ff2f5a6d66f6e9c",
"status": "success",
"amount": 15000,
"payment_method": "click",
"created_at": "2025-12-10 05:14:52",
"paid_at": "2025-12-10 05:15:23"
}Xato Kodlari
API dan qaytariladigan xato kodlari
| Xato kodi | HTTP | Tavsif |
|---|---|---|
| MISSING_AUTH_TOKEN | 401 | Authorization token topilmadi |
| INVALID_TOKEN | 401 | Bearer token noto'g'ri yoki muddati tugagan |
| MISSING_MERCHANT_ID | 400 | merchant_id parametri topilmadi |
| MERCHANT_NOT_FOUND | 404 | Merchant topilmadi |
| IP_NOT_WHITELISTED_STRICT | 403 | IP manzil whitelist da yo'q (Strict mode) |
| RATE_LIMIT_EXCEEDED | 429 | So'rovlar soni limitdan oshdi (100/soat) |
| CALLBACK_NOT_WHITELISTED | 403 | Callback URL whitelist da yo'q |
| MERCHANT_WEBSITE_NOT_WHITELISTED | 403 | Merchant website whitelist da active emas |
| AMOUNT_TOO_LOW | 400 | Summa juda kam (min: 1 000 so'm) |
| AMOUNT_TOO_HIGH | 400 | Summa maksimal limitdan oshdi |
| TRANSACTION_SAVE_FAILED | 500 | Tranzaksiya saqlanmadi (server xatosi) |
{
"success": false,
"message": "* Minimal to'lov summasi 1000 so'm",
"error_code": "AMOUNT_TOO_LOW"
}- Har doim success maydonini tekshiring, so'ng error_code asosida xatolarni boshqaring
- 401/403 xatolarida autentifikatsiyani qayta tekshiring
- 429 xatolarda biroz kuting va qayta urinib ko'ring
- 500 xatolarida support bilan bog'laning: @merchants_uz
Xavfsizlik
IP Whitelist, Rate Limiting, Bearer Token
Har bir IP manzil uchun soatiga 100 ta so'rov limiti. Limit oshirilsa, RATE_LIMIT_EXCEEDED xatosi qaytariladi.
- Token 24 soat amal qiladi — keshda saqlang
- Tokenni server-side saqlang, hech kimga bermang
- Har bir so'rovda Authorization: Bearer {token} headerida yuboring
- Muddati tugagandan so'ng yangi token oling
Callback URL va merchant website whitelist da bo'lishi kerak. Sozlamalar uchun inPAY.uz platformasiga kiring.
Eng Yaxshi Amaliyotlar
Integratsiya sifatini oshirish uchun tavsiyalar