Skip to main content
يحول إذن الراية المميزة Dodo Payments إلى متجر راية مميزة يعى بالفواتير. أرفق راية مثل advanced_reports بمنتج، وكل عميل مدفوع يحصل على منحة يمكن لتطبيقك التحقق منها عبر API أو الاحتفاظ بالتزامن مع webhooks. لا منصة خارجية، لا OAuth، لا خطوة تسليم - المنحة نفسها هي القدرة.

ما يتم تسليمه

لا يغادر أي شيء Dodo Payments — المنحة هي ما يتم تسليمه:
  • عند إتمام عملية الشراء، يتم إنشاء المنحة وتنتقل مباشرةً إلى Delivered. ولا توجد مرحلة Pending، ولا يتطلب الأمر أي إجراء من العميل، ولا توجد طريقة لفشل التسليم.
  • تحتوي المنحة على حمولة feature مكتوبة النوع: { "feature_type": "boolean", "feature_id": "advanced_reports" }. يقرأ تطبيقك feature_id لتحديد ما يجب إلغاء قفله.
  • يؤدي الإلغاء أو استرداد المبلغ أو الإلغاء اليدوي إلى نقل المنحة إلى Revoked، ويرى تطبيقك اختفاء العلامة.
تشمل الاستخدامات الشائعة البوابة المستندة إلى الخطط (Pro يفتح التحليلات)، القدرات الإضافية (ترقية “API access”)، وبرامج الوصول المبكر المباعة كمشتريات مرة واحدة.
feature_id هو معرف يختاره التاجر، وليس فريداً عبر الأذونات. يمكن أن يمنح اثنان من الأذونات نفس feature_id — على سبيل المثال، خطة Pro الشهرية وخطة Pro السنوية كلاهما يمنح advanced_reports.

إنشاء راية مميزة

1

Open Entitlements

في لوحة التحكم Dodo Payments، اذهب إلى الأذونات وانقر على + لبدء إذن جديد، ثم اختر الرايات المميزة.
2

Name the flag

أعط الراية اسم عرض للوحة التحكم الخاصة بك، ومعرف ميزة ستتحقق منه تطبيقك (تقترح لوحة التحكم واحدًا من الاسم)، ووصف حتى يعرف فريقك ماذا يتحكم.
نموذج راية مميزة جديدة مع اسم العرض ومعرف الميزة والوصف ومدخلات مفاتيح-قيم للبيانات الوصفية

Creating a feature flag. The Feature ID is what your application checks; Meta Data attaches limits alongside the flag.

3

Optionally add metadata

تبديل البيانات الوصفية لإرفاق تكوين المفاتيح والقيم — الحدود، أسماء المستويات، الحصص — التي يتم تسليمها إلى تطبيقك جنبًا إلى جنب مع الراية. انظر إرفاق الحدود بالبيانات الوصفية.
4

Confirm

انقر تأكيد. تظهر الراية في قائمة الأذونات الخاصة بك، جاهزة للإرفاق بالمنتجات.
لوحة التحكم في الأذونات تظهر راية الميزة المتقدمة مع لوحة نشاط المنح الخاصة بها

The created feature flag. The right pane tracks every customer grant issued from it.

إرفاق بمنتج

افتح منتجًا (أو قم بإنشائه)، وابحث عن بطاقة الأذونات، وانقر على + لإرفاق الأذونات الموجودة. حدد راية الميزة الخاصة بك وانقر على تم.
لوحة إرفاق الأذونات مع راية الميزة المتقدمة المحددة

Attaching the feature flag to a product. One product can deliver multiple entitlements.

تظهر الراية المرفقة في نموذج المنتج، وقائمة المعاينة تتضمنها تحت التضمينات.
نموذج المنتج مع راية الميزة المتقدمة مرفقة في بطاقة الأذونات

The product now includes the feature flag. Every successful purchase or active subscription grants it.

التكوين المطلوب

الإنشاء عبر API


إرفاق الحدود بالبيانات الوصفية

