تسليم تلقائي لمفاتيح الترخيص، الملفات القابلة للتنزيل، العلامات المميزة للميزات، والوصول إلى منصات مثل Discord، GitHub، Telegram، Framer، وNotion عند دفع العملاء.
الامتيازات تحول الدفع الناجح أو الاشتراك النشط إلى وصول حقيقي: مفتاح ترخيص في صندوق بريد العميل، علامة مميزة لميزة يتفقدها تطبيقك، دور في Discord، مستودع GitHub، قالب Notion، رابط Remix في Framer، دعوة دردشة في Telegram، أو حزمة ملفات قابلة للتنزيل. يقوم Dodo Payments بإصدار وتتبع وإلغاء هذا الوصول تلقائيًا مع تغييرات دورة الدفع.
The Entitlements dashboard. Each entitlement is a reusable template; the right pane shows individual customer grants.
الاستحقاق هو تعريف قابل لإعادة الاستخدام لشيء تقدمه للعميل: مفتاح ترخيص Pro، دور “Patrons” في Discord، الوصول إلى مستودع GitHub الخاص بك، أو حزمة كتب إلكترونية قابلة للتنزيل. تقوم بإرفاق الاستحقاقات بالمنتجات، وتتعامل Dodo Payments مع الباقي.عندما يشتري العميل المنتج، تنشئ Dodo Payments منحة، وهي إصدار استحقاق مخصص لذلك العميل. تمر المنح بعدة حالات: pending أثناء تقدم التسليم، delivered بمجرد أن يحصل العميل على الوصول، failed إذا لم يكتمل التسليم، و revoked عند سحب الوصول.
تتحكم الاستحقاقات في التنفيذ (هل لدى العميل وصول؟). تتحكم الأرصدة في الاستهلاك (كم يمكنهم استخدامه؟). يمكن إرفاق كلاهما بنفس المنتج. راجع الفوترة المعتمدة على الأرصدة للأرصدة.
يتم تشغيل المنح من خلال نفس أحداث الدفع والاشتراكات التي تتلقاها بالفعل كخدمات ويب. ليس لديك حاجة لاستدعاء API للمنح بنفسك للشراء. Dodo Payments ينشئ ويلغي المنح تلقائيًا بناءً على دورة الدفع الأساسية.
يتم إنشاء منحة عند اكتمال الدفع أو تفعيل الاشتراك. مفاتيح الترخيص والعلامات المميزة للميزات تنتقل مباشرة إلى delivered. تبدأ كل التكاملات الأخرى في pending. تتضمن التكاملات التي تعتمد على OAuth (Discord، GitHub، Notion) oauth_url يجب على العميل زيارتها لإكمال الموافقة. التكاملات المباشرة مع المنصات (Telegram، Framer، Digital Files) تبقى في pending فقط لفترة وجيزة أثناء توفير التسليم، ثم تتحول إلى delivered.
2
Delivered
عندما يكتمل التسليم (تم إنشاء مفتاح ترخيص، تم تعيين دور، تم منح وصول إلى المستودع، تم حل روابط الملفات، تم إكمال OAuth)، تنتقل المنحة إلى delivered ويتم تعيين delivered_at.
3
Failed
إذا أرجع استدعاء التكامل خطأ غير قابل للتكرار (تم إلغاء رمز OAuth، تم رفض إذن، لم يعد الملف موجودًا)، تنتقل المنحة إلى failed. يتم التقاط السبب في error_code وerror_message.
4
Revoked
عند سحب الوصول (تم إلغاء الاشتراك، تم إصدار رد أموال، أو الإلغاء بمبادرة من التاجر)، تنتقل المنحة إلى revoked. يتم تسجيل الزناد في حقل revocation_reason.
إلغاء جميع المنح الحالية، ثم إصدار منح لامتيازات الخطة الجديدة. revocation_reason: plan_changed.
refund.succeeded (دفعة واحدة)
إلغاء المنح لتلك الدفعة. revocation_reason: refund.
إلغاء API يدوي
إلغاء مع revocation_reason: manual. لا يتم إعادة منح الإلغاءات اليدوية تلقائيًا عند تجديد الاشتراك.
تم تعطيل مفتاح الترخيص
بالنسبة للمنح التي تعتمد على مفتاح الترخيص، فإن تعطيل المفتاح الأساسي يلغي المنحة مع revocation_reason: license_key_disabled. يتم تنشيط المنحة تلقائيًا إذا تم إعادة تفعيل المفتاح.
تم اكتشاف انجراف في المنصة
إذا انحرفت الجانب المنصة للتكامل عن التزامن (تم إزالة دور في Discord يدويًا، فقد الوصول إلى مستودع في تطبيق GitHub، أو اكتشاف تمرير تصالح يفقد الهدف)، تلغى المنحة مع revocation_reason: platform_external. لن يتم إعادة منحها تلقائيًا عند تجديد الاشتراك حتى يتم حل المشكلة الأساسية في المنصة.
المنح التي تعتمد على الاشتراك تكون فائضة لكل (entitlement, customer, subscription); لا تنشئ التجديدات وإعادة التفعيل منحًا مكررة. تكون المنح الفردية فائضة لكل (entitlement, customer, payment).
انتقل إلى الامتيازات في لوحة تحكم Dodo Payments وانقر على + لإنشاء امتياز جديد.
2
Pick an integration
اختر نوع التكامل: مفتاح ترخيص، ملفات رقمية، علامة مميزة للميزات، Discord، GitHub، Telegram، Framer، أو Notion. بالنسبة لتكاملات المنصة، قم بتوصيل حسابك أولاً إذا لم تكن قد فعلت ذلك من قبل.
3
Configure delivery
املأ الحقول الخاصة بالتكامل. على سبيل المثال، يطلب GitHub مستودعًا ومستوى إذن؛ يطلب Discord خادمًا ودورًا اختياريًا؛ يطلب مفتاح الترخيص حدود تنشيط وانتهاء الصلاحية.
Creating a GitHub entitlement. Each integration shows the fields it needs.
افتح منتجًا، وقم بتوسيع إعدادات متقدمة → الامتيازات والائتمانات، وحدد الامتيازات التي يجب تسليمها عند شراء المنتج. يمكن أن يسلم منتج واحد عدة امتيازات في وقت واحد. على سبيل المثال، يمكن أن تشمل خطة Pro مفتاح ترخيص، وصول إلى GitHub، ودور في Discord.
Attaching entitlements to a product. Selected entitlements are delivered on every successful purchase or active subscription.
يتلقى العملاء بريدًا إلكترونيًا للتسليم بعد الشراء يحتوي على مفتاح الترخيص، وروابط التحميل، وروابط الدعوة لـ OAuth، أو دعوة للمنصة، أيًا ما ينطبق على الامتيازات الموجودة في المنتج. تبقى نفس التفاصيل متاحة إلى الأبد من بوابة العملاء تحت سجل الطلبات الخاص بهم.
يتطلب الوصول للمشتركين في Discord وGitHub وNotion من العميل تفويض Dodo Payments لمنحهم الوصول. تبقى هذه المنح في حالة pending حتى يكمل العميل تدفق OAuth باستخدام الرابط من بريده الإلكتروني أو بوابة العملاء. بمجرد التفويض، تنتقل المنحة إلى delivered ويتم توفير الوصول إلى المنصة فورًا.
تم إزالة المنح الملغاة على مستوى المنصة: يتم إزالة دور Discord، ويتم إزالة المتعاون في GitHub، ويتم تعطيل مفتاح الترخيص. يرى العملاء هذا التغيير منعكسًا في بوابة العملاء.
بالنسبة للملفات الرقمية، يلغي الإلغاء الوصول إلى عناوين URL الموقعة مسبقًا في المستقبل ولكنه لا يبطل النسخ التي قام العميل بتنزيلها بالفعل. خطط محتوى بوابة المحتوى وفقًا لذلك.
افتح أي امتياز من لوحة التحكم لرؤية منحته. تعرض لوحة تفاصيل المنحة إجمالي المنح ومرشحات الحالة ومعلومات العميل وتواريخ التسليم وإجراء الإلغاء.يمكنك أيضًا إدارة المنح برمجيًا:
import DodoPayments from 'dodopayments';const client = new DodoPayments({ bearerToken: process.env['DODO_PAYMENTS_API_KEY'],});// List grants for an entitlementconst grants = await client.entitlements.grants.list('ent_abc123', { status: 'Delivered',});// Revoke a single grantawait client.entitlements.grants.revoke('grant_xyz789', { id: 'ent_abc123',});
يقوم Dodo Payments بتشغيل أربع أحداث ويب لحالة المنحة. اشترك في هذه الأحداث للحفاظ على توافق تطبيقك مع ما يمكن لكل عميل الوصول إليه.
الحدث
يعمل عند
entitlement_grant.created
تم إنشاء منحة جديدة. تصل منح مفتاح الترخيص delivered؛ تصل كل تكامل أخرى pending وتنتقل إلى delivered بمجرد نجاح استدعاء المنصة (أو بالنسبة للتكاملات المستندة إلى OAuth، بمجرد أن يمنح العميل التفويض).
entitlement_grant.delivered
تنتقل المنحة إلى التسليم. العميل الآن لديه إمكانية الوصول.
entitlement_grant.failed
لم يمكن توصيل المنحة. تحقق من error_code وerror_message.
entitlement_grant.revoked
تم سحب الوصول. تحقق من revocation_reason.
Entitlement Grant Webhook Payloads
استعرض المخطط الكامل للحزمة، الأحداث النموذجية، ومرجع revocation_reason.
استخدم امتيازًا واحدًا لكل قناة تسليم. لا تشارك امتياز Discord واحد عبر منتجات ذات نوايا دور مختلفة؛ أنشئ واحدًا لكل دور لقيامك بإلغاء نظيف.
اختبر أولاً في وضع الاختبار. أنشئ الامتياز، قم بإرفاقه بمنتج اختبار، نفذ عملية الشراء، راقب انتقال المنحة عبر pending → delivered. تأكد من أن إلغاء الاشتراك التجريبي يلغي المنحة.
استمع إلى entitlement_grant.delivered، وليس payment.succeeded. يمكن أن ينجح الدفع قبل انتهاء التوفيق (خاصة لتدفقات OAuth). انتظر حتى حدث التسليم قبل فتح ميزات تبعية في أنظمتك الخاصة.
تعامل مع entitlement_grant.failed كقابل للتنفيذ. يعني منحة فاشلة أن العميل دفع ولم يحصل على الوصول. اعرض هذه الأمور لفريق الدعم الخاص بك أو قم بتشغيل إعادة المنح.
قم بتخطيط revocation_reason لتدفقات الاحتفاظ الخاصة بك. الإلغاء الذي يتم بالاستخدام subscription_on_hold يمكن استرداده (قد يقوم العميل بتحديث بطاقته). الإلغاء الذي يتم بالاستخدام manual مقصود. تعامل معها بشكل مختلف في اتصالات العملاء.