> ## 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.

# v1.97.6 (7 مايو 2026)

> إطلاق الحقوق مع خمس تكاملات جديدة للتلبية (Discord, GitHub, Telegram, Framer, Notion)، أسباب إلغاء الاشتراك في بوابة العملاء، تحديد حد أدنى للتفويض INR، إعداد شامل لرسوم العملة التكيفية، تطبيق ديسكتوب Dodo Payments لنظام التشغيل macOS/Windows/Linux، مدفوعات العملات المستقرة (USDC/USDP/USDG)، استيراد مفاتيح الترخيص الحالية، require_phone_number لجلسات الدفع، وإصلاحات الأخطاء

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

### 1. **الحقوق**

تأتي Dodo Payments الآن مع طبقة موحدة من **الحقوق** - طبقة واحدة تدعم التسليم التلقائي لكل تكامل. يمكن لمنتج واحد تقديم حقوق متعددة مع كل عملية شراء ناجحة أو اشتراك نشط.

![لوحة تحكم الحقوق مع قائمة الحقوق على اليسار ونشاط المنح على اليمين](https://mintcdn.com/dodopayments/do-W-dMDGVB_xzr_/images/entitlements/list.png?fit=max\&auto=format\&n=do-W-dMDGVB_xzr_\&q=85\&s=12a326205f64d1e71485bce46114d296)

**خمسة تكاملات جديدة للمنصات**

حتى الآن، كانت 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` |

> [!TIP]
>
> للتكاملات الجديدة، استمع إلى `entitlement_grant.delivered` بدلاً من `payment.succeeded`. لا يعني نجاح الدفع أن التسليم قد اكتمل، خاصةً للتكاملات القائمة على OAuth.

تعرف على المزيد: [الحقوق](https://docs.dodopayments.com/features/entitlements/introduction.md) | [سوالب منح الحقوق](https://docs.dodopayments.com/developer-resources/webhooks/intents/entitlement-grant.md)

### 2. **أسباب إلغاء الاشتراك في بوابة العملاء**

عندما يقوم العملاء بإلغاء اشتراك من بوابة العملاء، يُطلب منهم الآن مشاركة **سبب إلغائهم** قبل التأكيد. يتم تخزين السبب الملتقط على الاشتراك كـ `cancellation_feedback`، يتم عرضه في واجهة برمجة التطبيقات وحمولات السوالب، ومتاح في لوحة التحكم بحيث يمكنك ملاحظة أنماط الاضطراب بسرعة.

![نموذج إلغاء بوابة العملاء مع القائمة المنسدلة 'لماذا تلغي؟' التي تعرض الأسباب مثل مكلف جداً، الميزات المفقودة، وغيرها](https://mintcdn.com/dodopayments/RlXcM7JO-E_w40Np/images/customer-portal/cancellation-reasons.png?fit=max\&auto=format\&n=RlXcM7JO-E_w40Np\&q=85\&s=979394da2a9aa3907cbf9f4e225f9a4b)

**خيارات السبب**

| القيمة | العلامة الموجهة للعميل |
| - | - |
| `too_expensive` | مكلف جداً |
| `missing_features` | الميزات المفقودة |
| `switched_service` | الانتقال إلى خدمة أخرى |
| `unused` | عدم استخدامه كثيراً |
| `customer_service` | خدمة عملاء سيئة |
| `low_quality` | جودة منخفضة |
| `too_complex` | معقد جداً |
| `other` | أخرى |

**أين يظهر**

* **كائن الاشتراك**: حقل `cancellation_feedback` جديد (إحدى القيم الواردة أعلاه) و`cancellation_comment` (نص حر اختياري)، ويتم ملؤهما عند إلغاء العميل
* **webhook الخاص بـ `subscription.cancelled`**: يتم تضمين كلا الحقلين في الحمولة
* **API**: مرّر `cancellation_feedback` و`cancellation_comment` إلى `PATCH /subscriptions/{subscription_id}` عند جدولة عملية إلغاء أو تنفيذها برمجيًا

```typescript theme={null}
// 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"
```

> [!TIP]
>
> اجمع `cancellation_feedback` مع [إدارة الاشتراك](https://docs.dodopayments.com/features/recovery/subscription-dunning.md) لتخصيص رسائل استعادة عملائك — على سبيل المثال، أرسل رمز خصم إلى `too_expensive` الملغين واستطلاع "ما الذي تفتقده؟" إلى `missing_features` الملغين.

تعرف على المزيد: [بوابة العملاء](https://docs.dodopayments.com/features/customer-portal.md#cancelling-a-subscription) | [سوالب الاشتراك](https://docs.dodopayments.com/developer-resources/webhooks/intents/subscription.md)

### 3. **حد أدنى قابل للتكوين للتفويض INR للتفويضات الإلكترونية**

يمكنك الآن إعداد **حد التفويض** للتفويضات الإلكترونية INR على الاشتراكات الدورية للبطاقات الهندية. سابقًا، كان كل اشتراك للبطاقات الهندية تحت ₹15,000 يستخدم تفويض الطلب المحدد بـ ₹15,000. الآن يمكنك تجاوز هذا الحد على مستوى التاجر — ولكل جلسة دفع أو اشتراك إذا لزم الأمر.

مبلغ التفويض المسجل لدى بنك العميل هو `max(mandate_min_amount_inr_paise, billing_amount)`، لذلك يعمل هذا المبلغ كـ **سقف الموافقة** كلما كانت الفاتورة أقل من الحد الأدنى.

```typescript theme={null}
// Per-subscription override
const subscription = await client.subscriptions.create({
  product_id: 'pdt_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: 'pdt_inr_monthly', quantity: 1 }],
  mandate_min_amount_inr_paise: 2_000_000,
  return_url: 'https://yoursite.com/return'
});
```

**أولوية القرار**

1. تجاوز حسب الطلب (`mandate_min_amount_inr_paise` على جلسة الدفع، الدفع، أو الاشتراك)
2. إعداد التاجر على مستوى العمل
3. الافتراضية النظامية بقيمة **₹15,000** (1,500,000 بايزة)

| الحقل | النوع | النطاق | يطبق على |
| - | - | - | - |
| `mandate_min_amount_inr_paise` | `integer` (INR بايزة) | `>= 1` | اشتراكات البطاقات الهندية INR على موصلات غير Airwallex |

> [!NOTE]
>
> هذا الإعداد يؤثر فقط على التفويضات الإلكترونية المسجلة لبطاقات الصادرة عن الهند (Visa، Mastercard، RuPay) على اشتراكات INR. اتبع اشتراكات UPI تدفق AutoPay الخاص بها وغير معنونة.

تعرف على المزيد: [طرق الدفع في الهند](https://docs.dodopayments.com/features/payment-methods/india.md#mandate-types) | [الاشتراكات مع تفويضات RBI](https://docs.dodopayments.com/features/subscription.md#subscriptions-with-rbi-compliant-mandates)

### 4. **إعداد شامل لرسوم العملة التكيفية**

العملة التكيفية هي الخاصية التي تتيح لك شحن العملاء بعملتهم المحلية. افتراضيًا، يتحمل العميل **رسوم العملة التكيفية 2–4%** ويتم إضافتها فوق السعر المعروض. مع الإعداد الجديد **الشامل للرسوم**، يمكنك عكس هذا: الحفاظ على السعر المعروض دون تغيير للعميل وامتصاص الرسوم بنفسك.

**أين يمكن تكوينها**

اذهب إلى **الإعدادات → العمل**، تأكد من تمكين **التسعير التكيفي**، وقم بالتبديل إلى **شامل الرسوم** في قسم العملة التكيفية.

**تجاوز حسب الطلب**

يمكنك أيضًا تجاوز الإعداد الافتراضي للتاجر للمدفوعات الفردية، ورسوم الاشتراكات عند الطلب، وتغييرات الخطط باستخدام القيمة المنطقية `adaptive_currency_fees_inclusive`:

```typescript theme={null}
const payment = await client.payments.create({
  product_cart: [{ product_id: 'pdt_abc', quantity: 1 }],
  customer: { customer_id: 'cus_123' },
  billing: { country: 'US' },
  adaptive_currency_fees_inclusive: true, // override business default
  return_url: 'https://yoursite.com/return'
});
```

| الوضع | يرى العميل | يستقر التاجر |
| - | - | - |
| حصري (افتراضي) | السعر المحلي + 2–4% فوق ذلك | السعر الأساسي الكامل |
| شامل | السعر المحلي (دون تغيير) | السعر الأساسي ناقص الرسوم 2–4% |

> [!NOTE]
>
> التعاملات INR → INR دائمًا ما تعتبر شاملة بغض النظر عن إعداد العمل أو التجاوز حسب الطلب.

تعرف على المزيد: [العملة التكيفية](https://docs.dodopayments.com/features/adaptive-currency.md)

### 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` أدوات المطورين)
* **دعم الربط العميق** — روابط اعتماد رابط السحر تفتح مباشرة في التطبيق
* **دعم النوافذ المتعددة** — افتح لوحات تحكم متعددة جنبًا إلى جنب

