رموز الأخطاء · المفاتيح والتواقيع

بيانات اعتماد غير صالحة

الرمزinvalid_credentials
الحالة401
إن كان طلب شراءلم يشترِ شيئًا — ربما اشترت نسخة سابقة: استأنف بالمعرّف نفسه
هل تعيد إرساله كما هو؟لا — غيّر شيئًا أولًا
حزمة SDK لـ ‎.NETInvalidCredentialsException

ربما تمّت نسخة سابقة من طلب الشراء هذا

هذا الاستدعاء لم يشترِ شيئًا، لكنه رُفض قبل أن تنظر أنيس في طلب الشراء، فهو لا يقول شيئًا عن محاولة سابقة بمعرّف العملية نفسه. عالج السبب أولًا (أعِد الوصول، أو أصلح طريقة توقيع الاستدعاء)، ثم استأنف بالمعرّف نفسه (أو اقرأه بالاستدعاء GET /orders/{operationId}). لا تقدّمه أبدًا بمعرّف جديد.

المعنى

تعذّر على أنيس التحقق من هوية الاستدعاء: معرّف المفتاح غير معروف؛ أو المفتاح غير فعّال (لم يُؤكَّد بعد، أو أُلغي، أو تجاوز تاريخ انتهائه)، أو هو مفتاح مستبدَل انتهت فترة التداخل الخاصة به؛ أو التوقيع لا يطابق الاستدعاء؛ أو التوقيع قديم جدًا أو موقَّع بساعة غير مضبوطة. كل هذه الحالات تتلقى الرد نفسه عمدًا، كي لا يكشف الرفض لأحد أيّها يلتفّ عليه. أما الاستدعاء الموقّع غير سليم البنية فيُجاب بـ malformed_signed_request.

ما عليك فعله

  • تحقّق من أن معرّف المفتاح والمفتاح الخاص الذي توقّع به متطابقان.
  • تحقّق من أن المفتاح فعّال: تعرض حالة التسجيل active بعد أن يؤكّده موظفو أنيس، و keyExpiresAt هو تاريخ توقفه عن العمل.
  • تحقّق من ساعة الخادم، ووقّع كل محاولة من جديد — لا تُعِد استخدام توقيع قديم أبدًا.
  • بعد استبدال المفتاح (يعمل المفتاحان معًا حتى 30 يومًا، تُحسب من وقت بدء عمل المفتاح الجديد): عند انتهاء فترة التداخل يُرفض المفتاح القديم تلقائيًا بالرمز invalid_credentials — دون أن يحتاج أحد إلى فعل شيء. انقل التوقيع إلى معرّف المفتاح الجديد قبل ذلك.
  • شغّل الفحص الذاتي للتوقيع: يعرض بالضبط ما رأته أنيس. وإن رُفض هو أيضًا، فتحقّق من المفتاح وحالته، ومن ساعة الخادم، ومن العنوان الذي تستدعيه — يجب أن يكون العنوان الذي أعطتك إياه أنيس.
  • في طلب شراء: رُفض الاستدعاء قبل أن تنظر أنيس في طلب الشراء، فهو لا يقول شيئًا عن محاولة سابقة بمعرّف العملية نفسه. أعِد الوصول أولًا، ثم استأنف بالمعرّف نفسه (أو اقرأه بالاستدعاء GET /orders/{operationId}). لا تقدّمه أبدًا بمعرّف جديد.

أين قد تصادفه

مثال

محتوى الرفض. قيمة type هي عنوان الصفحة الإنجليزية؛ وهذه الصفحة نسختها العربية.

{
  "type": "https://developers.anis.ly/errors/invalid-credentials",
  "title": "بيانات اعتماد غير صالحة",
  "status": 401,
  "code": "invalid_credentials",
  "requestId": "01J9R2K8T4V6XQ0M3B7C5D9E1F"
}