پرش به محتوای اصلی
برای توسعه‌دهندگان

Idempotency-Key: چطور retry را بدون پرداخت تکراری انجام دهیم

شبکه قطع می‌شود و درخواست‌ها تکرار می‌شوند. با یک هدر ساده، هر تکرار همان نتیجه اول را می‌گیرد.

· ۵ دقیقه مطالعه · تیم شی‌پی

فرض کنید سرور شما درخواست ایجاد پرداخت را فرستاده ولی قبل از رسیدن پاسخ، ارتباط قطع شده است. آیا پرداخت ساخته شد؟ اگر دوباره بفرستید، ممکن است دو پرداخت برای یک سفارش داشته باشید. Idempotency-Key این مشکل را حل می‌کند.

چطور کار می‌کند؟

  • برای هر عملیات منطقی یک کلید یکتا بسازید (مثلاً order-1042-create-1) و در هدر بفرستید.
  • اگر همان کلید با همان بدنه دوباره برسد، پاسخ ذخیره‌شده اول با هدر Idempotent-Replayed: true برمی‌گردد.
  • اگر همان کلید با بدنه متفاوت برسد، خطای 422 idempotency_key_reused می‌گیرید.
  • اگر درخواست اول هنوز در حال پردازش باشد، 409 idempotency_in_progress می‌گیرید؛ کمی بعد تکرار کنید.

کجا الزامی است؟

برای ایجاد پرداخت توصیه می‌شود و برای استرداد الزامی است. علاوه بر آن، merchant_reference یکتا هم جلوی ثبت دو پرداخت برای یک سفارش را می‌گیرد.

جزئیات: مستندات Idempotency

اولین رسیدتان را امروز صادر کنید

ثبت‌نام با شمارهٔ موبایل انجام می‌شود و تا تأیید مدارک، همه‌چیز را در محیط آزمایشی امتحان می‌کنید.

هزینهٔ ثبت‌نامندارد
کارمزدفقط تراکنش موفق