Tezkor to'lovlar & Xizmatlar — inPAY
Kassa qo'llanmasiga qaytish
Tezkor to'lovlar

Tezkor to'lovlar & Xizmatlar

Kassangizni inPAY xizmatlar katalogiga qo'shing — mijoz sizning kartochkangizni bosib, kerakli ma'lumotni (masalan: o'yin ID, login, telefon) kiritib bir necha soniyada to'laydi. Quyida xizmatni merchant panelda qanday sozlash, mijozdan qanday maydon so'rash va to'lov tugagach webhook qabul qilish tushuntirilgan.

Katalog
https://inpay.uz/service
Webhook
HMAC-SHA256
Operational
Standard tarif
8 tagacha
Maxsus maydon
HMAC
Imzolangan webhook
Moderatsiya
Admin tasdig'i
1-bosish
Tezkor to'lov modal
Tezkor to'lov nima? Mijoz tomonidan ko'rinishi
"Tezkor to'lov" — bu inpay.uz/service katalogidagi to'lov oqimi. Mijoz havola yoki kassa yaratishni kutmaydi: u sizning kartochkangizni topadi, modal oynada kerakli maydonlarni to'ldiradi, summani kiritadi va darhol to'laydi. Bu oddiy kassa (API orqali link yaratish) dan farq qiladi — bu yerda hammasi katalog orqali, siz sozlagan maydonlar bilan ishlaydi.
Topadi
Mijoz /service katalogdan kassangizni tanlaydi
To'ldiradi
Siz belgilagan maydonlar + summa modal oynada
To'laydi
Checkout: Click / Payme / karta
Webhook
inPAY sizning webhook'ingizga natijani yuboradi
Merchant panelda sozlash /merchant → kassa → Xizmat to'lovlari
1
Xizmat turi biriktirilishi (admin)
Avval inPAY admin kassangizga xizmat turini (masalan mobile, internet, gaming) biriktiradi. Biriktirilmagan bo'lsa panelda "Bu merchantga hali xizmat turi biriktirilmagan" deb chiqadi — admin bilan bog'laning.
2
Panelni oching
/merchant sahifasiga kiring → kassangizni tanlang → "Xizmat to'lovlari" bo'limini oching. Bu yerda har bir biriktirilgan xizmat turi alohida kartochka bo'lib chiqadi.
3
Mijozdan so'raladigan maydonlarni belgilang
Mijoz to'lashda qaysi ma'lumotni kiritishini siz belgilaysiz — masalan o'yin ID, login, telefon. Har bir maydonga nom (label), kalit (field_key), placeholder va turini bering. Maksimum 8 ta maydon.
4
Webhook URL va maxfiy kalit
To'lov muvaffaqiyatli bo'lganda inPAY xabar yuboradigan webhook_url (faqat https://) va webhook_secret ni kiriting. Secret bo'sh qoldirilsa — tizim avtomatik generatsiya qiladi va sizga ko'rsatadi (uni saqlab qo'ying, imzo tekshiruvida kerak).
5
Saqlang → admin tasdig'i
Saqlagach holat pending bo'ladi. Admin tasdiqlagach approved bo'lib webhook ishga tushadi. Eslatma: webhook URL'ni keyin o'zgartirsangiz holat yana pendingga tushadi va qayta tasdiq talab qiladi.
Webhook URL'ingiz domeni avtomatik ravishda kassangizning callback whitelistiga qo'shiladi — alohida qo'shish shart emas.
Maydon (field) sozlamalari mijozdan so'raladigan har bir maydon
SozlamaMa'nosiQiymatlar / cheklov
field_keyWebhook fields ichidagi kalit nomifaqat a-z 0-9 _, max 80 belgi
labelMijozga ko'rinadigan nommasalan "O'yin ID", max 120 belgi
placeholderBo'sh maydondagi namuna matnixtiyoriy, max 200 belgi
hintMaydon ostidagi izohixtiyoriy, max 255 belgi
input_typeHTML input turitext / tel / number / email
input_modeMobil klaviatura rejimitext / tel / numeric / decimal / email
is_requiredMajburiymi1 (ha) / 0 (yo'q)
Xizmat webhook formati inPAY → sizning webhook_url
POSTapplication/json
{ "event": "payment.success", "tx_id": "9f3a8c2b1d4e5f60a1b2c3d4e5f60718", "merchant_id": "94055", "service_type": "mobile", "amount": 5000, // so'm, butun son "currency": "UZS", "fields": { // siz belgilagan maydonlar "phone_number": "998901234567", "account_id": "player_42" }, "note": "Mobil to'ldirish", "paid_at": "2026-06-11 14:30:00" }
Content-Type: application/json User-Agent: inPAY-Webhook/1.0 X-inPAY-Event: payment.success X-inPAY-Tx: 9f3a8c2b1d4e5f60a1b2c3d4e5f60718 X-inPAY-Signature: sha256=<hmac_sha256(body, webhook_secret)>
Imzoni majburiy tekshiring. Imzo X-inPAY-Signature sarlavhasida sha256=... ko'rinishida keladi va butun JSON tana ustidan hash_hmac('sha256', body, webhook_secret) bilan hisoblanadi. Bu oddiy kassa callbackidan farq qiladi — u yerda oddiy sha256(maydonlar+SALT), bu yerda esa HMAC ishlatiladi.
Namuna — webhook qabul qilish + imzo tekshirish merchant tomoni
to'liq namuna
<?php // service-webhook.php — xizmat to'lovi natijasini qabul qiladi $secret = 'WEBHOOK_SECRET'; // merchant panelda ko'rsatilgan secret $body = file_get_contents('php://input'); $hdr = $_SERVER['HTTP_X_INPAY_SIGNATURE'] ?? ''; // "sha256=..." $got = preg_replace('/^sha256=/', '', $hdr); // 1) HMAC imzoni qayta hisoblang va solishtiring $expected = hash_hmac('sha256', $body, $secret); if (!hash_equals($expected, $got)) { http_response_code(403); exit('bad signature'); } $data = json_decode($body, true); // 2) Hodisani ishlang (idempotent — tx_id bo'yicha bir marta!) if (($data['event'] ?? '') === 'payment.success') { $tx = $data['tx_id']; $amount = $data['amount']; $phone = $data['fields']['phone_number'] ?? null; // ... mijozga xizmat/mahsulot bering, buyurtmani yoping } // 3) Albatta 200 qaytaring — aks holda inPAY qayta uradi (max 6 marta) http_response_code(200); echo json_encode(['ok' => true]);
const express = require("express"); const crypto = require("crypto"); const app = express(); const SECRET = "WEBHOOK_SECRET"; // MUHIM: imzo xom tana ustidan hisoblanadi — raw body kerak app.post("/service-webhook", express.raw({ type: "*/*" }), (req, res) => { const body = req.body.toString("utf8"); const got = (req.get("X-inPAY-Signature") || "").replace(/^sha256=/, ""); const expected = crypto.createHmac("sha256", SECRET).update(body).digest("hex"); if (expected !== got) return res.status(403).send("bad signature"); const data = JSON.parse(body); if (data.event === "payment.success") { // data.tx_id, data.amount, data.fields.phone_number ... } res.json({ ok: true }); }); app.listen(3000);
Holatlar konfiguratsiya va to'lov
JoyHolatMa'nosi
Webhook konfiguratsiyasi
merchant_service_config
pendingSaqlandi, admin tasdig'i kutilmoqda — webhook hali ishlamaydi
approvedTasdiqlandi — webhook ishga tushdi
rejectedRad etildi — admin bilan bog'laning
To'lov
service_payments
pendingMijoz hali to'lamadi
successTo'landi — webhook payment.success yuboriladi
failedTo'lov amalga oshmadi
Qayta urinish. Webhook 2xx javob olmasa inPAY uni 6 martagacha qayta yuboradi. Shu sababli bir tx_id uchun xizmatni faqat bir marta bering (idempotentlik).
Qaysi birini tanlash kerak?
Oddiy kassa (API)Tezkor to'lov (Xizmat)
Qo'llanma/service_docsshu sahifa
QachonO'z saytingiz/botingizda to'lov tugmasiinPAY katalogida xizmat sotish
To'lov yaratishAPI: /api/v1/createMijoz /service modalda o'zi
Mijoz maydonlariSiz belgilaysiz (o'yin ID, login…)
Webhook imzosisha256(maydonlar + SALT)HMAC-SHA256(body, secret)
ModeratsiyaKassa tasdiqlanishi yetarliWebhook alohida tasdiqlanadi
Xizmatni ulashda yordam kerakmi?
Xizmat turini biriktirish, webhook tasdig'i yoki maydon sozlash bo'yicha texnik jamoamizga murojaat qiling.