Skip to main content
تحوّل Entitlements عملية الدفع الناجحة أو الاشتراك النشط إلى إمكانية وصول: مفتاح ترخيص في صندوق وارد العميل، أو feature flag يفحصه تطبيقك، أو دور في Discord، أو مستودع GitHub، أو قالب Notion، أو رابط remix في Framer، أو دعوة إلى محادثة Telegram، أو حزمة ملفات قابلة للتنزيل. يتولى Dodo Payments إصدار إمكانية الوصول هذه وتتبعها وإبطالها تلقائيًا مع تغيّر دورة حياة الدفع.
لوحة معلومات الاستحقاقات مع قائمة بالاستحقاقات على اليسار ونشاط المنح على اليمين

The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.

ما هي Entitlements؟

إن entitlement هو تعريف قابل لإعادة الاستخدام لشيء تسلّمه إلى العميل، مثل مفتاح ترخيص Pro، أو دور Discord باسم “Patrons”، أو إمكانية الوصول إلى مستودع GitHub خاص بك، أو حزمة كتب إلكترونية قابلة للتنزيل. تربط Entitlements بالمنتجات، ويسلّمها Dodo Payments عندما يدفع العميل. عندما يشتري العميل المنتج، ينشئ Dodo Payments grant: أي إصدار هذا entitlement لعميل واحد. يكون للـ grant إحدى أربع حالات: Pending أثناء تقدم التسليم، وDelivered بمجرد حصول العميل على إمكانية الوصول، وFailed إذا تعذر إكمال التسليم، وRevoked عند سحب إمكانية الوصول.
تتحكم Entitlements في التنفيذ (هل يملك العميل إمكانية الوصول؟). أما Credits فتتحكم في الاستهلاك (ما المقدار الذي يمكنه استخدامه؟). يمكنك ربط كليهما بالمنتج نفسه. راجع الفوترة القائمة على Credits لمعرفة المزيد عن Credits.

عمليات دمج متاحة

يتم تسليم كل entitlement من خلال تكامل واحد. اختر التكامل الذي يتوافق مع ما تبيعه.

License Keys

إنشاء مفاتيح ترخيص فريدة مع حدود تفعيل وانتهاء. الأفضل للبرامج، الملحقات، و CLIs.

Digital Files

سلّم الملفات القابلة للتنزيل، مثل الكتب الإلكترونية والقوالب والوسائط، باستخدام روابط تنزيل موقعة مسبقًا وتعليمات اختيارية.

Feature Flags

تحكّم في ميزات تطبيقك الخاص بناءً على عملية شراء. يتم التسليم عند الإنشاء، والتحقق من خلال API، والإبطال عند الإلغاء.

Discord

امنح العميل دورًا في خادم Discord الخاص بك عند الشراء. تتم إزالة الدور تلقائيًا عند الإلغاء.

GitHub

أضف العملاء كمتعاونين في مستودع خاص بمستوى الإذن الذي تختاره.

Telegram

أضف العملاء إلى دردشة أو قناة Telegram خاصة بعد الشراء.

Framer

افتح رابط قالب Remix في Framer للعملاء الذين يدفعون.

Notion

انسخ قالب Notion إلى مساحة عمل العميل عند الشراء.

كيف تعمل المنح

تتبع Grants أحداث الدفع والاشتراك نفسها التي تتلقاها باعتبارها webhooks. ينشئ Dodo Payments Grants لعمليات الشراء ويبطلها تلقائيًا، استنادًا إلى دورة حياة الدفع، لذلك لا تحتاج إلى استدعاء Grant API بنفسك.

دورة حياة المنحة

يمر Grant بالحالات التالية:
1

Created

ينشئ Dodo Payments Grant عند اكتمال الدفع أو عند تفعيل الاشتراك. تبدأ Grants الخاصة بـ feature flags بالحالة Delivered. كما تبدأ Grants الخاصة بمفاتيح التراخيص بالحالة Delivered عندما يستخدم entitlement القيمة fulfillment_mode: auto (وهي القيمة الافتراضية). في ظل fulfillment_mode: manual، يبدأ Grant بالحالة Pending من دون مفتاح إلى أن توفّر واحدًا باستخدام Fulfill License Key Grant. يبدأ كل تكامل آخر بالحالة Pending.تكاملات OAuth (Discord وGitHub وNotion) تعرض oauth_url يزوره العميل لمنح الموافقة. يحاول Dodo Payments إنشاء هذا الرابط عند إنشاء Grant. وإذا فشل ذلك، يبقى الحقل null إلى أن يبدأ العميل تدفق القبول من رسالة التسليم الإلكترونية أو من Customer Portal. أما التكاملات المباشرة مع المنصة (Telegram وFramer وDigital Files) فتبقى في الحالة Pending فقط أثناء تجهيز التسليم، ثم تنتقل إلى Delivered.
2

