Skip to main content
مفاتيح الترخيص هي نوع entitlement من نوع License Key. أنشئ entitlement من نوع License Key مرة واحدة مع حد التفعيل وتاريخ الانتهاء ورسالة التفعيل التي تريدها، ثم أرفقه بأي منتج. بشكل افتراضي، ينشئ Dodo Payments مفتاحًا واحدًا ويرسله عبر البريد الإلكتروني لكل وحدة يتم شراؤها أو لكل مقعد في الاشتراك.

ما هي مفاتيح الترخيص؟

مفتاح الترخيص هو رمز مميز فريد يصرّح بالوصول إلى منتجك. استخدم مفاتيح الترخيص من أجل:
  • ترخيص البرامج: تطبيقات سطح المكتب والإضافات وCLIs.
  • عناصر التحكم لكل مقعد: تقييد عمليات التفعيل لكل مستخدم أو جهاز.
  • المنتجات الرقمية: تقييد الوصول إلى التنزيلات أو التحديثات أو الميزات المميزة.
يدير Dodo Payments مفاتيح الترخيص من خلال Entitlements. تدفع أحداث الدفع والاشتراك نفسها التي تحرّك entitlements الأخرى دورة حياة كل مفتاح: الإنشاء والانتهاء والإلغاء وإعادة المنح.

إنشاء استحقاق License Key

1

Open Entitlements

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

Choose License Key

حدّد License Keys، وأدخل Name، واضبط كيفية تصرف كل مفتاح يتم إصداره:
  • Fulfillment Mode: ينشئ Automatic (الإعداد الافتراضي) كل مفتاح ويرسله عبر البريد الإلكتروني. يتيح لك Manual توفير كل مفتاح بنفسك. راجع Manual Fulfillment.
  • Activations Limit: الحد الأقصى لعدد عمليات التفعيل النشطة لكل مفتاح، مثل 1 لمستخدم واحد أو 5 لترخيص فريق. حدّد Unlimited لعدم فرض حد.
  • License Length: المدة التي يظل فيها المفتاح صالحًا بعد إصداره، مثل 30 يومًا أو سنة واحدة، أو No expiration. بالنسبة إلى المنتجات القائمة على الاشتراك، اختر No expiration: لا تنتهي صلاحية المفاتيح الصادرة لاشتراك، وتتبع صلاحيتها حالة الاشتراك.
  • Activation Message: تعليمات اختيارية موجّهة إلى العميل، بحد أقصى 2,500 حرف، تُضمّن في البريد الإلكتروني الذي يسلّم المفتاح. مثال: Paste the key in Settings → License أو Run: mycli activate <key>.
نموذج استحقاق License Key جديد يتضمن الاسم ووضع التنفيذ ومدة الترخيص وحد التنشيطات ورسالة التنشيط
3

Save the Entitlement

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

إرفاق الاستحقاق بالمنتجات

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

Selecting the License Key entitlement in the product entitlements panel.


كيفية إصدار المفاتيح

يتبع إصدار المفاتيح دورة المنح القياسية. يؤثر كل حدث في مفاتيح الترخيص كما يلي:

سلوك الكمية

يعتمد عدد المفاتيح على مصدر المنحة. ويحصل كل مفتاح على منحة خاصة به.
  • المنتجات القائمة على الاشتراك: تصدر مفتاحًا واحدًا لكل مقعد (subscriptions.quantity).
  • المنتجات لمرة واحدة: تصدر مفتاحًا واحدًا لكل وحدة من عنصر السطر في سلة التسوق (product_cart.quantity).
  • المنح اليدوية عبر API: تصدر مفتاحًا واحدًا بالضبط.

Fulfillment Mode

يحتوي كل entitlement من نوع License Key على fulfillment_mode يتحكم في الجهة التي توفر المفتاح:
  • auto (الإعداد الافتراضي، Automatic في لوحة التحكم): ينشئ Dodo Payments المفتاح ويرسله عبر البريد الإلكتروني عند الدفع أو الاشتراك. هذا هو السلوك الموضح في الجدول أعلاه، وينطبق عند حذف fulfillment_mode.
  • manual (Manual في لوحة التحكم): ينشئ كل عنصر يتم شراؤه منحة Pending بلا مفتاح، وعليك توفير قيمة كل مفتاح. راجع Manual Fulfillment.

Manual Fulfillment

