HUMO yoki UZCARD kartangizga kelgan o'tkazmani 5–30 soniyada aniqlaymiz va saytingiz, Telegram botingiz yoki POS tizimingizga xabar beramiz.
Mijoz 50 001 so'm o'tkazdi
Terminal, shartnoma yoki bank bilan yozishmalar shart emas. Pul to'g'ridan-to'g'ri o'z kartangizga tushadi.
Kabinetda do'kon ochiladi va shop_id, shop_key beriladi. 7 kun bepul.
Karta raqamini kiriting va karta xabarlari keladigan Telegram akkauntni xavfsiz sahifa orqali ulang.
Saytingiz /payment/create ga summa yuboradi — javobda karta va aniq summa keladi.
Pul tushishi bilan complete_url ga paid, 5 daqiqada tushmasa cancel keladi.
Ikki mijoz bir vaqtda 50 000 so'm to'lasa, tizim ikkinchisiga avtomatik 50 001 so'm beradi. Siz hech narsa qilmaysiz — javobdagi amountni ko'rsatasiz, xolos.
Har bir to'lov uchun pay_url: karta raqami, nusxalash tugmasi va taymer. Saytingizda alohida dizayn shart emas.
Telegram akkaunt alohida himoyalangan sahifada ulanadi, sessiya serverda shifrlangan holda saqlanadi.
Serveringiz javob bermasa, natija 3, 10, 30 va 60 soniyadan keyin qayta yuboriladi.
Kunlik tushum grafigi, barcha to'lovlar va mos kelmagan kirimlar — bitta sahifada.
JSON yoki form-data bilan ishlaydi. Base URL: https://pay.jamshidkhatamov.uz
/payment/createto'lov yaratish/payment/statusholatni tekshirish/payment/cancelbekor qilishprepare_urlto'lov boshlandicomplete_urlpaid yoki cancelImzo: md5(shop_id + payment_id + amount + shop_key). Callback ga 200 qaytaring va tovarni payment_id bo'yicha faqat bir marta bering.
import requests, hashlib BASE = "https://pay.jamshidkhatamov.uz" SHOP_ID, SHOP_KEY = "jkh_xxxx", "sk_xxxx" # 1) To'lov yaratish r = requests.post(f"{BASE}/payment/create", json={ "shop_id": SHOP_ID, "shop_key": SHOP_KEY, "amount": 50000, "order_id": "1042", }).json() # r["amount"] -> mijoz aynan shuni to'laydi (masalan 50001) # r["card"] -> {"number", "holder", "provider"} # r["pay_url"] -> tayyor to'lov sahifasi # 2) complete_url (Flask misol) @app.post("/jkhpay/complete") def complete(): d = request.get_json() sign = hashlib.md5(f"{d['shop_id']}{d['payment_id']}{d['amount']}{SHOP_KEY}".encode()).hexdigest() if sign != d["sign"]: return "bad sign", 403 if d["status"] == "paid": mark_order_paid(d["order_id"], d["payment_id"]) # bir marta! return "ok", 200
<?php $base = "https://pay.jamshidkhatamov.uz"; $shopId = "jkh_xxxx"; $shopKey = "sk_xxxx"; // 1) To'lov yaratish $ch = curl_init("$base/payment/create"); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ["Content-Type: application/json"], CURLOPT_POSTFIELDS => json_encode([ "shop_id" => $shopId, "shop_key" => $shopKey, "amount" => 50000, "order_id" => "1042", ]), ]); $pay = json_decode(curl_exec($ch), true); header("Location: " . $pay["pay_url"]); // 2) complete.php $d = json_decode(file_get_contents("php://input"), true); $sign = md5($d["shop_id"] . $d["payment_id"] . $d["amount"] . $shopKey); if (!hash_equals($sign, $d["sign"])) { http_response_code(403); exit; } if ($d["status"] === "paid") markOrderPaid($d["order_id"], $d["payment_id"]); echo "ok";
import crypto from "node:crypto"; const BASE = "https://pay.jamshidkhatamov.uz"; const SHOP_ID = "jkh_xxxx", SHOP_KEY = "sk_xxxx"; // 1) To'lov yaratish const pay = await fetch(`${BASE}/payment/create`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ shop_id: SHOP_ID, shop_key: SHOP_KEY, amount: 50000, order_id: "1042" }), }).then(r => r.json()); // 2) complete_url (Express) app.post("/jkhpay/complete", express.json(), (req, res) => { const d = req.body; const sign = crypto.createHash("md5") .update(`${d.shop_id}${d.payment_id}${d.amount}${SHOP_KEY}`).digest("hex"); if (sign !== d.sign) return res.sendStatus(403); if (d.status === "paid") markOrderPaid(d.order_id, d.payment_id); res.send("ok"); });
Komissiya olmaymiz — pul to'liq o'z kartangizga tushadi. Obuna narxi va bir nechta do'kon uchun chegirmani bilish uchun @jamshidkhatamov ga yozing.
Bepul sinovni boshlashTo'g'ridan-to'g'ri o'zingizning HUMO yoki UZCARD kartangizga. JKH Pay pulga tegmaydi va pul ko'chira olmaydi — faqat karta xabarnomasini o'qib, summani buyurtma bilan solishtiradi.
Kod hech qachon Telegram chatga yozilmaydi — u alohida sahifada kiritiladi. Sessiya serverda shifrlangan holda saqlanadi va faqat karta botlaridan kelgan xabarlar o'qiladi. Eng xavfsiz yo'l — karta xabarlarini alohida raqamdagi Telegram akkauntga ulash. Istalgan vaqtda Telegram → Sozlamalar → Qurilmalar bo'limidan seansni yopishingiz mumkin.
To'lov summa bo'yicha aniqlanadi, shuning uchun summa aynan mos kelishi kerak. Mos kelmagan kirim kabinetda alohida ro'yxatda ko'rinadi va uni qo'lda tekshirasiz. To'lov sahifasida summa katta qilib, nusxalash tugmasi bilan ko'rsatiladi.
Yo'q. Kartani kuzatish bizning serverda. Siz faqat to'lov yaratasiz va complete_url ga kelgan javobni qabul qilasiz. Bitta to'lov bo'yicha javob ikki marta kelishi mumkin, shuning uchun tovarni payment_id bo'yicha bir marta bering.
Odatda 5–30 soniya — bu bank xabarnomasi qanchalik tez kelishiga bog'liq. Pul 5 daqiqa ichida tushmasa, to'lov cancel holatiga o'tadi.