Pending تنتظر منك توفير قيمة المفتاح، بدلًا من أن ينشئ Dodo Payments مفتاحًا عند الدفع. يمكن أن يأتي المفتاح من نظامك الخاص، أو من مورّد خارجي، أو من مجموعة محدودة من الرموز.
عند إكمال هذا الدليل، سيكون لديك:
- منتج يتضمن استحقاق License Key مضبوطًا على تنفيذ
manual. - مستمع webhook يكتشف متى ينتظر أحد العملاء مفتاحًا.
- استدعاء تنفيذ يسلّم المفتاح ويُخطر العميل تلقائيًا.
License Keys Overview
دورة حياة مفتاح الترخيص الكاملة وإعداد
fulfillment_mode.Fulfill License Key Grant API
مرجع API لنقطة النهاية التي تستدعيها لتسليم مفتاح.
آلية العمل
يوضح التسلسل أدناه عملية شراء واحدة، بدءًا من الدفع وحتى تسليم المفتاح: يغيّر التسليم اليدوي خطوة الإصدار فقط. بعد التسليم، يتصرف المفتاح مثل المفتاح الذي يتم إنشاؤه تلقائيًا من حيث التفعيل والتحقق وإلغاء التفعيل وانتهاء الصلاحية والإبطال. تنشئ عملية شراء عدة وحدات منحةPending واحدة لكل وحدة، وتحتاج كل منحة إلى مفتاح خاص بها.
المتطلبات الأساسية
لاتباع هذا الدليل، تحتاج إلى:- حساب تاجر على Dodo Payments.
- مفتاح API، يتم إنشاؤه ضمن Developer → API Keys وتخزينه في
DODO_PAYMENTS_API_KEY، وسر توقيع webhook من Developer → Webhooks، يتم تخزينه فيDODO_PAYMENTS_WEBHOOK_KEY. راجع دليل إنشاء مفتاح API. - نقطة نهاية في الواجهة الخلفية يمكنها استقبال webhooks.
استخدم
https://test.dodopayments.com وبيانات اعتماد وضع الاختبار أثناء الإنشاء. عند الانتقال إلى الإنتاج، بدّل إلى https://live.dodopayments.com ومفاتيح الوضع المباشر.الخطوة 1 — إنشاء استحقاق License Key في الوضع اليدوي
الاستحقاق هو تعريف قابل لإعادة الاستخدام لما تسلّمه. أنشئ استحقاق License Key واضبطfulfillment_mode على manual.
- Dashboard
- API
1
Open Entitlements
انتقل إلى Entitlements في لوحة التحكم وانقر على + لإنشاء استحقاق.
2
Choose License Key
حدد License Keys وأدخل Name. يحتوي النموذج على الحقول التالية:
- Fulfillment Mode: Automatic افتراضيًا. هذا هو الإعداد الذي يفعّل التسليم اليدوي، ويمكنك تغييره في الخطوة التالية.
- License Length: المدة التي يظل خلالها كل مفتاح مُصدر صالحًا، أو No expiration.
- Activations Limit: الحد الأقصى لعدد عمليات التفعيل لكل مفتاح، أو Unlimited.
- Activation Message: رسالة اختيارية موجّهة إلى العميل تظهر عند تفعيل العميل للمفتاح، ويتم تضمينها في رسالة البريد الإلكتروني الخاصة بمفتاح الترخيص.