مع التوفير اليدوي، توفر كل مفتاح ترخيص بدلًا من أن ينشئه Dodo Payments. ينشئ الشراء منحة Pending بلا مفتاح، ويخطرك عبر webhook، وينتظر منك إرسال قيمة المفتاح. استخدمه عندما تأتي المفاتيح من نظامك الخاص أو من مورّد خارجي أو من مجموعة محدودة من الرموز المطبوعة مسبقًا.
لإنشاء التكامل خطوة بخطوة، بدءًا من إنشاء المنتج ووصولًا إلى تسليم المفتاح، راجع دليل تكامل Manual License Key Fulfillment.

متى تستخدمه؟

يناسب التوفير التلقائي معظم حالات ترخيص البرامج. اختر التوفير اليدوي عندما يتعذر على Dodo Payments إنشاء المفتاح بنفسه:
  • استخدام مفاتيحك الخاصة: ينشئ تطبيقك أو منتج سطح المكتب أو خادم الترخيص الخاص بك المفتاح.
  • المورّدون الخارجيون: تعيد بيع مفاتيح يصدرها مزود أصلي، مثل مفتاح لعبة أو بيانات اعتماد API أو ترخيص منصة شريكة.
  • المخزون المحدود: توزع رموزًا من مجموعة مخصصة مسبقًا وتعيّنها واحدًا تلو الآخر.
  • المراجعة البشرية: تريد التحقق من عملية شراء قبل منح الوصول.

تفعيل التوفير اليدوي

لتفعيل التوفير اليدوي عبر API، اضبط fulfillment_mode: "manual" في integration_config الخاص بـ entitlement من نوع License Key. في لوحة التحكم، اضبط Fulfillment Mode على Manual.
يتوافق fulfillment_mode مع الإصدارات السابقة. لا تحتوي entitlements التي أُنشئت قبل وجود هذا الإعداد على fulfillment_mode، وتتصرف مثل auto. يؤثر التبديل إلى manual في المنح التي أُنشئت بعد التغيير فقط. ولا تتغير المفاتيح التي تم تسليمها مسبقًا.

العثور على المنح التي تنتظر التوفير

عندما يشتري العميل منتجًا يحتوي على entitlement في الوضع اليدوي، ينشئ Dodo Payments المنحة بالحالة Pending من دون مفتاح، ويرسل إليك webhook من نوع entitlement_grant.created يتضمن integration_type: "license_key" وstatus: "Pending". استجب لذلك webhook، أو استعلم دوريًا عن endpoint List Customer Grants باستخدام عاملَي التصفية integration_type وstatus:

تسليم المفتاح

لتسليم مفتاح، أرسله إلى endpoint Fulfill License Key Grant. تنتقل المنحة إلى Delivered، ويرسل Dodo Payments المفتاح عبر البريد الإلكتروني إلى العميل. وهو البريد الإلكتروني نفسه الذي يتلقاه العميل في حالة التوفير التلقائي.
cURL
إن activations_limit وexpires_at اختياريان. عند حذفهما، يستخدم Dodo Payments إعدادات entitlement. يمكن توفير كل منحة مرة واحدة: تؤدي إعادة محاولة توفير منحة تم توفيرها بالفعل إلى إرجاع 409 بدلًا من إصدار مفتاح ثانٍ.
لا تحتاج إلى إرسال المفتاح عبر البريد الإلكتروني بنفسك. يسلّمه Dodo Payments عند توفير المنحة. يختلف استيراد المفاتيح باستخدام POST /license_keys: إذ لا يرسل إشعارًا إلى العميل.

تفعيل الترخيص والتحقق منه وإلغاء تفعيله

يدير برنامجك المفتاح أثناء التشغيل من خلال ثلاثة endpoints. يسجل التفعيل جهازًا أو عملية تثبيت للمفتاح، ويتحقق التحقق من إمكانية استخدام المفتاح، بينما يحرر إلغاء التفعيل عملية تفعيل.
Public Endpoints: إن endpoints الخاصة بتفعيل الترخيص وإلغاء تفعيله والتحقق منه عامة ولا تتطلب API key. استدعها مباشرةً من برامج سطح المكتب أو CLIs أو العملاء المستندين إلى المتصفح من دون كشف بيانات اعتماد API الخاصة بك. ولا تزال مُنشئات SDK تتطلب قيمة bearer token، لذلك تمرر أمثلة SDK قيمة نائبة.

تفعيل ترخيص

ينشئ التفعيل مثيل تفعيل للمفتاح ويعيده مع معرّف lki_. احفظ ذلك المعرّف، لأنك تحتاج إليه لإلغاء تفعيل المثيل. يعيد الطلب 403 إذا لم يكن المفتاح نشطًا، و404 إذا لم يكن المفتاح موجودًا، و422 إذا بلغ المفتاح حد التفعيل.

