⚡ REST API v1

PayHamyon API

Telegram bot va web loyihalaringiz uchun Humo avtomatik to'lov tizimi.

🚀 Boshlash

4 bosqichda boshlang

PayHamyon API bilan ishlashni boshlash uchun quyidagi amallarni bajaring.

1

Loyiha yarating

Telegram botda 📁 Loyiham bo'limiga o'ting va yangi loyiha yarating.

2

Telegram profilingizni ulang

Loyiha sozlamalarida 🔗 Telegramni ulash tugmasini bosing.

3

Project ID va KEY ni oling

Loyiha ma'lumotlari sahifasida Project ID va Project KEY ni ko'ring.

4

Birinchi to'lovni yarating

/payment/create API orqali birinchi to'lovni yarating va sinab ko'ring.

PayHamyon API nima?

PayHamyon API — bu Telegram botlari va web loyihalar uchun mo'ljallangan avtomatik Humo to'lov tizimidir. Ushbu API orqali loyihangizga to'lov qabul qilish imkoniyatini qo'shishingiz, to'lovlar holatini kuzatishingiz va to'lovlarni bekor qilishingiz mumkin.

So'rovlarni autentifikatsiya qilish

Har bir so'rovda ikkita parametr talab qilinadi — Project ID va Project KEY.

So'rov formati

JSON
{
  "project_id": 123,
  "project_key": "abc123def456..."
}
📌 Ma'lumot: Project ID va Project KEY ni Telegram botdagi 📁 Loyiham bo'limidan olishingiz mumkin.

API metodlari

Mavjud API endpointlari va ularning qisqa tavsifi.

Metod Endpoint Tavsif
POST /payment/create Yangi to'lov yaratish
GET /payment/status To'lov holatini tekshirish
POST /payment/cancel To'lovni bekor qilish
GET /project Loyiha ma'lumotlarini olish

POST /payment/create

Yangi to'lov yaratish uchun ushbu endpointdan foydalaning.

So'rov

JSON
{
  "project_id": 123,
  "project_key": "abc123def456...",
  "amount": 15000
}

Javob

JSON
{
  "success": true,
  "payment_id": 42,
  "requested_amount": 15000,
  "real_amount": 15123,
  "card_number": "9860********3509",
  "expires_at": "2026-07-05T14:30:00",
  "status": "pending"
}

Parametrlar

ParametrTuriTavsif
requested_amount float Siz so'ragan to'lov summasi (so'm)
real_amount float Haqiqiy to'lov summasi (requested_amount + random 1-200 so'm)
payment_id int Yaratilgan to'lovning unikal ID si
expires_at string To'lovning amal qilish muddati (ISO 8601)
status string To'lov holati (pending, paid, cancelled, expired)
card_number string To'lov qilish uchun karta raqami (maskirovka qilingan)
ℹ️ real_amount — Har bir to'lov uchun so'ralgan summaga +1 dan +200 so'm gacha random qo'shiladi. Bu avtomatik to'lov moslashuvi (matching) uchun kerak.

GET /payment/status

To'lovning joriy holatini tekshirish uchun ushbu endpointdan foydalaning.

So'rov

GET parametrlari
GET /payment/status?project_id=123&project_key=abc...&payment_id=42

Javob

JSON
{
  "success": true,
  "payment_id": 42,
  "status": "pending"
}

Mumkin bo'lgan statuslar

pending paid cancelled expired

POST /payment/cancel

To'lovni bekor qilish uchun ushbu endpointdan foydalaning. Faqat pending holatidagi to'lovlarni bekor qilish mumkin.

So'rov

JSON
{
  "project_id": 123,
  "project_key": "abc123def456...",
  "payment_id": 42
}

Javob

JSON
{
  "success": true,
  "status": "cancelled"
}

GET /project

Loyiha ma'lumotlarini olish uchun ushbu endpointdan foydalaning.

So'rov

GET parametrlari
GET /project?project_id=123&project_key=abc...

Javob