تجيب الراية البوليانية “هل لدى هذا العميل الميزة؟”. تجيب البيانات الوصفية “مع أي تكوين؟”. تقبل البيانات الوصفية للأذونات القيم النصية والعددية والرقمية والبولينيانية، وكل منحة تأخذ لقطة مجمدة من بيانات الإذن عند إنشائها. ذاك السلوك اللقطة هو ما يجعل البيانات الوصفية آمنة للاستخدام بالنسبة لحدود الخطط:
  • تحرير البيانات الوصفية للإذن لاحقًا يؤثر فقط على المنح المستقبلية. يحتفظ العملاء بالحدود التي اشتروا تحتها.
  • يتم إرجاع اللقطة على كل منحة كحقلها metadata، لذا يتيح لك اتصال API واحد الحصول على الراية وتكوينها.
على سبيل المثال، يتيح advanced_reports بتكوين { "tier": "pro", "monthly_report_limit": 100 } لتطبيقك فتح لوحة العدادات وتنفيذ حصة 100 تقرير بدون بحث ثانٍ. إذا قمت لاحقًا بزيادة الحد إلى 250، فإن العملاء الحاليين يبقون عند 100 حتى يحصلوا على منحة جديدة (على سبيل المثال، بعد تغيير الخطة).
استخدم البيانات الوصفية للحدود والتكوين؛ استخدم feature_id فقط للهوية. ترميز الحدود في المعرف (advanced_reports_100) يجبر على راية جديدة لكل تغيير في الحدود ويعطل تحقق تطبيقك.

تحقق من ميزات العميل

سرد منح الرايات المميزة المسلمة للعميل وبناء مجموعة الميزات الممكنة. يعيد نقطة النهاية صفًا واحدًا لكل منحة عبر جميع الأذونات، يمكن تصفيتها بواسطة integration_type وstatus.
يتم تعبئة حمولة feature فقط على منح feature_flag؛ إنها null لكل نوع تكامل آخر. انظر إلى مرجع API قائمة منح العملاء للحصول على شكل الاستجابة الكامل.
التحقق من API في كل طلب يضيف تأخيرًا إلى مسار التطبيقات الحر. قم بتخزين مجموعة الميزات لكل عميل مع فترة صلاحية قصيرة الأمد (دقائق، وليست ساعات)، وقم بإبطال التخزين المؤقت من معالج الويب هوك الخاص بك عند تغيير حالة منحة - ذلك المزيج يحافظ على سرعة التحقق ويجعل الإلغاءات شبه فورية.

دورة الحياة

تتبع منح الراية المميزة دورة الحياة القياسية للمنح مع تبسيط واحد: لا توجد خطوة تسليم، لذا لا تجلس المنح في pending ولا تنتقل إلى failed. تتبع منح علامات الميزات دورة حياة المنحة القياسية مع تبسيط واحد: لا توجد خطوة تسليم، لذلك لا تبقى المنح مطلقًا في Pending ولا تنتقل إلى Failed.

خدمات الويب

اشترك في entitlement_grant.* الأحداث لتعكس الرايات في قاعدة البيانات الخاصة بك بدلاً من الاستطلاع:
  • entitlement_grant.created — تصل بالفعل delivered مع حمولة feature. قم بتمكين الميزة.
  • entitlement_grant.delivered — يتم تشغيلها عندما يتم استعادة منحة ملغاة مسبقًا. قم بإعادة تمكين الميزة.
  • entitlement_grant.revoked — الوصول محظور. قم بتعطيل الميزة وتحقق من revocation_reason لتحديد رسائلك.
  • entitlement_grant.created — تصل وهي بالفعل في Delivered مع حمولة feature. فعّل الميزة.
  • entitlement_grant.delivered — يتم إطلاقه عند استعادة منحة أُلغيت سابقًا. أعد تفعيل الميزة.
  • entitlement_grant.revoked — تم سحب صلاحية الوصول. عطّل الميزة وتحقق من revocation_reason لتحديد الرسالة المناسبة.
لا توجد entitlement_grant.failed للرايات المميزة — يحدث التسليم بالكامل داخل Dodo Payments ولا يمكن أن يفشل.