> [!TIP]
>
> احصل على أحدث مثبت لمنصتك من [صفحة إصدار التطبيق لسطح المكتب](https://github.com/dodopayments/dodo-desktop/releases/latest). المستودع مفتوح المصدر بالكامل.

### 6. **مدفوعات العملات المستقرة (USDC, USDP, USDG)**

اقبل **مدفوعات العملات المستقرة عالميًا** مع تسوية بالدولار الأمريكي. يدفع العملاء من محفظة العملة المستقرة المفضلة لديهم على الشبكة التي يختارونها؛ أنت تتلقى الدولار الأمريكي العادي بدون تعرض لتقلبات العملات المشفرة، بدون عكس عمليات الدفع، ولا حاجة للبنية التحتية المصرفية من جانب العميل.

**العملات والشبكات المدعومة**

| العملة المستقرة | الشبكات |
| - | - |
| **USDC** | Ethereum، Solana، Polygon، Base |
| **USDP** | Ethereum، Solana |
| **USDG** | Ethereum |

**التغطية**

| التفاصيل | القيمة |
| - | - |
| عملة الفوترة | USD |
| البلدان المدعومة | عالميًا (باستثناء الهند) |
| الاشتراكات | غير مدعومة (الدفعات لمرة واحدة فقط) |
| الحد الأدنى للمبلغ | \$0.50 |
| التسوية | USD |

**التكوين**

مرر `crypto_currency` في `allowed_payment_method_types` عند إنشاء جلسة الدفع:

```javascript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_123', quantity: 1 }],
  allowed_payment_method_types: ['crypto_currency', 'credit', 'debit'],
  return_url: 'https://example.com/success'
});
```

يظهر للعميل عنوان محفظة ورمز QR مع المبلغ المحسوب للعملة المستقرة بسعر الصرف في الزمن الفعلي؛ بمجرد أن يؤكد blockchain العملية، تشتعل سوالب `payment.succeeded` الخاصة بك ويتم تحويل العميل إلى صفحة النجاح الخاصة بك.

> [!NOTE]
>
> مدفوعات العملات المستقرة غير قابلة للعكس بطبيعتها — لا توجد عمليات عكس للمدفوعات. نوصي دائمًا بعرض `credit` و `debit` كطرق احتياطية للعملاء الذين لا يمتلكون محفظة عملة مستقرة.

تعرف على المزيد: [مدفوعات العملات المستقرة](https://docs.dodopayments.com/features/payment-methods/stablecoins.md)

### 7. **استيراد مفاتيح الترخيص الحالية**

يمكنك الآن **استيراد مفاتيح الترخيص من نظام آخر** إلى Dodo Payments باستخدام [واجهة برمجة تطبيقات Create License Key](https://docs.dodopayments.com/api-reference/licenses/create-license-key.md). يفتح هذا عملية الترحيل بدون انقطاع من أي مزود خارجي لمفاتيح الترخيص، بحيث يمكن لعملائك الحاليين الاستمرار في تفعيل مفاتيحهم والتحقق منها وإلغاء تفعيلها ضد Dodo Payments بدون إعادة الإصدار.

```typescript theme={null}
const licenseKey = await client.licenseKeys.create({
  customer_id: 'cus_abc123',
  product_id: 'pdt_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.

> [!WARNING]
>
> لا تؤدي مفاتيح الترخيص التي تُنشأ أو تُحدث عبر واجهة البرمجة إلى تحذير البريد الإلكتروني للعملاء. إذا كنت بحاجة إلى إعلام العملاء بمفتاح مستورد، تعامل مع ذلك بشكل منفصل في تطبيقك.

> [!TIP]
>
> الهجرة من Polar.sh أو Lemon Squeezy؟ [`dodo-migrate` CLI](https://docs.dodopayments.com/migrate-to-dodo) يُؤتمت بعمليات استيراد كبيرة للمنتجات والعملاء والخصومات ومفاتيح الترخيص في أمر واحد.

تعرف على المزيد: [مفاتيح الترخيص](https://docs.dodopayments.com/features/license-keys.md#import-existing-license-keys-via-api) | [واجهة برمجة تطبيقات Create License Key](https://docs.dodopayments.com/api-reference/licenses/create-license-key.md)

### 8. **`require_phone_number` للجلسات الدفعية**

إلزم العملاء بتقديم رقم هاتف أثناء الدفع عن طريق تعيين `feature_flags.require_phone_number: true` عند إنشاء جلسة دفع. يصبح رقم الهاتف حقلًا مطلوبًا في نموذج الدفع، مع التحقق من صحة النموذج مؤكداً "رقم الهاتف مطلوب" إذا تركه العميل فارغًا.

```typescript theme={null}
const session = await client.checkoutSessions.create({
  product_cart: [{ product_id: 'pdt_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` | يجعل حقل رقم الهاتف مطلوبًا |

> [!WARNING]
>
> `require_phone_number: true` يتطلب `allow_phone_number_collection: true`. ترفض واجهة البرمجة الجلسات حيث `require_phone_number` يكون صحيحًا بينما يكون تجميع الهاتف معطلا.

> [!TIP]
>
> مفيد للأعمال التجارية بين الشركات، الصناعات المنظمة، أو أي تدفق حيث تحتاج إلى قناة اتصال موثوقة للدعم، مراجعة الاحتيال، أو الامتثال.

تعرف على المزيد: [ميزات الدفع](https://docs.dodopayments.com/features/checkout.md) | [واجهة برمجة تطبيقات إنشاء جلسة دفع](https://docs.dodopayments.com/api-reference/checkout-sessions/create.md)

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

* إصلاحات الأخطاء الطفيفة وتحسينات الاستقرار عبر المنصة


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.