XaznaPass
XaznaPass — foydalanuvchi Xazna ilovasida ko‘rsatadigan bir martalik kod orqali to‘lovni qabul qilish. Merchant bu kodni API ga uzatadi, Xazna esa summani foydalanuvchi kartasidan yechadi. Har bir so‘rov tanasi RSA algoritmi bilan shifrlanadi va data maydonida yuboriladi.
Asosiy talablar
Merchant ma‘lumotlari
Ro‘yxatdan o‘tgandan so‘ng xizmat ko‘rsatuvchi API ga ulanish va so‘rov yuborish uchun quyidagi ma‘lumotlarni oladi:
| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | merchantId | UUID | Merchantning savdo ID si, ochiq holda uzatiladi |
| 2 | secretKey | String | So‘rov tanasi shifrlanadigan kalit |
| 3 | username | String | Basic avtorizatsiya uchun login |
| 4 | password | String | Basic avtorizatsiya uchun parol |
Merchant kaliti
secretKey parametri maxfiy hisoblanadi va uning xavfsizligi uchun to‘liq javobgarlik xizmat ko‘rsatuvchining zimmasida. Kalitning oshkor bo‘lishi ma‘lumotlaringiz sizib chiqishiga olib kelishi mumkin.
Autentifikatsiya va sarlavhalar
So‘rovlar basic avtorizatsiya bilan yuboriladi — Auth: Basic sarlavhasi. timestamp — UNIX timestamp (epoch boshidan beri 10 xonali sekund).
| # | Header | Value |
|---|---|---|
| 1 | Accept | application/json |
| 2 | Authorization | Basic — ro‘yxatdan o‘tishda berilgan username va password |
| 3 | Content-Type | application/json |
Ma‘lumotlarni shifrlash
- Barcha metodlarda so‘rov ma‘lumotlari RSA algoritmi yordamida shifrlanadi.
- Ma‘lumotlar (json) oldindan berilgan
secretKeybilan shifrlanadi va Base64 formatida yuboriladi. - Shifrlanadigan ma‘lumot hajmi 350 baytdan oshmasligi kerak.
Shifrlash natijasi data maydonida uzatiladi. Ochiq holda faqat merchantId yuboriladi — Xazna shu bo‘yicha deshifrlash kalitini tanlaydi.
Javob formati
Barcha metodlar bir xil konvertni qaytaradi: asosiy ma‘lumot data ichida, qayta ishlash natijasi esa code da bo‘ladi.
| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | data | Object | Tranzaksiya ma‘lumotlari |
| 2 | errorMessage | String | Xatolik tavsifi |
| 3 | code | Integer | Qayta ishlash kodi, kodlar ma‘lumotnomasiga qarang |
| 4 | timestamp | Long | Vaqt belgisi |
data maydonlari
| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | merchantId | UUID | Merchantning savdo ID si |
| 2 | paymentId | UUID | Xazna tranzaksiya ID si |
| 3 | paymentStatus | String | To‘lov statusi: SUCCESS, ERROR, PENDING, REVERSED |
| 4 | amount | Long | Summa tiyinlarda. 100000 = 1000.00 so‘m |
| 5 | paymentTime | String | To‘lov vaqti (yyyy-mm-dd hh:mm:ss) |
| 6 | message | String | Tranzaksiya tavsifi |
| 7 | cardType | String | Karta turi |
| 8 | cardNumber | String | Niqoblangan karta raqami |
| 9 | phone | String | Telefon raqami |
To‘lov statuslari
| Status | Description |
|---|---|
SUCCESS | To‘lov amalga oshdi |
PENDING | To‘lov jarayonda — statusni qayta tekshirish kerak |
ERROR | To‘lov o‘tmadi, sababi code va errorMessage da |
REVERSED | To‘lov bekor qilingan |
To‘lov
Foydalanuvchi ilovada ko‘rsatgan bir martalik otpData kodi bo‘yicha summani yechadi.
POST {base_url}/api/v1/qr-pass/payment
Accept: application/json
Content-Type: application/json
Auth: Basic
{
"merchantId": "string",
"data": "your_hashing_data"
}
// your_hashing_data — RSA algoritmi bilan shifrlangan qiymatSo‘rov parametrlari
| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | merchantId | UUID | Merchantning savdo ID si |
| 2 | data | String | RSA algoritmi asosida shifrlangan qiymat |
Shifrlanadigan ma‘lumotlar
{
"otpData": "70704778812456456092",
"amount": 100000, // 1000.00 so‘m
"transactionId": "123"
}| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | otpData | String | To‘lov uchun bir martalik kod |
| 2 | amount | Long | Summa tiyinlarda. 100000 = 1000.00 so‘m |
| 3 | transactionId | String | Merchant tranzaksiya ID si |
Javob namunasi
{
"data": {
"merchantId": "string",
"paymentId": "string",
"paymentStatus": "SUCCESS",
"amount": 100000,
"paymentTime": "2025-08-01 14:22:02",
"cardType": "HUMO",
"cardNumber": "****3445",
"phone": "998911234567",
"message": "Успешная транзакция"
},
"errorMessage": "",
"code": 0,
"timestamp": 1754040127141
}paymentId ni saqlang
Javobdagi paymentId statusni tekshirish, to‘lovni bekor qilish va fiskal chekni bog‘lash uchun kerak bo‘ladi. Uni o‘z transactionId ingiz bilan birga saqlang.
To‘lov statusini Xazna bo‘yicha tekshirish
Xazna tranzaksiya identifikatori (paymentId) bo‘yicha to‘lovning joriy statusini qaytaradi.
POST {base_url}/api/v1/qr-pass/check/xazna
Accept: application/json
Content-Type: application/json
Auth: Basic
{
"merchantId": "string",
"data": "your_hashing_data"
}
// your_hashing_data — RSA algoritmi bilan shifrlangan qiymatShifrlanadigan ma‘lumotlar
{
"paymentId": "string"
}| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | paymentId | UUID | Xazna tranzaksiya ID si |
Javob namunasi
{
"data": {
"merchantId": "string",
"paymentId": "string",
"paymentStatus": "PENDING",
"amount": 100000,
"paymentTime": "2025-08-01 14:22:02",
"cardType": "HUMO",
"cardNumber": "****3445",
"phone": "998911234567",
"message": "Транзакция в ожидании"
},
"errorMessage": "",
"code": 0,
"timestamp": 1754040127141
}To‘lov statusini merchant bo‘yicha tekshirish
Xuddi shu narsa, faqat qidiruv merchant tranzaksiya identifikatori — to‘lov paytida yuborilgan transactionId bo‘yicha olib boriladi.
POST {base_url}/api/v1/qr-pass/check/merchant
Accept: application/json
Content-Type: application/json
Auth: Basic
{
"merchantId": "string",
"data": "your_hashing_data"
}
// your_hashing_data — RSA algoritmi bilan shifrlangan qiymatShifrlanadigan ma‘lumotlar
{
"paymentId": "string"
}| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | paymentId | UUID | Merchant tranzaksiya ID si |
Maydon nomi
Bu metodda maydon paymentId deb nomlanadi, lekin unda Xazna emas, merchant tranzaksiyasining identifikatori uzatiladi.
Javob namunasi
{
"data": {
"merchantId": "string",
"paymentId": "string",
"paymentStatus": "PENDING",
"amount": 100000,
"paymentTime": "2025-08-01 14:22:02",
"cardType": "HUMO",
"cardNumber": "****3445",
"phone": "998911234567",
"message": "Транзакция в ожидании"
},
"errorMessage": "",
"code": 0,
"timestamp": 1754040127141
}To‘lovni bekor qilish
Mablag‘ni foydalanuvchiga qaytaradi. Muvaffaqiyatli bekor qilingandan so‘ng to‘lov statusi REVERSED bo‘ladi.
POST {base_url}/api/v1/qr-pass/reverse
Accept: application/json
Content-Type: application/json
Auth: Basic
{
"merchantId": "string",
"data": "your_hashing_data"
}
// your_hashing_data — RSA algoritmi bilan shifrlangan qiymatShifrlanadigan ma‘lumotlar
{
"paymentId": "string"
}| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | paymentId | UUID | Xazna tranzaksiya ID si |
Javob namunasi
{
"data": {
"merchantId": "string",
"paymentId": "string",
"paymentStatus": "REVERSED",
"amount": 100000,
"paymentTime": "2025-08-01 14:22:02",
"cardType": "HUMO",
"cardNumber": "****3445",
"phone": "998911234567",
"message": "Транзакция отменена"
},
"errorMessage": "",
"code": 0,
"timestamp": 1754040127141
}Fiskal ma‘lumotlarni to‘lovga bog‘lash
Amalga oshirilgan to‘lovga fiskal chek havolasini bog‘laydi.
Metod manzili
XaznaPass hujjatining dastlabki nusxasida (1.0-versiya) bu metodning URL manzili ko‘rsatilmagan — integratsiyadan oldin Xazna menejeridan aniqlashtiring. So‘rov va javob tanasi formati quyida keltirilgan.
Accept: application/json
Content-Type: application/json
Auth: Basic
{
"merchantId": "string",
"data": "your_hashing_data"
}
// your_hashing_data — RSA algoritmi bilan shifrlangan qiymatSo‘rov parametrlari
| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | merchantId | UUID | Merchantning savdo ID si |
| 2 | data | String | RSA algoritmi asosida shifrlangan qiymat |
Shifrlanadigan ma‘lumotlar
{
"paymentId": "string",
"qrUrl": ""
}| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | paymentId | UUID | Xazna tranzaksiya ID si |
| 2 | qrUrl | String | Fiskal chek havolasi |
Javob namunasi
{
"data": {
"message": "Успешно"
},
"errorMessage": "",
"code": 0,
"timestamp": 1769422251103
}| # | Parameter | Data type | Description |
|---|---|---|---|
| 1 | message | String | Natija tavsifi |
| 2 | errorMessage | String | Xatolik tavsifi |
| 3 | code | Integer | Qayta ishlash kodi, kodlar ma‘lumotnomasiga qarang |
| 4 | timestamp | Long | Vaqt belgisi |
Kodlar ma‘lumotnomasi
Javobdagi code maydoni qiymatlari:
| # | Kod | Xabar |
|---|---|---|
| 1 | 0 | Muvaffaqiyatli tranzaksiya |
| 2 | -1 | QR kod muddati tugagan |
| 3 | -2 | Foydalanuvchi topilmadi |
| 4 | -3 | Karta topilmadi |
| 5 | -4 | Servis topilmadi |
| 6 | -5 | Servis faol emas |
| 7 | -6 | Operatsiya turi topilmadi |
| 8 | -7 | Noto‘g‘ri summa |
| 9 | -8 | Tranzaksiyada xatolik |
| 10 | -9 | Operatsiya topilmadi |
| 11 | -10 | Operatsiya statusi faol emas |
| 12 | -11 | Bekor qilishda xatolik |
| 13 | -12 | Xatolik. Parametrlar yetishmaydi |
| 14 | -13 | Ma‘lumotlarni dekodlashda xatolik |
| 15 | -14 | Ulanishda xatolik |
| 16 | 999 | Tizim xatoligi |