الانتقال إلى المحتوى الرئيسي

الميزات الجديدة

1. إعادة محاولات دفع الاشتراك

يمكن الآن إعادة محاولة دفع تجديد الاشتراك الفاشل تلقائيًا لاسترداد الإيرادات، دون الحاجة إلى عمل تكامل. قم بتمكينها من الإعدادات → استرداد، وقم بتعيين نافذة الاسترداد، وستعيد Dodo Payments محاولة التجديد وفقًا لجدول زمني ذكي حتى ينجح أو تنتهي النافذة.
صفحة إعدادات الاسترداد مع تمكين زر إعادة محاولات الدفع وحقل نافذة الاسترداد (أيام)
الإعدادالوصفالافتراضي
تمكين إعادة محاولات الدفعإعادة محاولة الدفع الفاشل لتجديد الاشتراك تلقائيًا لاسترداد الإيرادات.غير مفعل (الاشتراك اختياري)
نافذة الاسترداد (أيام)المدة التي يجب الاستمرار في إعادة محاولة دفع فاشلة قبل التخلي (1–30).13
كيف تعمل
  1. يفشل دفع تجديد الاشتراك وتنتقل الاشتراك إلى on_hold.
  2. إذا كان الرفض قابلاً لإعادة المحاولة (رفض مرن مثل نقص الرصيد أو خطأ مؤقت في الشبكة)، يتم جدولة المحاولة التالية تلقائياً.
  3. تتم إعادة المحاولات خارج الجلسة وفقًا لجدول زمني متراجع، محدودًا بنافذة الاسترداد الخاصة بك.
  4. عند المحاولة الناجحة الأولى، يعود الاشتراك إلى active ويتم تقديم تاريخ الفاتورة التالي بشكل طبيعي.
جدول إعادة المحاولة تتراجع المحاولات تدريجيًا، محاكية للوقت الذي تم فيه إنشاء الفاتورة الفاشلة. يتم القيام بما يصل إلى 8 محاولات، طالما أنها تتناسب مع نافذة الاسترداد الخاصة بك:
المحاولةالتأخير بعد السابقة
112 ساعة
224 ساعة
348 ساعة
472 ساعة
596 ساعة
6120 ساعة
77 أيام
87 أيام
يتم إعادة محاولة الرفض المرن فقط (مثل نقص الرصيد، رفض عام، أخطاء في المعالجة أو الشبكة). الرفض الحاد ينهى سلسلة المحاولات فوراً، حيث أن إعادة المحاولة لن يغير النتيجة.
يكمل هذا أدوات الاسترداد الموجودة — حيث تقوم بريد متابعة الاشتراك بإرسال بريد إلكتروني للعميل لتحديث طريقة الدفع، بينما تقوم إعادة محاولات الدفع بإعادة المحاولة بصمت للطريقة الحالية. يعملون بشكل جيد معاً. تعرف على المزيد: إعادة محاولات دفع الاشتراك | إجراءات متابعة الاشتراك

2. إعدادات التنازل الخاصة بالأعمال

