Pending وينتظر منك تزويده بقيمة المفتاح من نظامك الخاص أو من مورّد تابع لجهة خارجية أو من مجموعة محدودة من الرموز.
بنهاية هذا الدليل سيكون لديك:
- منتج يتضمن استحقاق License Key مضبوطًا على تنفيذ
manual. - مستمع webhook يكتشف متى ينتظر أحد العملاء مفتاحًا.
- استدعاء تنفيذ يسلّم المفتاح ويُخطر العميل تلقائيًا.
License Keys overview
دورة حياة مفتاح الترخيص الكاملة وإعداد
fulfillment_mode.Fulfill License Key Grant API
مرجع API لنقطة النهاية التي تستدعيها لتسليم مفتاح.
آلية العمل
يغيّر التنفيذ اليدوي خطوة الإصدار فقط. أما التفعيل والتحقق وإلغاء التفعيل وانتهاء الصلاحية والإبطال، فتعمل تمامًا مثل المفتاح المُنشأ تلقائيًا بعد تسليمه.المتطلبات الأساسية
لمتابعة هذا الدليل ستحتاج إلى:- حساب تاجر Dodo Payments.
- مفتاح API الخاص بك (
DODO_PAYMENTS_API_KEY) ومفتاح سر webhook من لوحة المعلومات. راجع دليل إنشاء مفتاح 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 Key باعتباره التكامل، وأدخِل له Name. يعرض النموذج الحقول التالية:
- Fulfillment Mode — يكون
Automaticافتراضيًا. هذا هو الإعداد الذي يفعّل التنفيذ اليدوي؛ وستغيّره في الخطوة التالية. - License Length — المدة التي يظل فيها كل مفتاح مُصدر صالحًا، أو No expiration.
- Activations Limit — الحد الأقصى لعمليات التفعيل لكل مفتاح، أو Unlimited.
- Activation Message — رسالة اختيارية موجهة إلى العميل تظهر عند تفعيل المفتاح.

3
Set Fulfillment Mode to Manual
افتح القائمة المنسدلة Fulfillment Mode وغيّرها من Automatic إلى Manual. هذا هو الإعداد الذي يعتمد عليه هذا الدليل بالكامل — فبدونه يتم إنشاء المفاتيح وإرسالها بالبريد الإلكتروني تلقائيًا، ولا يتم إنشاء grant معلّق. عند تحديد Manual، ينشئ كل شراء grant من النوع
Pending لتتولى تسليمه. انقر على Create Entitlement للحفظ.يكون
fulfillment_mode مضبوطًا على auto افتراضيًا. يؤدي حذف هذا الإعداد، أو ترك استحقاق موجود دون تغيير، إلى استمرار السلوك التلقائي. وحدها الاستحقاقات المضبوطة صراحةً على manual تنشئ منحًا معلّقة.الخطوة 2 — إرفاق الاستحقاق بمنتج
افتح المنتج الذي تريد بيعه، ووسّع Advanced Settings → Entitlements & Credits، ثم اختر استحقاق License Key الذي ضبطته على Manual في الخطوة 1. يمكن لمنتج واحد تسليم مفتاح الترخيص هذا إلى جانب استحقاقات أخرى ضمن عملية الشراء نفسها.
Selecting the License Key entitlement in the product entitlements panel.
وضع التسليم خاصية من خصائص entitlement، وليس المنتج. وبما أنك عيّنته على Manual في الخطوة 1، فإن كل منتج مرتبط بهذا الاستحقاق ينشئ grants لمفاتيح الترخيص من النوع
Pending عند الشراء — ولا حاجة إلى إعداد أي شيء إضافي هنا.الخطوة 3 — اكتشاف المنح المعلّقة
عندما يشتري العميل المنتج، ينشئ Dodo Payments grant بالحالةPending من دون إرفاق مفتاح، ويرسل webhook من النوع entitlement_grant.created. هذه هي الإشارة إلى أن عميلًا ينتظر مفتاحًا.
الاستماع إلى webhook
أنشئ نقطة نهاية webhook (Developer → Webhooks في لوحة المعلومات) واتخذ إجراءً بشأن منح مفاتيح الترخيص المعلّقة. يتبع التنفيذ مواصفة Standard Webhooks.integration_type: "license_key"، لذا يمكنك التعرّف على منحة License Key من دون عملية بحث إضافية. راجع مرجع webhook الخاص بمنحة الاستحقاق للاطلاع على الحمولة الكاملة.
أو الاستطلاع باستخدام List Grants API
إذا كنت تفضّل عدم الاعتماد على webhooks، فاعرض منح استحقاق License Key وفلترها حسبstatus. كل منحة ضمن استحقاق License Key هي بالفعل منحة لمفتاح ترخيص، لذلك لا حاجة إلى فلتر integration_type:
الخطوة 4 — تسليم المفتاح
احصل على قيمة المفتاح من نظامك الخاص، ثم أرسلها باستخدام نقطة النهاية Fulfill License Key Grant. يتطلب ذلك مفتاح API السري الخاص بك (بصلاحية Editor)؛ وليس هذا المفتاح إحدى نقاط نهاية الترخيص العامة.حقول الطلب
string
مطلوب
سلسلة مفتاح الترخيص التي سيتم تسليمها إلى العميل. تُزال المسافات البيضاء؛ وتُرفض القيمة الفارغة أو التي تتكون من مسافات بيضاء فقط.
integer
حد التفعيل لكل مفتاح. يعود إلى إعدادات الاستحقاق عند حذفه من الطلب.
string
انتهاء صلاحية كل مفتاح (ISO 8601). يعود إلى مدة إعدادات الاستحقاق عند حذفه من الطلب. وبالنسبة إلى المنح المُصدرة عبر الاشتراك، تظل الصلاحية مرتبطة بالاشتراك في جميع الحالات.
Delivered، ويتم إرسال المفتاح إلى العميل تلقائيًا (وهو نفس البريد الإلكتروني الذي كان سيتلقاه في حالة التسليم التلقائي)، ويتم إطلاق أحداث 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"، أو من ظهور grant في استجابة List Grants باستخدام عوامل التصفية نفسها. - استدعِ نقطة نهاية fulfill باستخدام مفتاح اختباري.
- تأكد من أن الاستجابة تعرض
status: "Delivered"معlicense_keyمملوءًا، وأن العميل استلم رسالة البريد الإلكتروني التي تتضمن المفتاح، وأنentitlement_grant.deliveredقد تم إطلاقه.
بعد التسليم، يمكن للعميل تفعيل المفتاح والتحقق منه باستخدام نقاط نهاية الترخيص العامة، تمامًا مثل المفتاح المُنشأ تلقائيًا.
مرجع API ذي صلة
Create Entitlement
أنشئ entitlement من نوع License Key باستخدام
fulfillment_mode: manual.List Grants
استخدم التصفية حسب
status وcustomer_id للعثور على grants المعلّقة.Fulfill License Key Grant
سلّم قيمة المفتاح وانقل grant إلى الحالة delivered.
Entitlement Grant Webhooks
أحداث
entitlement_grant.* التي تشير إلى grants المعلّقة والمسلّمة.