Delivered

عند اكتمال التسليم، ينتقل Grant إلى Delivered ويتم تعيين delivered_at. يكتمل التسليم عند إنشاء مفتاح الترخيص، أو تعيين الدور، أو منح الوصول إلى المستودع، أو حل روابط الملفات، أو إنهاء تدفق OAuth.
3

Failed

إذا أعاد استدعاء التكامل خطأً غير قابل لإعادة المحاولة، مثل رمز OAuth مُلغى، أو إذن مرفوض، أو ملف لم يعد موجودًا، ينتقل Grant إلى Failed. ويسجل الحقلان error_code وerror_message السبب.
4

Revoked

عند سحب إمكانية الوصول، مثلًا بسبب إلغاء اشتراك أو إصدار رد أموال أو إبطالك Grant، ينتقل Grant إلى Revoked. ويسجل الحقل revocation_reason المُشغّل.

سلوك Grant حسب الحدث

يغيّر كل حدث دفع واشتراك Grants كما يلي:
تكون Grants المدفوعة بالاشتراك idempotent لكل (entitlement, customer, subscription)، لذلك لا تنشئ عمليات التجديد وإعادة التفعيل Grants مكررة. أما Grants لمرة واحدة فتكون idempotent لكل (entitlement, customer, payment).

أنشئ أول Entitlement لك

1

Open Entitlements

انتقل إلى Entitlements في لوحة التحكم وانقر على + لإنشاء entitlement.
2

Pick an Integration

اختر نوع التكامل: License Key أو Digital Files أو Feature Flag أو Discord أو GitHub أو Telegram أو Figma أو Framer أو Notion. بالنسبة إلى تكاملات المنصات، صِل حسابك أولًا إذا لم تكن قد فعلت ذلك من قبل.
3

Configure Delivery

املأ الحقول الخاصة بالتكامل. على سبيل المثال، يطلب GitHub مستودعًا ومستوى إذن، ويطلب Discord خادمًا ودورًا اختياريًا، بينما يطلب License Key حدًا لعدد عمليات التفعيل ومدة الترخيص.
نموذج New Entitlement مع محدد التكامل وحقول الإعداد

Creating a GitHub entitlement. Each integration shows the fields it needs.

4

Save

انقر على Create Entitlement. يمكنك الآن ربط entitlement بأي منتج.

ربط Entitlements بالمنتجات

افتح منتجًا، وانتقل إلى قسم Entitlements، وحدد Entitlements التي تريد تسليمها عند شراء المنتج. يمكن لمنتج واحد تسليم عدة Entitlements في الوقت نفسه. على سبيل المثال، يمكن أن تتضمن خطة Pro مفتاح ترخيص وإمكانية وصول إلى GitHub ودورًا في Discord.
لوحة اختيار Entitlements للمنتج تعرض مربعات اختيار لكل entitlement متاح

Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.


تجربة العميل

البريد الإلكتروني وCustomer Portal

بعد الشراء، يتلقى العميل رسالة تسليم إلكترونية تتضمن مفتاح الترخيص أو روابط التنزيل أو روابط دعوة OAuth أو دعوة المنصة التي تنطبق على Entitlements الموجودة في المنتج. وتظل التفاصيل نفسها متاحة في Customer Portal، ضمن سجل الطلبات، ما دام Grant نشطًا.

التسليم المستند إلى OAuth

يتطلب وصول المشتركين إلى Discord وGitHub وNotion أن يسمح العميل لـ Dodo Payments بمنح هذا الوصول. تبقى هذه Grants في الحالة Pending إلى أن يكمل العميل تدفق OAuth من الرابط الموجود في بريده الإلكتروني أو في Customer Portal. بعد منح العميل الموافقة، ينتقل Grant إلى Delivered ويجهّز Dodo Payments إمكانية الوصول إلى المنصة.