التحقق من ترخيص

يعيد التحقق valid: true عندما تكون حالة المفتاح active ولم تنتهِ صلاحية المفتاح. وللتحقق أيضًا من استمرار وجود مثيل تفعيل محدد، مرّر license_key_instance_id الخاص به.

إلغاء تفعيل مثيل تفعيل

يزيل إلغاء التفعيل مثيل تفعيل ويحرر عملية تفعيل واحدة على المفتاح. مرّر المفتاح ومعرّف المثيل الذي أعاده التفعيل. يعيد الطلب 403 إذا لم يكن المثيل تابعًا للمفتاح، و404 إذا لم يكن المفتاح موجودًا.

إدارة المفاتيح

لعرض المفاتيح الصادرة، افتح entitlement من نوع License Key ضمن Entitlements. تعرض قائمة المنح صفًا واحدًا لكل مفتاح عميل، مع العميل وتاريخ الوصول والحالة وإجراء Revoke. لعرض تاريخ انتهاء المفتاح وعدد عمليات التفعيل وحد التفعيل، افتحه ضمن Sales → License Keys. لسرد المنح برمجيًا، استدعِ List Grants. في كل منحة لمفتاح ترخيص، يحمل كائن license_key المفتاح والحالة وتاريخ الانتهاء وعمليات التفعيل المستخدمة وحد عمليات التفعيل. يكون الكائن null في المنحة ذات الوضع اليدوي التي لا تزال في الحالة Pending.

استيراد مفاتيح الترخيص الحالية عبر API

لترحيل مفاتيح الترخيص من نظام آخر، استوردها باستخدام API Create License Key. وسيواصل عملاؤك تفعيل سلاسل المفاتيح نفسها والتحقق منها وإلغاء تفعيلها، لذلك لا تحتاج إلى إعادة إصدار المفاتيح.
لا تؤدي مفاتيح الترخيص التي يتم إنشاؤها أو تحديثها عبر API إلى تشغيل إشعارات بريد إلكتروني للعملاء. لإخبار العملاء بمفتاح مستورد، أرسل لهم إشعارًا من تطبيقك الخاص.
يتطلب الطلب key وcustomer_id وproduct_id. احذف activations_limit لعمليات التفعيل غير المحدودة، واحذف expires_at لمفتاح لا تنتهي صلاحيته أبدًا. يؤدي استيراد سلسلة مفتاح موجودة مسبقًا إلى إرجاع 409.

كيف تختلف المفاتيح حسب المصدر؟

يسجل الحقل source كيفية إنشاء كل مفتاح ترخيص: استخدم source للتمييز بين المفاتيح المُرحّلة والمفاتيح التي تم توفيرها يدويًا والمفاتيح التي أنشأها Dodo Payments، مثلًا عند مطابقة المفاتيح أو تدقيقها. يوجد الحقل في سجلات مفاتيح الترخيص، مثل استجابة POST /license_keys. ولا يتضمن كائن license_key في المنح الناتجة عن List Grants هذا الحقل. إن endpoint القديم GET /license_keys، الذي يعيد source ويقبل عامل تصفية source، مهمل.
هل تهاجر من Polar.sh أو Lemon Squeezy؟ يستورد CLI dodo-migrate المنتجات والعملاء والخصومات ومفاتيح الترخيص دفعة واحدة باستخدام أمر واحد، ويربط المعرّفات الخارجية بمعرّفات Dodo Payments.

مفاتيح الترخيص في Return URL

عندما يشتري العميل منتجًا يحتوي على entitlement من نوع License Key، يُلحق Dodo Payments المفتاح الذي تم إنشاؤه بـ return_url باعتباره query parameter باسم license_key. يمكن لصفحة النجاح عرض المفتاح من دون استدعاء API إضافي:
إذا أنشأ الشراء أكثر من مفتاح واحد (أي إن الكمية أكبر من 1)، فسيحتوي العامل على قائمة مفصولة بفواصل. وتكون الفاصلة مشفّرة في URL كالتالي %2C، لذا اقرأ العامل باستخدام محلل URL، الذي يفك تشفيره، قبل تقسيمه:
بالنسبة إلى الاشتراكات، يحتوي URL على subscription_id وحالة الاشتراك بدلًا من payment_id:
اقرأ العامل license_key في صفحة العودة لعرض المفتاح مباشرةً بعد الشراء.

إدارة API

التفعيل وإلغاء التفعيل والتحقق عمليات عامة ولا تتطلب API key.

Activate License

أنشئ مثيل تفعيل لمفتاح ترخيص.

Deactivate License

