Documentation Index
Fetch the complete documentation index at: https://docs.dodopayments.com/llms.txt
Use this file to discover all available pages before exploring further.
الميزات الجديدة
1. الحقوق
تأتي Dodo Payments الآن مع طبقة موحدة من الحقوق - طبقة واحدة تدعم التسليم التلقائي لكل تكامل. يمكن لمنتج واحد تقديم حقوق متعددة مع كل عملية شراء ناجحة أو اشتراك نشط.
خمسة تكاملات جديدة للمنصات
حتى الآن، كانت Dodo Payments تقدم مفاتيح الترخيص و الملفات الرقمية تلقائيًا عند الشراء. تم توسيع نطاق الحقوق ليشمل خمس منصات إضافية - بحيث يمكن للعملاء الذين يدفعون الحصول فورًا على الوصول إلى مجتمعك أو رمزك أو محتواك بمجرد نجاح الدفع، بدون إتمام يدوي من جانبك:
| التكامل | ما يقدمه | سلوك الإلغاء |
|---|
| Discord | يخصص دورًا تم اختياره في خادم Discord الخاص بك بعد أن يكمل العميل OAuth | يتم إزالة الدور عند الإلغاء/الاسترداد |
| GitHub | يضيف العميل كمتعاون إلى مستودع خاص بالمستوى الذي تختاره | تتم إزالة المتعاون عند الإلغاء/الاسترداد |
| Telegram | يصدر رابط دعوة للاشتراك لمرة واحدة لدردشة أو قناة خاصة عبر بوت Telegram الخاص بك | يتم طرد العميل من الدردشة عند الإلغاء/الاسترداد |
| Framer | يفتح رابط قالب Framer محمي برمز وصول | يتم إلغاء تفعيل رمز الوصول عند الإلغاء/الاسترداد |
| Notion | ينسخ صفحة قالب Notion إلى مساحة عمل العميل بعد أن يمنح الإذن عبر OAuth | يتم أرشفة الصفحة المسلمة عند الإلغاء/الاسترداد |
تنضم هذه التكاملات إلى تكاملات مفاتيح الترخيص (مفاتيح فريدة مع حدود التنشيط ومدة الصلاحية) و الملفات الرقمية (روابط تنزيل موقعة للكتب الإلكترونية والقوالب والوسائط) الموجودة، والمدارة جميعاً الآن من خلال نفس دورة حياة المنح.
ما تحصل عليه افتراضياً
| قدرة | الوصف |
|---|
| قوالب قابلة لإعادة الاستخدام | حدد حقًا مرة واحدة (حدود التنشيط، حزم الملفات، دور Discord، إذن المستودع، إلخ) واربطه بأي منتج |
| منح تلقائية | يتم إصدارها على payment.succeeded و subscription.active، متكرر عبر التجديدات وإعادة التنشيط |
| إلغاء علم بالدورة | يتم إلغاؤها على subscription.cancelled، subscription.on_hold، subscription.expired، refund.succeeded، subscription.plan_changed، أو الإلغاء اليدوي عبر API/لوحة التحكم — مع تعبئة revocation_reason |
| تدفقات OAuth + مباشرة للمنصة | OAuth لموافقة مشتركي Discord و GitHub و Notion؛ مكالمات مباشرة للمنصة لـ Telegram و Framer و الملفات الرقمية |
| اكتشاف الانحراف | يكشف عند خروج الدور الخاص بـ Discord أو متعاون GitHub أو صفحة Notion عن المزامنة في مستوى المنصة ويقوم بالإلغاء باستخدام revocation_reason: platform_external |
| تشفير في حالة راحة | يتم تخزين جميع رموز المنصات (OAuth، بوت، تثبيتات التطبيقات) باستخدام AES-256-GCM |
السوالب
تشتعل أربعة أحداث دورة حياة جديدة لكل منحة:
| الحدث | يشتعل عندما |
|---|
entitlement_grant.created | يتم إنشاء منح جديد للعميل |
entitlement_grant.delivered | تمت تزويد العميل بالوصول |
entitlement_grant.failed | لم يتمكن التسليم من الإكمال؛ افحص error_code و error_message |
entitlement_grant.revoked | تم سحب الوصول؛ افحص revocation_reason |
للتكاملات الجديدة، استمع إلى entitlement_grant.delivered بدلاً من payment.succeeded. لا يعني نجاح الدفع أن التسليم قد اكتمل، خاصةً للتكاملات القائمة على OAuth.
تعرف على المزيد: الحقوق | سوالب منح الحقوق
2. أسباب إلغاء الاشتراك في بوابة العملاء
عندما يقوم العملاء بإلغاء اشتراك من بوابة العملاء، يُطلب منهم الآن مشاركة سبب إلغائهم قبل التأكيد. يتم تخزين السبب الملتقط على الاشتراك كـ cancellation_feedback، يتم عرضه في واجهة برمجة التطبيقات وحمولات السوالب، ومتاح في لوحة التحكم بحيث يمكنك ملاحظة أنماط الاضطراب بسرعة.
خيارات السبب
| القيمة | العلامة الموجهة للعميل |
|---|
too_expensive | مكلف جداً |
missing_features | الميزات المفقودة |
switched_service | الانتقال إلى خدمة أخرى |
unused | عدم استخدامه كثيراً |
customer_service | خدمة عملاء سيئة |
low_quality | جودة منخفضة |
too_complex | معقد جداً |
other | أخرى |
أين يظهر
- كائن الاشتراك: حقل جديد
cancellation_feedback (واحد من القيم أعلاه) و cancellation_comment (نص حر اختياري)، يتم تعبئته عندما يلغي العميل
subscription.cancelled سوالب: كلا الحقلين مضمنين في الحمولة
- API: مرر
cancellation_feedback و cancellation_comment إلى PATCH /subscriptions/{id} عند جدولة أو تنفيذ إلغاء برمجي
// Reading the captured feedback
const subscription = await client.subscriptions.retrieve('sub_123');
console.log(subscription.cancellation_feedback); // e.g., "too_expensive"
console.log(subscription.cancellation_comment); // e.g., "Switching to a competitor"
اجمع cancellation_feedback مع إدارة الاشتراك لتخصيص رسائل استعادة عملائك — على سبيل المثال، أرسل رمز خصم إلى too_expensive الملغين واستطلاع “ما الذي تفتقده؟” إلى missing_features الملغين.
تعرف على المزيد: بوابة العملاء | سوالب الاشتراك
3. حد أدنى قابل للتكوين للتفويض INR للتفويضات الإلكترونية
يمكنك الآن إعداد حد التفويض للتفويضات الإلكترونية INR على الاشتراكات الدورية للبطاقات الهندية. سابقًا، كان كل اشتراك للبطاقات الهندية تحت ₹15,000 يستخدم تفويض الطلب المحدد بـ ₹15,000. الآن يمكنك تجاوز هذا الحد على مستوى التاجر — ولكل جلسة دفع أو اشتراك إذا لزم الأمر.
مبلغ التفويض المسجل لدى بنك العميل هو max(mandate_min_amount_inr_paise, billing_amount)، لذلك يعمل هذا المبلغ كـ سقف الموافقة كلما كانت الفاتورة أقل من الحد الأدنى.
// Per-subscription override
const subscription = await client.subscriptions.create({
product_id: 'prod_inr_monthly',
customer: { email: 'customer@example.in' },
billing: { country: 'IN' /* ... */ },
mandate_min_amount_inr_paise: 2_000_000 // ₹20,000 ceiling for this subscription
});
// Or via a checkout session
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_inr_monthly', quantity: 1 }],
mandate_min_amount_inr_paise: 2_000_000,
return_url: 'https://yoursite.com/return'
});
أولوية القرار
- تجاوز حسب الطلب (
mandate_min_amount_inr_paise على جلسة الدفع، الدفع، أو الاشتراك)
- إعداد التاجر على مستوى العمل
- الافتراضية النظامية بقيمة ₹15,000 (1,500,000 بايزة)
| الحقل | النوع | النطاق | يطبق على |
|---|
mandate_min_amount_inr_paise | integer (INR بايزة) | >= 1 | اشتراكات البطاقات الهندية INR على موصلات غير Airwallex |
هذا الإعداد يؤثر فقط على التفويضات الإلكترونية المسجلة لبطاقات الصادرة عن الهند (Visa، Mastercard، RuPay) على اشتراكات INR. اتبع اشتراكات UPI تدفق AutoPay الخاص بها وغير معنونة.
تعرف على المزيد: طرق الدفع في الهند | الاشتراكات مع تفويضات RBI
4. إعداد شامل لرسوم العملة التكيفية
العملة التكيفية هي الخاصية التي تتيح لك شحن العملاء بعملتهم المحلية. افتراضيًا، يتحمل العميل رسوم العملة التكيفية 2–4% ويتم إضافتها فوق السعر المعروض. مع الإعداد الجديد الشامل للرسوم، يمكنك عكس هذا: الحفاظ على السعر المعروض دون تغيير للعميل وامتصاص الرسوم بنفسك.
أين يمكن تكوينها
اذهب إلى الإعدادات → العمل، تأكد من تمكين التسعير التكيفي، وقم بالتبديل إلى شامل الرسوم في قسم العملة التكيفية.
تجاوز حسب الطلب
يمكنك أيضًا تجاوز الافتراض التاجر لعمليات الدفع الفردية، المدفوعات، والاشتراكات حسب الطلب باستخدام adaptive_currency_fees_inclusive الثابتة:
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
adaptive_currency_fees_inclusive: true, // override business default
return_url: 'https://yoursite.com/return'
});
| الوضع | يرى العميل | يستقر التاجر |
|---|
| حصري (افتراضي) | السعر المحلي + 2–4% فوق ذلك | السعر الأساسي الكامل |
| شامل | السعر المحلي (دون تغيير) | السعر الأساسي ناقص الرسوم 2–4% |
التعاملات INR → INR دائمًا ما تعتبر شاملة بغض النظر عن إعداد العمل أو التجاوز حسب الطلب.
تعرف على المزيد: العملة التكيفية
5. تطبيق ديسكتوب Dodo Payments
التطبيق الرسمي Dodo Payments Desktop متاح الآن بشكل عام لنظام التشغيل macOS, Windows, وLinux. أدِر لوحة تحكم الدفعات الخاصة بك كتطبيق محلي سريع - بدون الحاجة إلى علامة تبويب المتصفح.
| المنصة | تنزيل |
|---|
| macOS (Apple Silicon) | Dodo.Payments_<version>_aarch64.dmg |
| macOS (Intel) | Dodo.Payments_<version>_x64.dmg |
| Windows | Dodo.Payments_<version>_x64-setup.exe (أو .msi) |
| Linux (Debian/Ubuntu) | Dodo.Payments_<version>_amd64.deb |
| Linux (Fedora/RHEL) | Dodo.Payments-<version>-1.x86_64.rpm |
| Linux (AppImage, auto-update) | Dodo.Payments_<version>_amd64.AppImage |
ما بالداخل
- تنفيذ محلي صغير — مبني بـ Tauri على webview النظام المحلي، حوالي 5 ميجابايت إجمالي (بدون Chromium مدمج)
- موقع ومصدق — تم توقيع برامج macOS بمعرف مطور Apple وتوثيقها، لذا لا توجد تحذيرات Gatekeeper
- تحديث تلقائي — يتحقق كل 4 ساعات ويطبق التحديثات الموقعة تلقائيًا من GitHub Releases (يعمل على macOS، Windows، وLinux AppImage)
- شريط النظام + شريط القوائم — إخفاء في الدرج على macOS، قوائم كاملة File/Edit/View/Help مع اختصارات لوحة المفاتيح (
⌘⇧H يذهب إلى لوحة التحكم، ⌘L ينسخ URL الحالي، ⌘⌥I أدوات المطورين)
- دعم الربط العميق — روابط اعتماد رابط السحر تفتح مباشرة في التطبيق
- دعم النوافذ المتعددة — افتح لوحات تحكم متعددة جنبًا إلى جنب
6. مدفوعات العملات المستقرة (USDC, USDP, USDG)
اقبل مدفوعات العملات المستقرة عالميًا مع تسوية بالدولار الأمريكي. يدفع العملاء من محفظة العملة المستقرة المفضلة لديهم على الشبكة التي يختارونها؛ أنت تتلقى الدولار الأمريكي العادي بدون تعرض لتقلبات العملات المشفرة، بدون عكس عمليات الدفع، ولا حاجة للبنية التحتية المصرفية من جانب العميل.
العملات والشبكات المدعومة
| العملة المستقرة | الشبكات |
|---|
| USDC | Ethereum، Solana، Polygon، Base |
| USDP | Ethereum، Solana |
| USDG | Ethereum |
التغطية
| التفاصيل | القيمة |
|---|
| عملة الفوترة | USD |
| الدول المدعومة | عالميًا (باستثناء الهند) |
| الاشتراكات | غير مدعوم (مدفوعات لمرة واحدة فقط) |
| الحد الأدنى للمبلغ | $0.50 |
| التسوية | USD |
التكوين
مرر crypto في allowed_payment_method_types عند إنشاء جلسة دفع:
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_123', quantity: 1 }],
allowed_payment_method_types: ['crypto', 'credit', 'debit'],
return_url: 'https://example.com/success'
});
يظهر للعميل عنوان محفظة ورمز QR مع المبلغ المحسوب للعملة المستقرة بسعر الصرف في الزمن الفعلي؛ بمجرد أن يؤكد blockchain العملية، تشتعل سوالب payment.succeeded الخاصة بك ويتم تحويل العميل إلى صفحة النجاح الخاصة بك.
مدفوعات العملات المستقرة غير قابلة للعكس بطبيعتها — لا توجد عمليات عكس للمدفوعات. نوصي دائمًا بعرض credit و debit كطرق احتياطية للعملاء الذين لا يمتلكون محفظة عملة مستقرة.
تعرف على المزيد: مدفوعات العملات المستقرة
7. استيراد مفاتيح الترخيص الحالية
يمكنك الآن استيراد مفاتيح الترخيص من نظام آخر إلى Dodo Payments باستخدام واجهة برمجة تطبيقات Create License Key. يفتح هذا عملية الترحيل بدون انقطاع من أي مزود خارجي لمفاتيح الترخيص، بحيث يمكن لعملائك الحاليين الاستمرار في تفعيل مفاتيحهم والتحقق منها وإلغاء تفعيلها ضد Dodo Payments بدون إعادة الإصدار.
const licenseKey = await client.licenseKeys.create({
customer_id: 'cus_abc123',
product_id: 'prod_456',
key: 'YOUR-EXISTING-LICENSE-KEY',
activations_limit: 5,
expires_at: '2026-12-31T23:59:59Z',
});
يتم وضع علامات على المفاتيح المستوردة بـ source: "import" (مقابل source: "auto" للمفاتيح التي تم إنشاؤها تلقائيًا عند الدفع)، بحيث يمكنك التمييز بين المخزون المهاجر من المفاتيح المصدرة من Dodo Payments عند استعلام GET /license_keys. payment_id على المفاتيح المستوردة هو null لأنها ليست مرتبطة بمعاملة Dodo Payments.
لا تؤدي مفاتيح الترخيص التي تُنشأ أو تُحدث عبر واجهة البرمجة إلى تحذير البريد الإلكتروني للعملاء. إذا كنت بحاجة إلى إعلام العملاء بمفتاح مستورد، تعامل مع ذلك بشكل منفصل في تطبيقك.
الهجرة من Polar.sh أو Lemon Squeezy؟ dodo-migrate CLI يُؤتمت بعمليات استيراد كبيرة للمنتجات والعملاء والخصومات ومفاتيح الترخيص في أمر واحد.
تعرف على المزيد: مفاتيح الترخيص | واجهة برمجة تطبيقات Create License Key
8. require_phone_number للجلسات الدفعية
إلزم العملاء بتقديم رقم هاتف أثناء الدفع عن طريق تعيين feature_flags.require_phone_number: true عند إنشاء جلسة دفع. يصبح رقم الهاتف حقلًا مطلوبًا في نموذج الدفع، مع التحقق من صحة النموذج مؤكداً “رقم الهاتف مطلوب” إذا تركه العميل فارغًا.
const session = await client.checkoutSessions.create({
product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
feature_flags: {
allow_phone_number_collection: true,
require_phone_number: true
},
return_url: 'https://yoursite.com/return'
});
| العلم | الافتراضي | السلوك |
|---|
allow_phone_number_collection | true | يظهر حقل رقم الهاتف على الدفع |
require_phone_number | false | يجعل حقل رقم الهاتف مطلوبًا |
require_phone_number: true يتطلب allow_phone_number_collection: true. ترفض واجهة البرمجة الجلسات حيث require_phone_number يكون صحيحًا بينما يكون تجميع الهاتف معطلا.
مفيد للأعمال التجارية بين الشركات، الصناعات المنظمة، أو أي تدفق حيث تحتاج إلى قناة اتصال موثوقة للدعم، مراجعة الاحتيال، أو الامتثال.
تعرف على المزيد: ميزات الدفع | واجهة برمجة تطبيقات إنشاء جلسة دفع
إصلاحات الأخطاء والتحسينات
- إصلاحات الأخطاء الطفيفة وتحسينات الاستقرار عبر المنصة