الإبطال

عند إبطال Grant، يزيل Dodo Payments إمكانية الوصول من المنصة: إذ يزيل دور Discord أو يزيل متعاون GitHub أو يعطّل مفتاح الترخيص. ويرى العميل التغيير في Customer Portal.
بالنسبة إلى Digital Files، يمنع الإبطال إنشاء روابط تنزيل موقعة مسبقًا جديدة، لكنه لا يبطل النسخ التي نزّلها العميل بالفعل. خطط للتحكم في الوصول إلى محتواك مع مراعاة ذلك.

إدارة Grants

افتح أي entitlement من لوحة التحكم لعرض Grants الخاصة به. تعرض لوحة التفاصيل إجمالي Grants الممنوحة، وفلترًا للحالة، وصفًا واحدًا لكل Grant يتضمن العميل وتاريخ الوصول والحالة وإجراء Revoke. لإدارة Grants برمجيًا، أدرجها باستخدام فلتر status وأبطل Grant واحدًا باستخدام معرّفه:

إدارة API

Create Entitlement

أنشئ entitlement من أي نوع من أنواع التكامل.

List Entitlements

أدرج Entitlements مع تصفيتها حسب نوع التكامل.

Get Entitlement

استرجع entitlement وإعداده الذي تمت تسويته.

Update Entitlement

حدّث الاسم أو الوصف أو إعداد التكامل.

Delete Entitlement

احذف entitlement حذفًا ناعمًا. لا يتم إبطال Grants الحالية، لكن Dodo Payments لم يعد يديرها.

Upload File

ارفع ملفًا بحجم يصل إلى 500 MiB إلى entitlement من نوع Digital Files.

List Grants

أدرج Grants الخاصة بـ entitlement، مع تصفيتها حسب الحالة والعميل.

Revoke Grant

أبطل Grant واحدًا يدويًا.

Webhooks

يرسل Dodo Payments أربعة أحداث webhook لدورة حياة Grant. اشترك فيها للحفاظ على مزامنة تطبيقك مع ما يمكن لكل عميل الوصول إليه.

Entitlement Grant Webhook Payloads

اعرض مخطط الحمولة الكامل والأحداث النموذجية ومرجع revocation_reason.

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

  • استخدم entitlement واحدًا لكل قناة تسليم. لا تشارك entitlement واحدًا لـ Discord بين منتجات ذات نوايا مختلفة للأدوار. أنشئ entitlement واحدًا لكل دور حتى يظل الإبطال نظيفًا.
  • اختبر في وضع الاختبار أولًا. أنشئ entitlement، واربطه بمنتج اختباري، ونفّذ عملية checkout، وراقب انتقال Grant من Pending إلى Delivered. ثم ألغِ الاشتراك الاختباري وتأكد من إبطال Grant.
  • استمع إلى entitlement_grant.delivered، وليس payment.succeeded. قد تنجح عملية الدفع قبل اكتمال التنفيذ، خصوصًا في تدفقات OAuth. انتظر وصول Grant إلى Delivered قبل فتح الميزات التابعة في أنظمتك الخاصة. أما Grant الذي يتم تسليمه عند الإنشاء، مثل مفتاح ترخيص يتم تنفيذه تلقائيًا أو feature flag، فيصل كـ entitlement_grant.created مع status: "Delivered" بدلًا من ذلك.
  • تعامل مع entitlement_grant.failed باعتباره قابلًا للإجراء. يعني Grant الفاشل أن العميل دفع لكنه لم يحصل على إمكانية الوصول. اعرض هذه Grants على فريق الدعم أو شغّل إعادة منح.
  • اربط revocation_reason بتدفقات الاحتفاظ بالعملاء لديك. يمكن استرداد إبطال subscription_on_hold، لأن العميل قد يحدّث بطاقته. أما إبطال manual فهو مقصود. تعامل معهما بشكل مختلف في رسائل العملاء.
  • لا تبطل إمكانية الوصول عند subscription.past_due. يفتح ذلك الحدث فترة سماح، ويحتفظ العميل بإمكانية الوصول حتى انتهاء المدة. انتظر subscription.on_hold أو subscription.cancelled.
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