Card Bind Webhook
Karta muvaffaqiyatli bog'langandan so'ng Paylov hamkor tizimiga yuboradigan webhook.
Sozlash kerak
Webhook manzili (endpoint) va unga kiradigan Basic Auth login/parol oldindan Paylov bilan birgalikda sozlanadi (merchant profilida saqlanadi). Agar bu hali sozlanmagan bo'lsa, qaysi manzilga va qanday login/parol bilan yuborishni Paylov texnik jamoasiga bildiring.
Request details
Method:
POST
URL: hamkor tomonidan berilgan webhook URL
Header:
http
Authorization: Basic base64(login:parol)
Content-Type: application/jsonRequest example
json
{
"token": "pR3x...kLq9",
"userId": "partner-user-10234",
"status": "confirmed",
"card": {
"cardId": "b1e2f3a4-...-uuid",
"userId": "partner-user-10234",
"owner": "TEST FOYDALANUVCHI",
"cardName": null,
"number": "860012******9012",
"balance": 1500000,
"expireDate": "2612",
"bankId": "7",
"bankName": "Ipoteka Bank",
"vendor": "uzcard",
"processing": "Uzcard",
"status": {
"is_active": true,
"status_message": "active",
"sms_info": true
}
}
}Params
| Field | Type | Description |
|---|---|---|
token | string | Havola yaratishda olingan token — hamkor tomonida so'rovni aniqlash uchun |
userId | string | Hamkorning o'zi havola yaratishda bergan userId |
status | string | Hozircha doim confirmed |
card.cardId | string | Keyingi barcha amallarda ishlatiladigan asosiy ID |
card.number | string | Maskalangan karta raqami — to'liq PAN hech qachon kelmaydi |
card.balance | integer | Tiyinda (100 = 1 so'm) |
Qabul qiluvchi (receiver) misoli — Python/FastAPI
python
import base64
from fastapi import FastAPI, Header, HTTPException, Request
EXPECTED_LOGIN = "partner_webhook"
EXPECTED_PASSWORD = "..." # Paylov bilan kelishilgan
app = FastAPI()
@app.post("/paylov/card-bind/webhook")
async def card_bind_webhook(request: Request, authorization: str = Header(None)):
if not authorization or not authorization.startswith("Basic "):
raise HTTPException(401)
decoded = base64.b64decode(authorization[6:]).decode()
login, password = decoded.split(":", 1)
if login != EXPECTED_LOGIN or password != EXPECTED_PASSWORD:
raise HTTPException(401)
payload = await request.json()
user_id = payload["userId"]
card = payload["card"]
# card["cardId"] ni shu userId uchun saqlang
return {"ok": True}Eslatma
Webhook javobi 2xx bo'lishi kerak. Agar hamkor tomoni javob bermasa yoki xato qaytarsa, Paylov buni faqat log'da qoldiradi — qayta avtomatik urinish hozircha yo'q. Shu sababli holatni tekshirish so'rovi zaxira sifatida mavjud.