يمكنك الآن تعيين سلوك الترقية والتجريد الافتراضي المتوقع مرة واحدة على مستوى الأعمال بدلاً من تمرير معلمات التنازل في كل تغيير في الخطة. يتم تطبيق هذه الافتراضات كلما قام العميل بتغيير خطته من بوابة العميل، ويمكنك تجاوزها لكل مجموعة منتجات.
إعدادات سلوك الترقية والتخفيض الافتراضية في لوحة التحكم مع عناصر تحكم منفصلة للترقية وتخفيض الدرجة وفشل الدفع
كل اتجاه (ترقية وتخفيض) يحتوي على عنصرين تحكم مستقلين، بالإضافة إلى سياسة فشل الدفع المشتركة:
الإعدادالحقلالافتراضي (ترقية)الافتراضي (تخفيض)
متى تبدأ الخطة الجديدةeffective_at_on_upgrade / effective_at_on_downgradeimmediatelynext_billing_date
كيف يتم تحصيل الرسوم من العميلproration_billing_mode_on_upgrade / proration_billing_mode_on_downgradedifference_immediatelydifference_immediately
إذا فشل الدفع للعميلon_payment_failureapply_changeapply_change
متى تبدأ الخطة الجديدة (effective_at)
القيمةالسلوك
immediatelyينتقل العميل إلى الخطة الجديدة على الفور.
next_billing_dateيبقى العميل على الخطة الحالية حتى تاريخ الفاتورة التالي، ثم ينتقل إلى الجديدة.
كيف يتم تحصيل الرسوم من العميل (proration_billing_mode)
القيمةالسلوك
prorated_immediatelyيتم تحصيل مبلغ محسوب الآن، بناءً على الوقت المتبقي في دورة الفوترة الحالية.
full_immediatelyيتم تحصيل السعر الكامل للخطة الجديدة الآن.
difference_immediatelyيتم تحصيل فرق السعر فقط بين الخطة الجديدة والقديمة.
do_not_billلا يتم تحصيل أي شيء الآن. يتم تطبيق أي تعديل في الفاتورة التالية.
إذا فشل الدفع للعميل (on_payment_failure)
القيمةالسلوك
prevent_changeيبقى العميل في خطته الحالية إذا لم ينجح الدفع.
apply_changeينتقل العميل إلى الخطة الجديدة حتى لو لم يتم الدفع. يمكنك تحصيل المبلغ لاحقاً.
تجاوزات لكل مجموعة يمكن لكل مجموعة منتجات تجاوز أي من هذه الافتراضات. كل حقل مستقل — اتركه على الوراثة من العمل لاتباع الافتراض الأفتراضي للأعمال، أو قم بتعيين قيمة صريحة لتجاوزها لتلك المجموعة فقط.
قسم تجاوز سلوك الترقية والتخفيض لمجموعة منتجات، مع كل حقل يعرف على 'الوراثة من العمل'
يتم حل كل إعداد بهذا الترتيب:
per-request value (Change Plan API) → collection field (if set) → business field → system default
قيمه الطلب التي تمرر إلى تغيير خطة API (proration_billing_mode, effective_at, on_payment_failure) دائمًا تأخذ الأسبقية على كلًا من افتراضات العمل والتجميع. التعيينات الجديدة تغير فقط ما يحدث عندما لا يتم توفير قيمة صريحة — وهو الحال لجميع تغييرات الخطة عبر بوابة العميل.
تعرف على المزيد: ترقية الاشتراك وتخفيضه | مجموعات المنتجات

3. جمع اسم الشركة لفواتير B2B

يمكن الآن للعملاء B2B أن يُسجل اسم الشركة القانونية على الفاتورة بدلاً من اسم المشتري الشخصي. عند تقديم رقم ضريبي صالح في عملية الشراء، يمكنك أيضًا جمع customer_business_name ذات الصلة حتى تعكس الفاتورة الكيان الشرائي.
صفحة الخروج مع تمكين تبديل 'الشراء كشركة' ، موضحاً حقول اسم الشركة ورقم التعريف الضريبي
عندما يختار العميل الشراء كشركة في الخروج، يطلب منه كلاً من اسم الشركة ورقم التعريف الضريبي. يظهر اسم الشركة على الفاتورة فقط عندما تتحقق الشروط الثلاثة التالية:
  1. تكون المعاملة B2B (b2b = true)
  2. يوجد tax_id
  3. يتم تقديم customer_business_name غير فارغ
وإلاّ يُستخدم اسم العميل الشخصي. جمعها عند الخروج قم بتعيين customer_business_name بشكل مباشر، و/أو تمكين allow_customer_editing_business_name للسماح للعميل بإدخالها أو تعديلها في صفحة الخروج إلى جانب رقم التعريف الضريبي الخاص بهم:
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'prod_abc', quantity: 1 }],
  customer: { email: 'buyer@acme.com' },
  tax_id: 'GB123456789',
  customer_business_name: 'Acme Corp Ltd',
  feature_flags: {
    allow_tax_id: true,
    allow_customer_editing_business_name: true // let the customer enter/edit it
  },
  return_url: 'https://yoursite.com/return'
});
أين يُطبق
السطحالحقلالملاحظات
جلسات الخروجcustomer_business_name, feature_flags.allow_customer_editing_business_nameبحد أقصى 250 حرفًا؛ القيمة الافتراضية هي false
الدفعاتcustomer_business_nameبحد أقصى 250 حرفًا
الاشتراكاتcustomer_business_nameالتعيين أو الإزالة عبر PATCH /subscriptions/{id}
لا يمكن تعيين customer_business_name دون tax_id. يتم رفض إرسال اسم الشركة دون رقم ضريبي. إزالة tax_id أيضًا يزيل اسم الشركة، حيث أن الاثنين مرتبطان على الفاتورة.
يتم تقليم الفراغ المحيط، وتعامل القيم المكونة من الفراغ فقط كإزالة صريحة — لذا فإن البيانات المخزنة دائمًا تتطابق مع ما يظهر على الفاتورة.
تعرف على المزيد: دفعات B2B | إدارة الفواتير | جلسة الخروج

إصلاحات الأخطاء والتحسينات

  • إصلاحات أخطاء طفيفة وتحسينات في الثبات عبر المنصة.
Last modified on June 9, 2026