Paynet dasturchilar portaliga xush kelibsiz! Bizning platformamiz xizmat ko'rsatuvchilar va merchantlar agregatori bo'lib, to'lovlarni qabul qilishning qulay usullarini taqdim etadi.
Biz ulanishning 3 ta variantini taklif qilamiz. Mos keluvchi variantni aniqlash uchun quyidagi diagrammadan foydalaning.
| ✅ Universal billing | ⚙️ UWS Konnektori | 🔧 Maxsus konnektor | |
|---|---|---|---|
| Dasturlash | ❌ Talab qilinmaydi | ✅ Kerak (JSON-RPC API) | ❌ Talab qilinmaydi (Paynet qiladi) |
| Tavsif | Paynet ma'lumotlarni o'zi yig'adi, to'lovni qabul qiladi va merchantni Telegram-bot yoki Foyda orqali xabardor qiladi. | Siz API'ni Paynet standartiga muvofiq amalga oshirasiz (GetInformation, PerformTransaction va boshqalar). | Siz o'zingizning mavjud API'ingizni taqdim etasiz, Paynet integratsiyani o'zi ishlab chiqadi. |
| Kimlarga mos keladi | IT-jamoasi va o'z API'si yo'q merchantlarga. | IT-infratuzilmasiga ega bo'lgan, standartlashtirilgan API'ni amalga oshirishga tayyor kompaniyalarga. | Mavjud barqaror API'ga ega yirik korporativ mijozlarga. |
| Avtomatlashtirish | Qo'lda (xabarnomalar) | To'liq (API-to-API) | To'liq (API-to-API) |
✅ Universal billing — hech qanday dasturlashsiz:
⚙️ UWS Konnektori — API'ni amalga oshirish kerak:
serviceId si ("Texnik hamkorlik tartibi" anketasida to'ldiriladi)[!NOTE]
serviceIdnima?serviceId— bu xizmatingizning statik ichki identifikatori bo'lib, uni o'zingiz o'ylab topasiz va "Texnik hamkorlik tartibi" hujjatida bizga taqdim etasiz. U mijozning telefon raqami yoki shaxsiy hisob raqami EMAS (bu ma'lumotlarfieldsmassivida uzatiladi). Bitta hamkor bir nechta xizmatlarni taqdim etishi mumkin, vaserviceIdPaynet'ga mijoz aynan qaysi xizmat uchun to'lov qilayotganini tushunishga yordam beradi.
| Model | Mos kelmaydi, agar... |
|---|---|
| Universal billing | Sizga mijoz balansiga avtomatik mablag' o'tkazish, tovarni avtomatik jo'natish yoki sizning ERP/CRM bilan integratsiya kerak bo'lsa. Bunday holda UWS ni tanlang. |
| UWS Konnektori | Sizda API'ni joylashtirish uchun IT-jamoa yoki server bo'lmasa. Bunday holda Universal billing ni tanlang. |
| Maxsus konnektor | Siz barqaror API va biznes-hajmlarga ega bo'lmagan startap yoki kichik biznes bo'lsangiz. Bunday holda Universal billing yoki UWS ni tanlang. |
[!IMPORTANT] Arxitektura paradigmasi (Bir yo'nalishlilik) UWS integratsiyasi Push/Pull modeli bo'yicha ishlaydi, bu yerda Paynet har doim mijoz (client), sizning billingiz esa server sifatida ishtirok etadi. Siz Paynet API tomoniga hech qanday so'rov yubormaysiz. Barcha o'zaro harakatlar (tekshirish va bekor qilishlar ham) faqat Paynet serverlari tomonidan sizning Endpoint'ingizga yo'naltirilgan holda boshlanadi.
Muvaffaqiyatli to'lovning asosiy ssenariysi:
Ssenariy 1: Network Timeout (Tarmoq taymauti):
Ssenariy 2: Tranzaksiyani bekor qilish (CancelTransaction):
Paynet barcha mantiqni mustaqil ravishda qayta ishlaydi va faqat merchantni xabardor qiladi.
[!WARNING] Ushbu bandlardagi xatolar — test bosqichidagi rad etishlarning eng keng tarqalgan sababidir.
UTF-8 kodirovkasida yuboriladi va qabul qilinadi. Content-Type: application/json va Accept: application/json dan foydalanish majburiydir.1000000.YYYY-MM-dd HH:mm:ss. Vaqt mintaqasi — GMT+5 (O'zbekiston).[!CAUTION] Sana formatidan yagona istisno:
CheckTransactionso'rovidagitimestampparametriEEE MMM dd HH:mm:ss z yyyyformatida keladi, masalanMon Jun 16 06:12:41 UZT 2021. Bu format tarixan o'rnatilgan (ko'plab yetkazib beruvchilar allaqachon u bo'yicha ishlamoqda) va o'zgartirilmaydi — sizning parseringiz uni qo'llab-quvvatlashi shart. Boshqa barcha sanalar, jumladanCancelTransactiondagitimestampva serveringizning barcha javoblari, standartYYYY-MM-dd HH:mm:ssformatidan foydalanadi.
HTTP 401 Unauthorized (xato ko'rsatilgan 200 OK emas) qaytarishi shart.ChangePassword metodi amalga oshirilgan bo'lsa, Paynet billingingizga birinchi muvaffaqiyatli ulanishda parolni o'zgartirishi shart. Agar metod amalga oshirilmagan bo'lsa, parol alohida, har qanday xavfsiz kanallar orqali uzatiladi.213.230.106.112/28 va 213.230.65.80/28.Moliyaviy tranzaksiyalar qat'iy izchillikni talab qiladi:
transactionId): Paynet'dan kelgan har bir tranzaksiya noyob transactionId ga ega. Hamkor billingi bitta transactionId bo'yicha ikki marta mablag' yechib olinishiga yo'l qo'ymasligi kerak: dublikatga 201 xatosini qaytaring — undan keyin Paynet asl natijani bilish uchun CheckTransaction ni chaqiradi. Tarmoq uzilishlari holatida Paynet so'rovni takrorlashi yoki CheckTransaction metodini chaqirishi mumkin. Muvaffaqiyatli operatsiyaga javoban hamkor o'zining ichki raqami providerTrnId ni qaytaradi.GetStatement metodini chaqiradi va ularni o'z bazasi bilan solishtiradi. Shuningdek, hamkorning elektron pochtasiga qabul qilingan to'lovlar reyestri yuboriladi.Spetsifikatsiya OpenAPI (UWS) in Uzbek (Latin).yaml faylida mavjud. U o'z ichiga barcha JSON-RPC 2.0 metodlarining tavsifini oladi: GetInformation, PerformTransaction, CheckTransaction, CancelTransaction, GetStatement, ChangePassword (majburiy emas), shuningdek qat'iy JSON-sxemalar, xato kodlari va formatlarni o'z ichiga oladi.
Universal konnektor (UWS) orqali to'lovlarni qabul qilishni boshlash uchun quyidagi qadamlarni bajaring:
GetInformation, PerformTransaction, CheckTransaction, CancelTransaction, GetStatement) spetsifikatsiyaga muvofiq amalga oshiring.Paynet menejeriga quyidagi ma'lumotlarni taqdim eting:
https://api.yourdomain.uz/uws)serviceId va ularning nomlari ro'yxatiIshga tushirishdan oldin standart test-keyslarni bajarish kerak:
GetInformation): Abonentni muvaffaqiyatli izlashni emulyatsiya qilish va 302 (Mijoz topilmadi) xatosini emulyatsiya qilish.PerformTransaction): Abonent balansini muvaffaqiyatli to'ldirish.PerformTransaction): 413 (Noto'g'ri summa) yoki 101 (Kvota tugagan) xatolarini emulyatsiya qilish.CancelTransaction): Test to'lovini amalga oshirish va uni to'liq bekor qilish. Mablag'larni qaytarish (qisman qaytarishlar texnik jihatdan qo'llab-quvvatlanmaydi). 77 (mijoz mablag'ni allaqachon sarflagan), 306 (hisobot davri yopilgan) va 203 (tranzaksiya topilmadi) xatolarini emulyatsiya qilish.CheckTransaction): Mavjud tranzaksiya (state 1) va mavjud bo'lmagan (state 3, muvaffaqiyatli javob — xato emas) statusini tekshirish. EEE MMM dd HH:mm:ss z yyyy formatidagi timestamp parsingini albatta tekshiring.Barcha testlardan muvaffaqiyatli o'tgandan so'ng, texnik tayyorgarlik dalolatnomasi imzolanadi va sizning xizmatlaringiz millionlab Paynet foydalanuvchilari uchun to'lashga ochiq bo'ladi!
Biznes-xatolik yuzaga kelganda, hamkor billingi o'zida code va message bo'lgan error obyekti bilan JSON-RPC javobini qaytaradi.
[!IMPORTANT] Ushbu bo'limdagi barcha kodlar (
201,412,413va h.k.) — bu JSON-RPC darajasidagi Paynet xato kodlari, HTTP statuslari emas. Ularni ko'pincha HTTP kodlari bilan adashtirishadi: aslida ular javob tanasidagierrorobyekti ichida qaytariladi, javobning HTTP statusi esa200 OKbo'lib qoladi. Yagona istisno — autentifikatsiya: noto'g'ri login/paroldaHTTP 401 Unauthorizedqaytariladi (quyidagi412xatosi haqidagi eslatmaga qarang).
Sizning biznes-keysingizga qarab qanday xato qaytarish kerakligini tushunish uchun ushbu jadvaldan foydalaning:
| Biznes holati | Tavsiya etilgan Paynet xato kodi |
|---|---|
| Mijoz / ma'lumotlarni kiritish bilan bog'liq muammolar | |
| Mijoz noto'g'ri qurilma raqami / shaxsiy hisob raqamini kiritdi | 301, 302, 304 (Raqam/Mijoz/Tovar topilmadi) |
| Foydalanuvchi hamyoni identifikatsiya qilinmagan | 113 |
Xizmatlar bilan bog'liq muammolar (serviceId) |
|
Mavjud bo'lmagan serviceId uzatildi |
305 (Xizmat topilmadi) |
| Xizmat sizning tomoningizda vaqtincha ishlamayapti | 100 (Xizmat vaqtincha qo'llab-quvvatlanmaydi) |
| Limitlar va summalar | |
| Summa operatsiyaning maksimal limitidan oshib ketdi | 415 |
| Mijozning kunlik limiti oshib ketdi | 141 |
| Mijozning oylik limiti oshib ketdi | 140 |
| Mijoz noto'g'ri summa uzatdi (tarifga mos kelmaydi) | 413 |
| Biznes-cheklovlar | |
| Mijoz sizning qora ro'yxatingizda / to'lovga taqiq qo'yilgan | 501 (Tranzaksiyalar taqiqlangan) |
| Bekor qilish va tranzaksiya statuslari | |
| Paynet allaqachon bekor qilingan tranzaksiyani bekor qilishga urinmoqda | 202 (Tranzaksiya allaqachon bekor qilingan) |
| Paynet tranzaksiyani bekor qilmoqda, lekin mijoz mablag'ni allaqachon sarflagan | 77 (Bekor qilish uchun mablag' yetarli emas) |
| Siz qaytarishni rad etasiz: yopuvchi hujjatlar shakllantirilgan, hisobot davri yopilgan (masalan, yanvarda to'lov — martda qaytarish) | 306 (Ruxsat etilgan bekor qilish vaqti tugagan) |
| Paynet mavjud bo'lmagan tranzaksiyani bekor qilmoqda | 203 (Tranzaksiya topilmadi) |
Paynet mavjud bo'lmagan tranzaksiya statusini so'ramoqda (CheckTransaction) |
Xato emas! transactionState: 3 bilan result qaytaring |
Paynet tranzaksiyaning dublikatini yubormoqda (PerformTransaction) |
201 (Tranzaksiya allaqachon mavjud) — keyin Paynet CheckTransaction ni chaqiradi |
| Boshqalar | |
| Paynet oq ro'yxatidan tashqari IP-manzildan so'rov | 601 (Kirish taqiqlangan) — firewall darajasida bloklash afzalroq |
| Noma'lum/qo'llab-quvvatlanmaydigan buyruq qiymati | 603 (Buyruq kodi noto'g'ri) |
| Xizmatning majburiy parametri uzatilmagan | 411; aniq parametr xatosi — 401–410 (parametrlar raqamlanishi sizning xizmatingiz tomonidan belgilanadi va anketada qayd etiladi) |
| Sana/vaqt tanib bo'lmaydigan formatda | 414 |
[!NOTE]
412xatosi haqida (Noto'g'ri login yoki parol): autentifikatsiya faqat HTTP darajasida bajariladi — noto'g'ri hisob ma'lumotlarida JSON-RPC xatosi emas,HTTP 401 Unauthorizedqaytaring.412kodi — protokolning dastlabki versiyalaridan qolgan legacy, yangi integratsiyalarda ishlatilmaydi.
| Paynet xato kodi | Tavsif |
|---|---|
| 0 | Muvaffaqiyatli o'tkazildi |
| 77 | To'lovni bekor qilish uchun mijoz hisobida mablag' yetarli emas |
| 100 | Xizmat vaqtincha qo'llab-quvvatlanmaydi |
| 101 | Kvota tugagan |
| 102 | Tizim xatosi |
| 103 | Noma'lum xato |
| 113 | Hamyon identifikatsiya qilinmagan |
| 140 | Ushbu akkaunt uchun oylik limit oshib ketdi |
| 141 | Ushbu akkaunt uchun kunlik limit oshib ketdi |
| 201 | Tranzaksiya allaqachon mavjud |
| 202 | Tranzaksiya allaqachon bekor qilingan |
| 203 | Tranzaksiya topilmadi |
| 301 | Raqam mavjud emas |
| 302 | Mijoz topilmadi |
| 304 | Tovar topilmadi |
| 305 | Xizmat topilmadi |
| 306 | Tranzaksiyani bekor qilish uchun ruxsat etilgan vaqt tugagan (hisobot davri yopilgan — hamkor qaytarishni rad etadi) |
| 401 - 410 | Parametrni validatsiya qilish xatosi 1 - 10 |
| 411 | Bitta yoki bir nechta majburiy parametrlar o'rnatilmagan |
| 412 | Noto'g'ri login yoki parol |
| 413 | Noto'g'ri summa |
| 414 | Sana va vaqt formati noto'g'ri |
| 415 | Summa maksimal limitdan oshib ketdi |
| 501 | Ushbu to'lovchi uchun tranzaksiyalar taqiqlangan |
| 601 | Kirish taqiqlangan |
| 603 | Buyruq kodi noto'g'ri |
JSON-RPC protokoli xatoliklari:
| Xato kodi | Tavsif |
|---|---|
| -32300 | So'rov metodi POST bo'lmagan holatda xatolik yuzaga keladi |
| -32700 | JSON parsing xatosi (javobda "id": null ruxsat etiladi) |
| -32600 | RPC-so'rovda majburiy maydonlar yo'q yoki noto'g'ri turda |
| -32601 | So'ralgan metod topilmadi |
| -32602 | Parametrlarning majburiy maydonlari yo'q (protokol darajasi; biznes-analogi — 411) |
| -32603 | Tizim (ichki xatolik) |
[!NOTE]
0kodi («Muvaffaqiyatli o'tkazildi») — status qiymati, u hech qachonerrorobyekti ichida qaytarilmaydi.
| Sana | Versiya | O'zgarishlar |
|---|---|---|
| 01.04.2022 | 1.0 | UWS spetsifikatsiyasining dastlabki versiyasi |
| 20.09.2022 | 1.1 | Yangilangan versiya |
| 28.11.2023 | 3.3 | CheckTransaction: vaqt parametri — timestamp |
| 07.05.2025 | 3.4 | CheckTransaction: timestamp formati aniqlashtirildi (EEE MMM dd HH:mm:ss z yyyy). Joriy versiya |
Portal va OpenAPI spetsifikatsiyasi 2025-yil 07-maydagi UWS v3.4 ga Paynet core-jamoasining aniqlashtirishlari bilan mos keladi: 306 xato kodi qo'shildi (bekor qilish uchun ruxsat etilgan vaqt tugagan), TLS v1.3 talabi belgilandi, GetInformation javobidagi status maydoni majburiy deb tasdiqlandi.