سجل التغييرات
ما تغيّر في واجهة الشركاء وحزم SDK وهذا الموقع — الأحدث أولًا.
واجهة الشركاء 1.4
- شحن العدادات: اقرأ باقات العدادات بسعر محفظتك، واشحن العداد بمعرّف عملية تحفظه أولًا، واقرأ الإيصالات والرموز والاستردادات.
- الشحن المباشر: اقرأ المنتجات ومواقعها وعروض أسعارها، واقرأ عمليات الشحن المباشر الخاصة بك. طلب الشحن المباشر وتصحيح بيانات المستلم يُفتحان لاحقًا.
- الإشعارات: سجّل عنوان HTTPS واحدًا، واستقبل إشعارات النتائج الموقّعة، واعرض التسليم واطلب إعادة الإرسال. تصل الإشعارات من عنوان ثابت واحد لكل بيئة.
- يحتاج كل منتج إلى صلاحيته الخاصة، ويضيفها موظفو أنيس إلى تطبيقك.
حزمة SDK لـ .NET 2.2.0
- اقرأ باقات شحن العدادات واشحن العدادات واعرض عملياتك. واقرأ منتجات الشحن المباشر ومواقعها وعروض أسعارها، واطلب الشحن المباشر واعرض عملياتك وصحّح حقول مستلميها.
- سجّل عنوان استقبال الإشعارات واعرض التسليم واطلب إعادة الإرسال دون تكرار الشراء.
- تحقّق من توقيع الإشعار الوارد بالغرض المنفصل لمفتاح الإشعارات.
حزمة SDK لـ TypeScript و Node.js 2.2.0
- اقرأ باقات شحن العدادات واشحن العدادات واعرض عملياتك. واقرأ منتجات الشحن المباشر ومواقعها وعروض أسعارها، واطلب الشحن المباشر واعرض عملياتك وصحّح حقول مستلميها.
- سجّل عنوان استقبال الإشعارات واعرض التسليم واطلب إعادة الإرسال دون تكرار الشراء.
- تحقّق من توقيع الإشعار الوارد بالغرض المنفصل لمفتاح الإشعارات.
حزمة SDK لـ PHP 2.2.0
- اقرأ باقات شحن العدادات واشحن العدادات واعرض عملياتك. واقرأ منتجات الشحن المباشر ومواقعها وعروض أسعارها، واطلب الشحن المباشر واعرض عملياتك وصحّح حقول مستلميها.
- سجّل عنوان استقبال الإشعارات واعرض التسليم واطلب إعادة الإرسال دون تكرار الشراء.
- تحقّق من توقيع الإشعار الوارد بالغرض المنفصل لمفتاح الإشعارات.
حزمة SDK لـ Python 2.2.0
- اقرأ باقات شحن العدادات واشحن العدادات واعرض عملياتك. واقرأ منتجات الشحن المباشر ومواقعها وعروض أسعارها، واطلب الشحن المباشر واعرض عملياتك وصحّح حقول مستلميها.
- سجّل عنوان استقبال الإشعارات واعرض التسليم واطلب إعادة الإرسال دون تكرار الشراء.
- تحقّق من توقيع الإشعار الوارد بالغرض المنفصل لمفتاح الإشعارات.
واجهة الشركاء 1.3
- اعرض العناوين المسموح بها لتطبيقك، ومن أضاف كلًا منها، وعدد العناوين الإضافية المتاحة لك.
- أضف عنوانًا عامًا واحدًا أو أزله في كل مرة. يسري التغيير من استدعائك التالي، وتكرار التغيير آمن.
- تتوفر هذه الميزة فقط في بيئة الاختبار التي تمنحك إياها أنيس. وفي الإنتاج تكون الإجابة 404 بالرمز
resource_not_found.
واجهة الشركاء 1.2
- تحمل الفئة الفرعية
categoryType—localأوinternational— أي نوع الفئة التي تتبع لها، في قائمة الفئات الفرعية وعند قراءة فئة فرعية واحدة. - يحمل
categoryفي بطاقة الكتالوج الحقلَtypeبالقيمتين نفسيهما، في قائمة البطاقات وعند قراءة بطاقة واحدة. لم تعد بحاجة إلى قراءة الفئات لمعرفته. - لا يظهر أيٌّ منهما إن لم تحدد أنيس نوع الفئة. البطاقات المملوكة وكشف الأكواد والطلبات لم تتغير. لم يُحذف شيء ولم يُعَد تسمية شيء: التكامل الذي يتجاهل الحقول غير المعروفة يستمر في العمل.
حزمة SDK لـ .NET 2.1.0
- تحمل الفئة الفرعية في الكتالوج نوع فئتها (محلية أو دولية)، وتحمل فئة بطاقة الكتالوج نوعها أيضًا. ويُقرأ كلاهما «غير معروف» إن لم ترسله أنيس.
- لفئة بطاقة الكتالوج نموذج خاص بها؛ أما فئة البطاقات المملوكة وكشف الأكواد والطلبات وفئتها الفرعية فلم تتغير.
حزمة SDK لـ TypeScript و Node.js 2.1.0
- تحمل الفئة الفرعية في الكتالوج نوع فئتها (محلية أو دولية)، وتحمل فئة بطاقة الكتالوج نوعها أيضًا. ويُقرأ كلاهما «غير معروف» إن لم ترسله أنيس.
- لفئة بطاقة الكتالوج نموذج خاص بها؛ أما فئة البطاقات المملوكة وكشف الأكواد والطلبات وفئتها الفرعية فلم تتغير.
حزمة SDK لـ Python 2.1.0
- تحمل الفئة الفرعية في الكتالوج نوع فئتها (محلية أو دولية)، وتحمل فئة بطاقة الكتالوج نوعها أيضًا. ويُقرأ كلاهما «غير معروف» إن لم ترسله أنيس.
- لفئة بطاقة الكتالوج نموذج خاص بها؛ أما فئة البطاقات المملوكة وكشف الأكواد والطلبات وفئتها الفرعية فلم تتغير.
حزمة SDK لـ PHP 2.1.0
- تحمل الفئة الفرعية في الكتالوج نوع فئتها (محلية أو دولية)، وتحمل فئة بطاقة الكتالوج نوعها أيضًا. ويُقرأ كلاهما «غير معروف» إن لم ترسله أنيس.
- لفئة بطاقة الكتالوج نموذج خاص بها؛ أما فئة البطاقات المملوكة وكشف الأكواد والطلبات وفئتها الفرعية فلم تتغير.
حزمة SDK لـ .NET 2.0.1
- تُقرأ من جديد المحفظة التي رصيدها أقل من صفر — حين تستخدم الدين المسموح؛ إذ كان الإصدار 2.0.0 يفشل في قراءتها. وقد تحمل المبالغ في ردود أنيس إشارة سالب في أولها.
- طلبات الشراء لم تتغير: يُرفض سعر الوحدة الذي لا يزيد على صفر قبل إرسال أي شيء.
حزمة SDK لـ TypeScript و Node.js 2.0.1
- تُقرأ من جديد المحفظة التي رصيدها أقل من صفر — حين تستخدم الدين المسموح؛ إذ كان الإصدار 2.0.0 يفشل في قراءتها. وقد تحمل المبالغ في ردود أنيس إشارة سالب في أولها.
- طلبات الشراء لم تتغير: يُرفض سعر الوحدة الذي لا يزيد على صفر قبل إرسال أي شيء.
حزمة SDK لـ Python 2.0.1
- تُقرأ من جديد المحفظة التي رصيدها أقل من صفر — حين تستخدم الدين المسموح؛ إذ كان الإصدار 2.0.0 يفشل في قراءتها. وقد تحمل المبالغ في ردود أنيس إشارة سالب في أولها.
- طلبات الشراء لم تتغير: يُرفض سعر الوحدة الذي لا يزيد على صفر قبل إرسال أي شيء.
حزمة SDK لـ PHP 2.0.1
- تُقرأ من جديد المحفظة التي رصيدها أقل من صفر — حين تستخدم الدين المسموح؛ إذ كان الإصدار 2.0.0 يفشل في قراءتها. وقد تحمل المبالغ في ردود أنيس إشارة سالب في أولها.
- طلبات الشراء لم تتغير: يُرفض سعر الوحدة الذي لا يزيد على صفر قبل إرسال أي شيء.
- تُكتب المبالغ السالبة الصغيرة بشكل صحيح.
واجهة الشركاء v1 2026-10 / SDK 2.0.0
- تغييرات غير متوافقة: يتطلب توقيع الردّ tag="anis-response-v2" ويغطي Signature الخاصة بالاستدعاء كما وصلت، إلى جانب Signature-Input. يفحص الإصدار 2.0.0 المفاتيح المخترقة والنشطة والتالية والمُنهى عملها؛ وإصدارات 1.x مهجورة.
- يتحقق كل مفتاح توقيع فقط من الردود المُنشأة عند notBefore الخاص به أو بعده؛ وتبقى المفاتيح المُنهى عملها منشورة لمدة 90 يومًا. يحتفظ الإصدار 2.0.0 بمستند المفاتيح لمدة لا تتجاوز 5 دقائق من وقت جلبه أول مرة ويرفض مدة حفظ أطول؛ والمفتاح المجهول يسبب جلبًا واحدًا على الأكثر كل 30 ثانية، بما في ذلك محاولات الجلب الفاشلة، والمفاتيح المخترقة لا تسبب جلبًا أبدًا. تستمر استدعاءات المعلومات في العمل خلال حادثة تخص مفاتيح التوقيع. يختبر المثالان الجديدان RS-112 وRS-113 ردودًا أُنشئت قبل بدء مفتاح نشط أو مُنهى.
- يُحدّ محتوى طلب الشراء بـ 8,192 بايت وبترميز UTF-8؛ ويُرفض غير ذلك بالحالة 422 والرمز validation_failed. رمز جديد 429 spending_limit_exceeded: لا يُقدَّم طلب الشراء الذي يتجاوز سقف إنفاق التطبيق (افتراضيًا 5,000 د.ل يوميًا، بنوافذ UTC)؛ وتذكر Retry-After الثواني حتى نهاية النافذة، ويحتاج الطلب الجديد Idempotency-Key جديدًا.
- تغييرات غير متوافقة: تستخدم مسارات البطاقات المملوكة owned-cards؛ ويحل soldCardId محل id وoperationId محل orderOperationId. تحمل CardSummary القيمة المطبوعة والشعار والفئة الفرعية والفئة. وتشمل soldCards في طلب الشراء البنية الكاملة للبطاقة المكشوفة.
- تغييرات غير متوافقة: صيغة Money واحدة غير سالبة بثلاث خانات عشرية؛ وعملة المحفظة هي balance.currency. تُحذف النصوص الفارغة والمحلية الفارغة. minimumQuantity دائمًا 1 وmaximumQuantity حدّ المنصة، وهو 100.
- تعليق التطبيق وإلغاء المفتاح ذاتيًا باستدعاء موقَّع، مع سبب وأثر فوري وإشعارات بريدية؛ والاستئناف للموظفين فقط. قراءة جديدة غير موقَّعة لبطاقة الكتالوج. شروط الأدلة والنزاعات مسودة بانتظار المراجعة القانونية.
واجهة الشركاء 1.1
- ردّ إرسال المفتاح يحمل
safetyCode: 16 خانة، تُكتبXXXX-XXXX-XXXX-XXXX. وبعد إرسال المفتاح يتصل موظفو أنيس بجهة الاتصال الفنية لديك ويطلبونه قبل أن يصبح مفتاحك فعّالًا. - تُرسل دعوة تسجيل المفتاح بالبريد الإلكتروني إلى جهة الاتصال الفنية من العنوان
no-reply@anis.ly— وهي صالحة لمدة 24 ساعة ولا يطلبها موظفو أنيس أبدًا. ويصلك بريد «مفتاحك أصبح فعّالًا» بعد تأكيد مفتاحك. - كل ردّ على طلب شراء (الأول وتكراره والقراءة) يحمل الآن
cardIdوquantityوexternalReferenceالخاص بك؛ وبعد الاكتمال يحملtotalأيضًا. أما رموز البطاقات فلا تزال في الردّ الأول فقط. - قراءة طلب شراء فشل تحمل
failureCode: سبب الفشل. - الردّ الذي يُبلغ أولًا عن طلب شراء مدفوع حُجبت رموزه يحمل
codesWithheld: true. - تحمل البطاقات في الكتالوج
minimumQuantityوmaximumQuantity؛ وتحمل الفئات الفرعيةdisclaimerلتعرضه على عميلك النهائي. - الكشف يسمّي البطاقة (
cardوinvoiceIdوpurchasedAt) ويعطيexpiryDate؛ وتوجدexpiryDateأيضًا على بطاقات ردّ طلب الشراء. - تحمل البطاقات المملوكة
unitPriceوexpiryDateوinvoiceNumberوfaceValueوsubcategory. وتساويcredentialAvailableالقيمةtrueفقط حين يعطي الكشف رمزًا؛ والبطاقة المستردّة تساويfalse. - كل إضافة اختيارية: تُحذف حين لا يكون هناك ما تقوله.
واجهة الشركاء 1.0
- الملف، والمحافظ، والكتالوج، وطلبات الشراء، والبطاقات المملوكة، والكشف، والفحص الذاتي للتوقيع.
- تسجيل المفاتيح، واستبدالها مع فترة تداخل، وإلغاؤها.
- كل استدعاء موقَّع بمفتاحك؛ وكل ردّ ينقل مالًا أو يسلّم بطاقات أو يُثبت مفتاحك موقَّع من أنيس (طلبات الشراء والكشف وتسجيل المفتاح والفحص الذاتي للتوقيع).
حزمة SDK لـ .NET 1.4.0
- لم يعد يُتحقَّق من استدعاءات المعلومات (ملف التطبيق والمحافظ والكتالوج والبطاقات المملوكة) لأن أنيس لا توقّع ردودها؛ أما الاستدعاءات الموقَّعة (طلبات الشراء والكشف وتسجيل المفتاح والفحص الذاتي للتوقيع) فيُتحقَّق منها كما كان. الإصدارات الأقدم تتحقق من كل ردّ وتفشل مع استدعاءات المعلومات — استخدم 1.4.0 أو أحدث.
حزمة SDK لـ PHP 1.1.0
- لم يعد يُتحقَّق من استدعاءات المعلومات (ملف التطبيق والمحافظ والكتالوج والبطاقات المملوكة) لأن أنيس لا توقّع ردودها؛ أما الاستدعاءات الموقَّعة (طلبات الشراء والكشف وتسجيل المفتاح والفحص الذاتي للتوقيع) فيُتحقَّق منها كما كان. الإصدارات الأقدم تتحقق من كل ردّ وتفشل مع استدعاءات المعلومات — استخدم 1.1.0 أو أحدث.
حزمة SDK لـ TypeScript و Node.js 1.1.0
- لم يعد يُتحقَّق من استدعاءات المعلومات (ملف التطبيق والمحافظ والكتالوج والبطاقات المملوكة) لأن أنيس لا توقّع ردودها؛ أما الاستدعاءات الموقَّعة (طلبات الشراء والكشف وتسجيل المفتاح والفحص الذاتي للتوقيع) فيُتحقَّق منها كما كان. الإصدارات الأقدم تتحقق من كل ردّ وتفشل مع استدعاءات المعلومات — استخدم 1.1.0 أو أحدث.
حزمة SDK لـ Python 1.1.0
- لم يعد يُتحقَّق من استدعاءات المعلومات (ملف التطبيق والمحافظ والكتالوج والبطاقات المملوكة) لأن أنيس لا توقّع ردودها؛ أما الاستدعاءات الموقَّعة (طلبات الشراء والكشف وتسجيل المفتاح والفحص الذاتي للتوقيع) فيُتحقَّق منها كما كان. الإصدارات الأقدم تتحقق من كل ردّ وتفشل مع استدعاءات المعلومات — استخدم 1.1.0 أو أحدث.
موقع المطوّرين 1.1
- أدلة جديدة لحزم SDK الخاصة بـ PHP و TypeScript و Node.js و Python، في كل منها سطر التثبيت والإعداد وطلبات الشراء وحالات الرفض وروابط الحزمة وشيفرتها المصدرية.
- كل بطاقة SDK في الصفحة الرئيسية تفتح دليلها.
- كل صفحة SDK تقول بوضوح إن حزم SDK أدوات مساعدة اختيارية تُقدَّم كما هي، وإن الواجهة يمكن استخدامها مباشرة.
حزمة SDK لـ PHP 1.0.0
- الإصدار الأول من
anis-ly/partnersلـ PHP من 8.2 إلى 8.5:composer require anis-ly/partners. تعمل مع أي عميل HTTP يتبع PSR-18، وتتيح ذاكرة تخزين PSR-16 لعمليات PHP-FPM مشاركة مستند مفاتيح التوقيع. - السلوك نفسه الذي في حزمة SDK لـ .NET 1.3.0: كل استدعاء موقَّع، وكل ردّ يُتحقَّق منه قبل قراءته، ونتائج طلب الشراء الخمس، وأنواع رفض لكل رمز خطأ، وتسجيل المفتاح مع رمز الأمان، والتنقل بين الصفحات، وتتبّع ومقاييس وسجلات لا تسجّل أي سرّ أبدًا.
- مفحوصة مقابل رسائل اختبار التوقيع نفسها التي تُفحص بها كل حزم SDK من أنيس، ومُتحقَّق منها من البداية إلى النهاية مقابل بيئة أنيس حقيقية.
- مجانية بموجب رخصة MIT وتُقدَّم كما هي. والشيفرة المصدرية علنية.
حزمة SDK لـ TypeScript و Node.js 1.0.0
- الإصدار الأول من
@anis-ly/partnersلـ Node.js 22 وما بعده:npm install @anis-ly/partners. نسختان بوحدات ES و CommonJS مع أنواع كاملة؛ ويقبل كل استدعاءAbortSignal؛ ومنشورة مع بيان مصدر موقَّع. - السلوك نفسه الذي في حزمة SDK لـ .NET 1.3.0: كل استدعاء موقَّع، وكل ردّ يُتحقَّق منه قبل قراءته، ونتائج طلب الشراء الخمس، وأنواع رفض لكل رمز خطأ، وتسجيل المفتاح مع رمز الأمان، والتنقل بين الصفحات، وتتبّع ومقاييس وسجلات لا تسجّل أي سرّ أبدًا.
- مفحوصة مقابل رسائل اختبار التوقيع نفسها التي تُفحص بها كل حزم SDK من أنيس، ومُتحقَّق منها من البداية إلى النهاية مقابل بيئة أنيس حقيقية.
- مجانية بموجب رخصة MIT وتُقدَّم كما هي. والشيفرة المصدرية علنية.
حزمة SDK لـ Python 1.0.0
- الإصدار الأول من
anis-partnersلـ Python من 3.11 إلى 3.14:pip install anis-partners. عميل متزامن وآخر غير متزامن بالنتائج نفسها، مع أنواع كاملة؛ ويقبل العميل غير المتزامن مُوقِّعًا وذاكرة تخزين من نوع coroutine. - السلوك نفسه الذي في حزمة SDK لـ .NET 1.3.0: كل استدعاء موقَّع، وكل ردّ يُتحقَّق منه قبل قراءته، ونتائج طلب الشراء الخمس، وأنواع رفض لكل رمز خطأ، وتسجيل المفتاح مع رمز الأمان، والتنقل بين الصفحات، وتتبّع ومقاييس وسجلات لا تسجّل أي سرّ أبدًا.
- مفحوصة مقابل رسائل اختبار التوقيع نفسها التي تُفحص بها كل حزم SDK من أنيس، ومُتحقَّق منها من البداية إلى النهاية مقابل بيئة أنيس حقيقية.
- مجانية بموجب رخصة MIT وتُقدَّم كما هي. والشيفرة المصدرية علنية.
حزمة SDK لـ .NET 1.3.0
- الخاصية الجديدة
EnrollmentKeyResult.SafetyCode: رمز الأمان المكوَّن من 16 خانة للمفتاح الذي أرسلته، ويطلب منك موظفو أنيس قراءته عبر الهاتف قبل أن يصبح مفتاحك فعّالًا. ويطبعه المثال. - يفحص
SubmitKeyAsyncالبصمة التي يُرجعها الخادم مقابل مفتاحك أنت قبل أن يرسل أي شيء آخر. وإذا اختلفتا يُلقي الاستثناء الجديدEnrollmentKeyMismatchException: لا تتابع، واكتب إلى support@anis.ly. - لا يتوقف شيء مما كتبته عن التجميع ولا يتغير سلوكه.
حزمة SDK لـ .NET 1.2.0
- الخصائص الجديدة
Order.ExternalReferenceوOrder.FailureCodeوOrder.CodesWithheld. وتساويOrderCompleted.CodesWithheldالآنtrueحين تقول أنيس ذلك أو حين لا يحمل الردّ رموزًا، فيبقى سلوك 1.1.0 كما هو. - الخاصيتان الجديدتان
CatalogueCard.MinimumQuantityوMaximumQuantity: تحقّق منهما قبل الطلب. والخاصية الجديدةCatalogueSubcategory.Disclaimer: اعرضها على عميلك النهائي قبل أن يشتري. - الخاصية الجديدة
RevealedCredential.ExpiryDate؛ وفي الكشف أيضًاInvoiceIdوCardوPurchasedAt. - الجديد في
MaskedCard:UnitPriceوExpiryDateوInvoiceNumber(اذكره للدعم) وFaceValueوSubcategory. وتساويCredentialAvailableالآنtrueفقط حين يعطي الكشف رمزًا؛ والبطاقة المستردّة تساويfalse. - كل إضافة اختيارية: لا يتوقف شيء مما كتبته عن التجميع ولا يتغير سلوكه.
حزمة SDK لـ .NET 1.1.0
- يُرجع
CreateAsyncالمرفوض بسبب حدّ معدّل الاستدعاءاتOrderOutcomeUnknownبدلًا منOrderNotPlaced: استأنف بالمعرّف نفسه. - الرموز
invalid_credentialsوinsufficient_scopeوwallet_not_grantedفي طلب الشراء تعود منCreateAsyncأيضًا على شكلOrderOutcomeUnknown(مهلة مقترحة 60 ثانية): أعِد الوصول أولًا، ثم استأنف بالمعرّف نفسه. - الخاصية الجديدة
OrderCompleted.CodesWithheld: تساويtrueحين يكون طلب الشراء مدفوعًا ومكتملًا لكن رموزه محجوبة. لا تشترِه مرة أخرى. - سعر الوحدة الذي لا يزيد على صفر يُرفض قبل الإرسال، بالاستثناء
ArgumentOutOfRangeException. - الخاصية الجديدة
EnrollmentStatus.KeyExpiresAt: تاريخ توقف مفتاحك النشط عن العمل. - أُزيلت الخاصية
EnrollmentKeyRequest.Cidrs: أبلغ موظفي أنيس بالشبكات التي ستستدعي منها عندما تطلب الوصول. - رمز خطأ جديد هو
malformed_signed_request(الحالة 400): الاستدعاء الموقّع غير سليم البنية. وفي طلب الشراء يُرجعهCreateAsyncعلى شكلOrderOutcomeUnknown: أصلح التوقيع، ثم استأنف بالمعرّف نفسه.
حزمة SDK لـ .NET 1.0.0
- لـ .NET 8 و .NET 10.
- توقّع كل استدعاء وتتحقق من كل ردّ؛ وتشمل كل استدعاءات الواجهة.
- طلبات شراء آمنة: معرّف عملية خاص بك، وخمسة أنواع من النتائج، ولكل طلب شراء مرفوض بيان هل تمّ.
- تسجيل مفتاح جديد، بما في ذلك إثبات الحيازة.
- عدة تطبيقات لدى أنيس في مضيف واحد.
- تتبّع ومقاييس وسجلات تحت
Anis.Partners.Sdk، دون تسجيل أي سرّ.
موقع المطوّرين 1.0
- دليل الاستخدام: البداية، وتسجيل مفتاح، وتوقيع الاستدعاءات، والتحقق من الردود، وأمثلة اختبار التوقيع، وطلبات الشراء والاستعادة، والأخطاء والحدود، والمسارات والصلاحيات، والأمان، والمراقبة، والعمل مع مساعد ذكاء اصطناعي.
- صفحة مرجع لكل استدعاء في الواجهة، وصفحة دائمة لكل رمز خطأ.
- بالإنجليزية والعربية.
- جاهز لمساعدات الذكاء الاصطناعي (الملفات بالإنجليزية): كل صفحة بصيغة Markdown، وملف
llms.txt، وقواعد لمساعدات الذكاء الاصطناعي، ووصف OpenAPI، ورموز الأخطاء كبيانات، وأمثلة اختبار التوقيع.