أزل مثيل تفعيل لتحرير السعة.

Validate License

تحقق من أن المفتاح نشط ولم تنتهِ صلاحيته قبل منح الوصول.
أنشئ سجلات مفاتيح الترخيص الفردية واسردها واسترجعها وحدّثها. استخدم هذه endpoints لاستيراد المفاتيح الحالية أو قراءة تفاصيل الاستخدام.
إن GET /license_keys وGET /license_keys/{id} وPATCH /license_keys/{id} مهملة. للقراءة، استخدم endpoints منح entitlement (List Grants، List Customer Grants). يظل POST /license_keys مدعومًا لاستيراد المفاتيح الحالية.

Create License Key

أنشئ مفتاح ترخيص أو استورد مفتاحًا موجودًا.

List License Keys

استعرض جميع المفاتيح مع تفاصيل الحالة والاستخدام.

Get License Key

استرجع مفتاحًا محددًا والبيانات الوصفية الخاصة به.

Update License Key

غيّر تاريخ الانتهاء أو حد التفعيل، أو فعّل مفتاحًا أو عطّله.
أدر entitlement من نوع License Key نفسه: حد التفعيل وطول الترخيص ورسالة التفعيل.

Create Entitlement

أنشئ entitlement من نوع License Key.

Update Entitlement

حدّث إعدادات entitlement.

List Grants

اسرد المفاتيح الصادرة لـ entitlement.

Revoke Grant

ألغِ مفتاح عميل يدويًا.

Webhooks

يرسل تسليم مفتاح الترخيص وإلغاؤه أحداث webhook الأربعة entitlement_grant.*. بالنسبة إلى منح مفاتيح الترخيص، تتضمن الحمولة كائن license_key الذي يحتوي على المفتاح والحالة وتاريخ الانتهاء وعمليات التفعيل المستخدمة وحد عمليات التفعيل. لا يزال الحدث القديم license_key.created يُطلَق عند إنشاء سجل مفتاح ترخيص. راجع صفحة حمولة License Key webhook.
بالنسبة إلى عمليات التكامل الجديدة، عالج أحداث منح entitlement بدلًا من license_key.created. يصل المفتاح الذي تم توفيره تلقائيًا باعتباره entitlement_grant.created مع status: "Delivered"، ولا يتبعه حدث entitlement_grant.delivered منفصل. ويُطلِق المفتاح الذي تم توفيره يدويًا entitlement_grant.delivered عند تقديمه. وتغطي الأحداث نفسها كل entitlement في المنتج، وليس مفتاح الترخيص فقط.

مفاتيح الترخيص القديمة

تم ترحيل المنتجات التي أُنشئت باستخدام العلامة القديمة license_key_enabled تلقائيًا إلى entitlement من نوع License Key. عملية الترحيل شفافة: تواصل مفاتيح العملاء الحاليين عملها، وتواصل endpoints العامة /licenses/activate و/licenses/validate و/licenses/deactivate عملها، كما تقرأ endpoints الخاصة بـ API /license_keys/* مخزن المفاتيح نفسه وتكتب فيه.يبقى قسم لوحة التحكم المستقل Sales → License Keys متاحًا كقائمة مسطحة بكل مفتاح تم إصداره، لأغراض التدقيق والبحث. لتغيير حدود التفعيل أو طول الترخيص أو رسالة التفعيل، عدّل entitlement من نوع License Key الذي تمت مهاجرته ضمن Entitlements.

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

  • اختر حدود تفعيل واضحة: اختر إعدادات افتراضية مثل 1 لتطبيقات المستخدم الواحد أو 3–5 لتراخيص الفرق، ووثّقها لعملائك.
  • اكتب رسائل تفعيل دقيقة: ينسخها العملاء من البريد الإلكتروني لمفتاح الترخيص، لذا تمنع المسارات والأوامر الدقيقة تذاكر الدعم.
  • تحقق من المفاتيح مقابل API: بالنسبة إلى المنتجات المتصلة بالشبكة، استدعِ /licenses/validate بدلًا من الاعتماد على تفعيل مخزّن محليًا.
  • استخدم webhooks للإلغاء: عالج entitlement_grant.revoked لتعطيل الميزات داخل التطبيق عندما يلغي العميل أو يسترد أمواله.
  • اختبر الاشتراكات وعمليات الشراء لمرة واحدة: يختلف سلوك مفتاح الترخيص بينهما؛ فمثلًا لا تنتهي صلاحية مفاتيح الاشتراك، لذا اختبر كليهما قبل الإطلاق.
آخر تعديل في ٢٦ سبتمبر ٢٠٢٦