Skip to main content
مع تسليم مفاتيح الترخيص يدويًا، تنشئ كل عملية شراء منحة 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.
1

Open Entitlements

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

Choose License Key

حدد License Keys وأدخل Name. يحتوي النموذج على الحقول التالية:
  • Fulfillment Mode: Automatic افتراضيًا. هذا هو الإعداد الذي يفعّل التسليم اليدوي، ويمكنك تغييره في الخطوة التالية.
  • License Length: المدة التي يظل خلالها كل مفتاح مُصدر صالحًا، أو No expiration.
  • Activations Limit: الحد الأقصى لعدد عمليات التفعيل لكل مفتاح، أو Unlimited.
  • Activation Message: رسالة اختيارية موجّهة إلى العميل تظهر عند تفعيل العميل للمفتاح، ويتم تضمينها في رسالة البريد الإلكتروني الخاصة بمفتاح الترخيص.
New License Key entitlement form with name, fulfillment mode, license length, activations limit, and 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. يمكن لمنتج واحد تسليم مفتاح الترخيص هذا مع استحقاقات أخرى ضمن عملية الشراء نفسها. إذا لم يكن لديك منتج بعد، فأنشئ أولًا منتجًا لمرة واحدة أو منتج اشتراك. لبيعه عبر صفحة الدفع، راجع دليل التكامل.
Product entitlements panel with License Key selected

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. تتضمن الرسالة مفتاح الترخيص، والمنتج، وحد التفعيل، وانتهاء الصلاحية، وتعليمات التفعيل:
Customer license key email showing the key, product, activation limit, expiry, and activation instructions

The license key email the customer receives once you fulfill the grant.

لا تحتاج إلى إرسال المفتاح عبر البريد الإلكتروني بنفسك. يحدث التسليم تلقائيًا عند إكمال المنحة.

الخطوة 5 — معالجة الأخطاء وإعادة المحاولات

تتحقق نقطة النهاية من المنحة قبل تسليم أي شيء. تعامل مع الاستجابات التالية:
يمكن إعادة محاولة التسليم بأمان عند حدوث أخطاء مؤقتة مثل انتهاء المهلة واستجابات 5xx. لا يمكن إكمال كل منحة إلا مرة واحدة، لذا فإن إعادة المحاولة بعد استدعاء ناجح لم يتم تأكيده ستعيد 409 بدلًا من إصدار مفتاح ثانٍ أو إرسال رسالة بريد إلكتروني مكررة. استخدم id الخاص بالمنحة بوصفه مفتاح idempotency.

التحقق من التدفق

لاختبار التدفق من البداية إلى النهاية:
  1. اشترِ المنتج في وضع الاختبار. راجع أدلة الدفع.
  2. تأكد من أن webhook الخاص بك تلقى entitlement_grant.created مع status: "Pending" وintegration_type: "license_key"، أو من ظهور المنحة في استجابة List Grants التي تمت تصفيتها حسب status=Pending.
  3. استدعِ نقطة نهاية التسليم باستخدام مفتاح اختبار.
  4. تأكد من أن الاستجابة تعرض 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.* التي تشير إلى المنح المعلّقة والمسلّمة.
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