3
Set Fulfillment Mode to Manual
افتح القائمة المنسدلة Fulfillment Mode وغيّرها من Automatic إلى Manual. يعتمد باقي هذا الدليل على هذا الإعداد: بدونه، ينشئ Dodo Payments المفاتيح ويرسلها بالبريد الإلكتروني تلقائيًا، ولا ينشئ أي منحة معلّقة. عند تحديد Manual، تنشئ كل عملية شراء منحة
Pending لتسليمها. انقر على Create Entitlement للحفظ.تكون قيمة
fulfillment_mode الافتراضية هي auto. إذا حذفتها أو تركت استحقاقًا موجودًا دون تغيير، فسيحتفظ الاستحقاق بالتسليم التلقائي. تنشئ الاستحقاقات المضبوطة صراحةً على manual منحًا معلّقة فقط.الخطوة 2 — إرفاق الاستحقاق بمنتج
افتح المنتج الذي تريد بيعه، وانتقل إلى قسم Entitlements، وحدد استحقاق License Key الذي ضبطته على Manual في الخطوة 1. يمكن لمنتج واحد تسليم مفتاح الترخيص هذا مع استحقاقات أخرى ضمن عملية الشراء نفسها. إذا لم يكن لديك منتج بعد، فأنشئ أولًا منتجًا لمرة واحدة أو منتج اشتراك. لبيعه عبر صفحة الدفع، راجع دليل التكامل.
Selecting the License Key entitlement in the product entitlements panel.
وضع التسليم هو خاصية الاستحقاق، وليس المنتج. وبما أنك ضبطته على Manual في الخطوة 1، فإن كل منتج مرفق به هذا الاستحقاق ينشئ منحًا لمفاتيح الترخيص
Pending عند الشراء. لا تحتاج إلى ضبط أي شيء آخر على المنتج.الخطوة 3 — اكتشاف المنح المعلّقة
عندما يشتري العميل المنتج، ينشئ Dodo Payments منحة بحالةPending من دون إرفاق مفتاح، ويرسل webhook من نوع entitlement_grant.created. هذا الحدث هو إشارتك إلى أن عميلًا ينتظر مفتاحًا.
الاستماع إلى webhook
أضف نقطة نهاية webhook ضمن Developer → Webhooks في لوحة التحكم، ثم تعامل مع منح مفاتيح الترخيص المعلّقة. تتبع webhooks مواصفة Standard Webhooks، لذا يمكنك التحقق منها باستخدام مكتبةstandardwebhooks:
integration_type: "license_key"، لذا يمكنك التعرّف على منحة مفتاح الترخيص دون إجراء بحث إضافي. قد تتكرر عمليات تسليم webhook، لذا تخطَّ الأحداث التي سبق أن عالجت عنوانها webhook-id. راجع مرجع webhook الخاص بمنحة الاستحقاق للاطلاع على الحمولة الكاملة.
أو الاستعلام عن List Grants API
إذا كنت تفضّل عدم الاعتماد على webhooks، فأدرج المنح الخاصة باستحقاق License Key ثم صفِّها حسبstatus. كل منحة ضمن استحقاق License Key هي منحة مفتاح ترخيص، لذلك لا تحتاج إلى عامل تصفية integration_type:
الخطوة 4 — تسليم المفتاح
احصل على قيمة المفتاح من نظامك الخاص، ثم أرسلها إلى نقطة النهاية Fulfill License Key Grant. يتطلب الاستدعاء مفتاح API السري الخاص بك مع صلاحية Editor. هذه النقطة ليست إحدى نقاط نهاية الترخيص العامة. كما توفر SDKs هذه الوظيفة، مثلًا باسمclient.entitlements.grants.fulfillLicenseKey() في TypeScript وباسم client.entitlements.grants.fulfill_license_key() في Python.
حقول الطلب
string
مطلوب
سلسلة مفتاح الترخيص التي سيتم تسليمها إلى العميل، وبحد أقصى 255 حرفًا. تتم إزالة المسافات البيضاء المحيطة، ويتم رفض القيمة الفارغة أو التي تتكون من مسافات بيضاء فقط.
integer
حد التفعيل لكل مفتاح، على ألا يقل عن 1. عند حذفه، يُطبَّق Activations Limit الخاص بالاستحقاق.
string
انتهاء صلاحية المفتاح (ISO 8601). عند حذفه، تنتهي صلاحية مفتاح المنحة لمرة واحدة وفقًا لـ License Length الخاص بالاستحقاق، بينما لا تنتهي صلاحية مفتاح منحة الاشتراك، إذ تتبع صلاحيته الاشتراك.
Delivered، ويرسل Dodo Payments المفتاح إلى العميل عبر البريد الإلكتروني (وهي الرسالة نفسها التي يتلقاها العميل عند التسليم التلقائي)، ويتم تشغيل أحداث webhook license_key.created وentitlement_grant.delivered.
تتضمن الرسالة مفتاح الترخيص، والمنتج، وحد التفعيل، وانتهاء الصلاحية، وتعليمات التفعيل:

The license key email the customer receives once you fulfill the grant.
لا تحتاج إلى إرسال المفتاح عبر البريد الإلكتروني بنفسك. يحدث التسليم تلقائيًا عند إكمال المنحة.
الخطوة 5 — معالجة الأخطاء وإعادة المحاولات
تتحقق نقطة النهاية من المنحة قبل تسليم أي شيء. تعامل مع الاستجابات التالية:التحقق من التدفق
لاختبار التدفق من البداية إلى النهاية:- اشترِ المنتج في وضع الاختبار. راجع أدلة الدفع.
- تأكد من أن webhook الخاص بك تلقى
entitlement_grant.createdمعstatus: "Pending"وintegration_type: "license_key"، أو من ظهور المنحة في استجابة List Grants التي تمت تصفيتها حسبstatus=Pending. - استدعِ نقطة نهاية التسليم باستخدام مفتاح اختبار.
- تأكد من أن الاستجابة تعرض
status: "Delivered"معlicense_keyمملوءة، وأن العميل تلقى رسالة المفتاح، وأنentitlement_grant.deliveredقد تم تشغيله.
بعد تسليم المفتاح، يمكن للعميل تفعيله والتحقق منه باستخدام نقاط نهاية الترخيص العامة، مثل المفتاح الذي يتم إنشاؤه تلقائيًا.
مرجع API ذي الصلة
Create Entitlement
أنشئ استحقاق License Key باستخدام
fulfillment_mode: manual.List Grants
صفِّ النتائج حسب
status وcustomer_id للعثور على المنح المعلّقة.Fulfill License Key Grant
سلّم قيمة المفتاح وانقل المنحة إلى
Delivered.Entitlement Grant Webhooks
أحداث
entitlement_grant.* التي تشير إلى المنح المعلّقة والمسلّمة.