مثال: خطة Pro تفتح التقارير المتقدمة

  1. أنشئ الراية. feature_id: advanced_reports مع البيانات الوصفية { "tier": "pro", "monthly_report_limit": 100 }.
  2. قم بإرفاقها بمنتج الاشتراك في خطة Pro الخاصة بك.
  3. اشتراك العميل. ينشئ Dodo Payments منحة delivered ويطلق entitlement_grant.created؛ يقوم معالج الويب هوك الخاص بك بتمكين advanced_reports للعميل بحد 100.
  4. تطبيقك يبوّب الميزة. عند تحميل لوحة العدادات، تحقق من مجموعة الميزات المخبأة (أو اتصل بـ listEntitlementGrants) وعرض علامة التبويب للتقارير فقط عند توفر advanced_reports.
  5. قام العميل بالإلغاء. يقوم Dodo Payments بإلغاء المنحة ويطلق entitlement_grant.revoked؛ يقوم معالجك بتعطيل الميزة. إذا تعافى العميل لاحقًا عبر عملية dunning، entitlement_grant.delivered تستعيدها - لا حاجة لتغيير التعليمات البرمجية.
  6. أنشئ العلامة. feature_id: advanced_reports مع البيانات الوصفية { "tier": "pro", "monthly_report_limit": 100 }.
  7. أرفقها بمنتج اشتراك Pro Plan.
  8. يشترك أحد العملاء. تنشئ Dodo Payments منحة Delivered وتطلق entitlement_grant.created؛ ويمكّن معالج webhook لديك advanced_reports للعميل بحد أقصى قدره 100.
  9. يتحكم تطبيقك في الوصول إلى الميزة. عند تحميل لوحة المعلومات، تحقّق من مجموعة الميزات المخزّنة مؤقتًا (أو استدعِ listEntitlementGrants) واعرض علامة تبويب التقارير فقط عندما تكون advanced_reports موجودة.
  10. يلغي العميل اشتراكه. تلغي Dodo Payments المنحة وتطلق entitlement_grant.revoked؛ ويعطّل معالجك الميزة. وإذا استعاد العميل اشتراكه لاحقًا عبر عملية التحصيل المتأخر، فإن entitlement_grant.delivered يستعيدها — ولا حاجة إلى إجراء تغييرات على التعليمات البرمجية.

أفضل الممارسات

  • استخدم معرفات السمات الثابتة، الsnake_case. تتحقق تطبيقك من هذه السلاسل؛ تغيير الاسم يعد تغييرًا كسرًا على كلا الجانبين.
  • علم واحد لكل قدرة. فضل advanced_reports + api_access كأذونات اثنين على راية واحدة pro_bundle — تظل المخالفة وخليط الخطط نظيفة.
  • ادفع الحالة من خلال خدمات الويب، وتحقق من خلال API. تجعل الخدمات المعطاة قاعدة بياناتك محدثة؛ قائمة النقاط تكون مصدر الحقيقة لأعمال التوفيق والأخطاء في التخزين المؤقت.
  • تعامل مع revoked على أنها فورية. يعني العلم الذي تم إلغاؤه أن العميل لم يعد يدفع مقابل الميزة. اعتمد على الطلب التالي، وليس الجلسة التالية.
  • ضع الحدود في البيانات الوصفية، وليس في الكود. يؤدي تغيير الحصة بعد ذلك فقط إلى تحرير الإذن - يلتقط العملاء الجدد تلقائيًا بينما تحتفظ المنح الحالية بلقطة الشراء الخاصة بهم.
  • استخدم معرّفات ميزات ثابتة بنمط snake_case. يتحقق كود تطبيقك من هذه السلاسل؛ وإعادة تسمية إحداها تُعد تغييرًا يؤدي إلى كسر التوافق من كلا الجانبين.
  • علامة واحدة لكل قدرة. فضّل advanced_reports + api_access كاستحقاقين بدلًا من pro_bundle واحد — إذ يظل الإلغاء ومزيج الخطط منظّمين.
  • اعتمد على حالة webhooks، وتحقق باستخدام API. تحافظ webhooks على تحديث قاعدة بياناتك؛ وتُعد نقطة نهاية القائمة مصدر الحقيقة لمهام التسوية وحالات فقدان ذاكرة التخزين المؤقت.
  • تعامل مع Revoked على أنه فوري. تعني العلامة المُلغاة أن العميل لم يعد يدفع مقابل الميزة. طبّق التحكم في الوصول عند الطلب التالي، لا عند الجلسة التالية.
  • ضع الحدود في البيانات الوصفية، وليس في الكود. لا يتطلب تغيير الحصة بعد ذلك سوى تعديل الاستحقاق — إذ يحصل العملاء الجدد عليها تلقائيًا، بينما تحتفظ المنح الحالية بلقطة المشتريات الخاصة بها.
آخر تعديل في ٦ أغسطس ٢٠٢٦