JSON
{
  "success": true,
  "project": {
    "id": 123,
    "name": "My Project",
    "payment_type": "Humo",
    "telegram_connected": true,
    "card_number": "9860********3509"
  }
}

Xatolik javoblari

So'rovda xatolik bo'lsa, quyidagi formatda javob qaytariladi:

JSON
{
  "success": false,
  "error": "Xatolik haqida ma'lumot"
}

Keng tarqalgan xatoliklar

XatolikTavsif
Invalid Project KEYProject KEY noto'g'ri yoki mos kelmadi
Project not foundBunday ID ga ega loyiha topilmadi
Payment not foundBunday ID ga ega to'lov topilmadi
Payment expiredTo'lov muddati tugagan (bekor qilib bo'lmaydi)
Payment already paidTo'lov allaqachon to'langan (bekor qilib bo'lmaydi)
Telegram not connectedLoyihaga Telegram profil ulanmagan
Amount too smallSo'ralgan summa juda kichik (min: 1000 so'm)
Amount too largeSo'ralgan summa juda katta (max: 10 000 000 so'm)

Kod misollari

Turli dasturlash tillarida PayHamyon API ga so'rov yuborish misollari.

PHP (cURL)

PHP
<?php

$url = "http://your-server:8000/payment/create";
$data = [
    "project_id" => 123,
    "project_key" => "abc123def456...",
    "amount" => 15000
];

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);
$result = json_decode($response, true);

echo "Payment ID: " . $result["payment_id"];
curl_close($ch);

Python (requests)

Python
import requests

url = "http://your-server:8000/payment/create"
payload = {
    "project_id": 123,
    "project_key": "abc123def456...",
    "amount": 15000
}

resp = requests.post(url, json=payload)
data = resp.json()

if data["success"]:
    print(f"Payment ID: {data['payment_id']}")
    print(f"Real amount: {data['real_amount']} so'm")
    print(f"Card: {data['card_number']}")
else:
    print(f"Error: {data['error']}")

JavaScript (fetch)

JavaScript
const url = "http://your-server:8000/payment/create";
const payload = {
    project_id: 123,
    project_key: "abc123def456...",
    amount: 15000
};

const response = await fetch(url, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify(payload)
});

const data = await response.json();

if (data.success) {
    console.log("Payment ID:", data.payment_id);
    console.log("Real amount:", data.real_amount);
    console.log("Card:", data.card_number);
} else {
    console.error("Error:", data.error);
}

Ko'p beriladigan savollar

Eng ko'p so'raladigan savollar va ularga javoblar.

Project KEY — bu har bir loyiha uchun avtomatik yaratiladigan maxfiy kalit. U API so'rovlarini autentifikatsiya qilish uchun ishlatiladi. Project KEY faqat sizga ma'lum bo'lishi kerak, uni boshqalarga bermang.
Payment ID — bu har bir to'lov uchun avtomatik yaratiladigan unikal identifikator. To'lov holatini tekshirish va to'lovni bekor qilish uchun ishlatiladi.
real_amount — bu siz so'ragan summaga +1 dan +200 so'm gacha random qo'shilgan haqiqiy to'lov summasidir. Bu avtomatik to'lov moslashuvi (matching) tizimi uchun kerak. Foydalanuvchi aynan real_amount miqdorida pul o'tkazishi kerak.
To'lov yaratilganidan so'ng 5 daqiqa davomida amal qiladi. Agar foydalanuvchi shu vaqt ichida to'lovni amalga oshirmasa, to'lov avtomatik ravishda expired holatiga o'tadi.
Tizim avtomatik ravishda bir xil summani takrorlanmasligini ta'minlaydi. Har bir to'lov uchun real_amount +1 dan +200 so'm gacha random qo'shiladi, shuning uchun ikkita to'lovning real_amount qiymati bir xil bo'lmaydi.

Qo'llab-quvvatlash

Savollaringiz bo'lsa, biz bilan bog'lanishingiz mumkin.

👨‍💻 Telegram Support

Texnik yordam va savollar uchun Telegram orqali bog'lanishingiz mumkin.

✉️ Telegram orqali yozish