Asosiy kontentga o'tish
MilliySavdo

Idempotentlik

Idempotency-Key headeri bilan POST /v1/orders ni xavfsiz qayta yuboring — tarmoq uzilsa ham ikkinchi raqam olinmaydi.

Nega kerak#

Buyurtma yaratish so'rovi serverga yetib borib, javob yo'lda yo'qolishi mumkin. Oddiy qayta yuborish ikkinchi raqamni oladi va pul ikki marta yechiladi.Idempotency-Key bilan server takroriy so'rovni taniydi va o'sha buyurtmani qaytaradi.

Ishlatish#

  • Har bir yangi buyurtma uchun yangi tasodifiy kalit yarating (UUID v4), maksimal 80 belgi.
  • Qayta urinishlarda aynan o'sha kalit va o'sha body ni yuboring.
  • Kalitni buyurtma yozuvi bilan birga bazangizda saqlang — jarayon qayta ishga tushsa ham takrorlay olasiz.
curl -X POST 'https://api.milliysavdo.uz/v1/orders' \
  -H "Authorization: Bearer $MILLIYSAVDO_API_KEY" \
  -H 'Idempotency-Key: 8f14e45f-ceea-4e1a-9b2c-0d3c5e7a1b20' \
  -H "Content-Type: application/json" \
  -d '{"country_id":6,"service_code":"907"}'
{
  "id": "ord_test_14",
  "object": "order",
  "mode": "test",
  "status": "waiting_sms",
  "phone": "+1888582997",
  "sms_code": null,
  "country": {
    "id": 6,
    "name": "United States",
    "iso_code": null
  },
  "service": {
    "code": "907",
    "title": "Telegram"
  },
  "price": {
    "amount": "3842.44",
    "amount_cents": 384244,
    "retail_amount": "4269.38",
    "retail_amount_cents": 426938,
    "discount_percent": "10.00",
    "currency": "UZS"
  },
  "created_at": "2026-10-16T02:13:52.251868Z",
  "expires_at": "2026-10-16T02:33:52.251868Z",
  "completed_at": null
}

Takroriy javob#

O'sha kalit bilan qayta yuborilganda 200 OK va Idempotent-Replayed: true headeri qaytadi — body asl buyurtma.

{
  "id": "ord_test_14",
  "object": "order",
  "mode": "test",
  "status": "waiting_sms",
  "phone": "+1888582997",
  "sms_code": null,
  "country": {
    "id": 6,
    "name": "United States",
    "iso_code": null
  },
  "service": {
    "code": "907",
    "title": "Telegram"
  },
  "price": {
    "amount": "3842.44",
    "amount_cents": 384244,
    "retail_amount": "4269.38",
    "retail_amount_cents": 426938,
    "discount_percent": "10.00",
    "currency": "UZS"
  },
  "created_at": "2026-10-16T02:13:52.251868Z",
  "expires_at": "2026-10-16T02:33:52.251868Z",
  "completed_at": null
}

Xatolar#

HolatJavob
O'sha kalit, boshqa body422 idempotency_key_reused
Birinchi so'rov hali bajarilmoqda409 idempotency_in_progress — biroz kutib qayta yuboring

Ma'lumot

Idempotentlik faqat POST /v1/orders uchun. GET so'rovlari tabiatan xavfsiz, cancel esa takrorlanganda 409 qaytaradi va pulni ikki marta qaytarmaydi.