أصبحت Apple تبيع اشتراكك لشركات كاملة بنظام المقاعد، واسترداد الاشتراك متعدد المقاعد يعمل بطريقة مختلفة
فعّلت Apple الاشتراكات متعددة المقاعد للشركات والمدارس في 22 أكتوبر 2026، وجعلتها مفعّلة افتراضيًا. صار الشراء الواحد يغطي أشخاصًا كثيرين، وتصل إزالة المقاعد على شكل إشعارات REVOKE، وواجهة endpoint الخاصة بأدلة الاسترداد ترفض المقاعد المخصّصة. إليك ما تغيّر وما يكلّفك.

أهم الخلاصات
- منذ 22 أكتوبر 2026، صار بإمكان المؤسسات التي تستخدم Apple Business أو Apple School Manager شراء الاشتراك المتجدد تلقائيًا لأي تطبيق بالجملة عبر عملية Apple In-App Purchase واحدة، وتخصيص المقاعد بأدوات إدارة الأجهزة لديها، وإضافة المقاعد أو إزالتها في أي وقت.
- فعّلت Apple الشراء متعدد المقاعد افتراضيًا في App Store Connect. الاشتراكات التي أُنشئت قبل 14 سبتمبر 2026 ولا تستخدم StoreKit 2 أو التي فُعّلت فيها Family Sharing تبدأ وهي غير مشاركة، أما الاشتراكات في التطبيقات المخصّصة فلا يمكنها الانسحاب إطلاقًا.
- في الشراء متعدد المقاعد، يذكر الحقل quantity في بيانات المعاملة لدى Apple عدد المقاعد، ويحصل كل شخص يُمنح مقعدًا على معاملة قيمة inAppOwnershipType فيها هي ASSIGNED.
- عندما تزيل مؤسسة اشتراكًا خصّصته لشخص ما، ترسل Apple إشعار REVOKE وتحمل المعاملة القيمة ASSIGNMENT_REVOKE في revocationType، وقد أصبحت هذه القيمة متاحة في بيئة الإنتاج في 23 أكتوبر 2026.
- واجهة Send Consumption Information لدى Apple، وهي الرد على CONSUMPTION_REQUEST، تعيد الخطأ InvalidAssignedTransactionNotSupportedError عند استدعائها بمعاملة مخصّصة، لذلك لا يمكن إرسال أدلة الاسترداد إلا لمعاملة المشتري.
- يفرّق الحقل revocationType لدى Apple بين REFUND_FULL وREFUND_PRORATED، ويذكر revocationPercentage الحصة المستردّة بوحدات الألف (milliunits)، فالقيمة 40000 تعني 40 بالمئة.
- ميزة Group Purchases (الشراء الجماعي)، التي تتيح لعميل واحد في App Store شراء عدة مقاعد ودعوة آخرين، ستكون قابلة للاختبار في sandbox ابتداءً من نوفمبر 2026 وتصل إلى App Store هذا الشتاء.
بدأت Apple في 22 أكتوبر 2026 ببيع اشتراكات التطبيقات للمؤسسات بنظام المقاعد، وفعّلت هذا الخيار لمعظم المطوّرين دون أن تسألهم. صار بإمكان الشركات والمدارس التي تستخدم Apple Business أو Apple School Manager شراء اشتراكك المتجدد تلقائيًا بالجملة عبر عملية In-App Purchase واحدة. وهذا يغيّر شكل استرداد الاشتراك متعدد المقاعد على خادمك. فمعاملة واحدة قد تدفع الآن ثمن عشرات الأشخاص، وقد يختفي مقعد دون أي استرداد، والواجهة التي تستخدمها للدفاع عن قضية استرداد ترفض الحديث عن الأشخاص الذين يستخدمون التطبيق فعلًا.
ما الذي فعّلته Apple، وأين أعلنت عنه
جاء الإطلاق في منشور إخباري قصير على Apple Developer بعنوان "Offer your subscriptions to businesses and schools." يقول المنشور إن المؤسسات تستطيع شراء المقاعد التي تحتاجها عبر عملية In-App Purchase واحدة، ثم تخصيص هذه المقاعد وإدارتها بأدوات إدارة الأجهزة الموجودة لديها، وإضافة المقاعد أو إزالتها في أي وقت. ويقول المنشور نفسه إن الشراء متعدد المقاعد مفعّل افتراضيًا في App Store Connect ما لم تكن قد غيّرت الإعداد من قبل.
وصلت البنية التقنية خلال الشهر السابق في سجلات التغييرات، لا على مسرح. أضاف App Store Server API 1.22، المؤرخ في 28 سبتمبر، حقول المقاعد وواجهات المجموعات في sandbox فقط. وفي 23 أكتوبر، نقل تحديث خادم من سطر واحد واجهات المجموعات والقيمة ASSIGNMENT_REVOKE إلى بيئة الإنتاج. إذا لم يتغيّر معالج الإشعارات لديك منذ الصيف، فهو يستقبل الآن بيانات لم يُكتب أصلًا لقراءتها.
| التاريخ | ما الذي تغيّر | أين أعلنت Apple ذلك |
|---|---|---|
| يونيو 2026 | الإعلان عن الاشتراكات متعددة المقاعد في WWDC26 | الجلسة 391، Offer subscriptions to groups and organizations |
| 16 سبتمبر 2026 | تفعيل الشراء متعدد المقاعد افتراضيًا في App Store Connect | أخبار Apple Developer |
| 28 سبتمبر 2026 | الحقل quantity يذكر المقاعد، وإضافة ASSIGNED وASSIGNMENT_REVOKE، في sandbox فقط | سجل تغييرات App Store Server API، الإصدار 1.22 |
| 22 أكتوبر 2026 | إطلاق Volume Purchasing لـ Apple Business وApple School Manager | أخبار Apple Developer |
| 23 أكتوبر 2026 | ASSIGNMENT_REVOKE وواجهات المجموعات متاحة في بيئة الإنتاج | سجلات تغييرات Server API وServer Notifications |
| نوفمبر 2026 | Group Purchases قابلة للاختبار في sandbox | أخبار Apple Developer |
| هذا الشتاء | Group Purchases على App Store | أخبار Apple Developer |
من المشارك افتراضيًا
الجميع تقريبًا. تقول صفحة المساعدة في App Store Connect إن الاشتراكات التي أُنشئت قبل 14 سبتمبر 2026 تبدأ غير مشاركة فقط إذا كانت لا تستخدم StoreKit 2 أو كانت Family Sharing مفعّلة فيها. الاشتراكات في التطبيقات المخصّصة تذهب تلقائيًا إلى Apple Business وApple School Manager، ولا يمكنك إخراجها. يتطلب تغيير الإعداد دور Account Holder أو Admin أو App Manager، وإزالة Apple Business أو Apple School Manager من اشتراك معتمد تتطلب دور Account Holder.
كيف يظهر الشراء متعدد المقاعد على خادمك
صار هناك الآن نوعان من المعاملات للاشتراك نفسه. شراء المؤسسة معاملة واحدة، ويذكر الحقل quantity فيها عدد المقاعد التي اشترتها. وكل شخص يحصل على مقعد يتلقى معاملته الخاصة، وتصف جلسة WWDC لدى Apple ذلك بأن App Store يخصّص معاملة لكل عضو. تحمل معاملات الأعضاء هذه القيمة ASSIGNED في inAppOwnershipType، إلى جانب القيمتين PURCHASED وFAMILY_SHARED اللتين ربما تعالجهما بالفعل.
Apple حاسمة في تحديد السجل الذي يقرّر الوصول. تقول وثائق Get Customer Groups إن عضوية المجموعة منفصلة عن الاستحقاق، وإن عليك لفتح المحتوى قراءة معاملات العميل بدلًا من الاعتماد على عضوية المجموعة. امنح الوصول بناءً على المعاملات. واستخدم واجهات المجموعات فقط لميزات مثل عرض المسؤول.
| الحقل أو القيمة | ما الذي يخبرك به | تاريخ الإضافة |
|---|---|---|
| quantity | عدد المقاعد في الشراء متعدد المقاعد | 28 سبتمبر 2026 |
| inAppOwnershipType = ASSIGNED | الشخص يحصل على الوصول عبر مؤسسة أو مجموعة | 28 سبتمبر 2026 |
| revocationType = ASSIGNMENT_REVOKE | أزال المشتري الاشتراك من هذا الشخص | 28 سبتمبر 2026، الإنتاج 23 أكتوبر |
| revocationType = REFUND_FULL أو REFUND_PRORATED | استُردّت المعاملة كليًا أو جزئيًا | 10 ديسمبر 2025 |
| revocationPercentage | الحصة المستردّة بوحدات الألف (40000 = 40%) | 10 ديسمبر 2025 |
المقعد المُزال ليس استردادًا
هذا هو الجزء الذي ستخطئ فيه معظم المعالجات. عندما تسحب مؤسسة مقعدًا من موظف، ترسل Apple إشعار REVOKE، وهو النوع نفسه الذي تستخدمه عندما يتوقف مشتري Family Sharing عن المشاركة. تكون قيمة revocationType في المعاملة ASSIGNMENT_REVOKE، وتعليمات Apple مباشرة: ألغِ وصول العميل إلى المحتوى الذي توفّره المعاملة.
لا شيء في هذا الحدث يقول إن أموالًا انتقلت. إذا كان الكود لديك يعامل كل إلغاء على أنه استرداد، فإن معدل الاسترداد وصافي الإيرادات وأي تنبيهات بنيتها عليهما ستحسب التغيّر الروتيني في الموظفين مبيعات ضائعة. افصل المعالجة حسب revocationType أولًا.
- ASSIGNMENT_REVOKE: أنهِ وصول هذا الشخص. لا تسجّل استردادًا.
- FAMILY_REVOKE: أنهِ وصول فرد العائلة. لا تسجّل استردادًا.
- REFUND_FULL: أنهِ الوصول وسجّل المعاملة كاملة على أنها مستردّة.
- REFUND_PRORATED: سجّل الحصة الواردة في revocationPercentage، ثم قرّر ما يبقى من الوصول.

لماذا لا يمكنك الدفاع عن استرداد على مقعد مخصّص
لا تزال Apple هي من يقرّر كل استرداد في App Store. عندما يطلب عميل استردادًا، ترسل Apple طلب CONSUMPTION_REQUEST وتمنحك 12 ساعة للرد عبر Send Consumption Information. ومع المقاعد المتعددة، يكون الشخص الذي يستخدم التطبيق مختلفًا عن الشخص الذي دفع، وصارت واجهة Apple ترسم خطًا فاصلًا صارمًا بينهما.
Send Consumption Information ترفض المعاملات المخصّصة
إذا استدعيت Send Consumption Information، أو إصدارها V1، أو Set App Account Token بمعاملة مخصّصة، تعيد Apple الخطأ InvalidAssignedTransactionNotSupportedError. ونصيحة Apple هي التحقق مما إذا كانت قيمة inAppOwnershipType هي ASSIGNED قبل الاستدعاء. عمليًا، إما أن تذهب أدلتك إلى معاملة المشتري أو لا تذهب إلى أي مكان. ومع ذلك يستحق الاستخدام الذي يسجّله تطبيقك على حسابات الأعضاء أن تحتفظ به، لأنه الطريقة الوحيدة لمعرفة ما إذا كانت المقاعد قد استُخدمت أصلًا.
كيف يبدو الاسترداد الجزئي
أضافت Apple القيمة REFUND_PRORATED والحقل revocationPercentage في ديسمبر 2025. ويتيح لك طلب الاستهلاك أن تطلب هذه النتيجة عبر refundPreference بالقيمة GRANT_PRORATED. وبالنسبة إلى الاشتراك المتجدد تلقائيًا، تقول Apple ألا ترسل consumptionPercentage مع GRANT_PRORATED، لأنها تحسب النسبة بنفسها. وإذا أُلغي الاسترداد لاحقًا، يختفي revocationPercentage من المعاملة.
هل يمكنني تمديد اشتراك موظف واحد كبادرة حسن نية؟
لا. تعيد Extend a Subscription Renewal Date الخطأ AssignedSubscriptionExtensionIneligibleError للاشتراك المخصّص. وسبب Apple أن الاشتراك المخصّص يتجدد وفق الجدول نفسه للاشتراك الذي اشتراه المشتري، لذلك لا يمكن تحريك عضو واحد بمفرده.
كم يكلّفك استرداد الاشتراك متعدد المقاعد
الحجم هو الخطر الجديد. تشرح جلسة WWDC لدى Apple التسعير بالحجم بما يصل إلى خمس شرائح سعرية. ومثالها يبيع المقاعد بسعر $19.99 شهريًا حتى 20 مقعدًا، و$13.99 للمقاعد من 21 إلى 40، و$10.99 بدءًا من المقعد 41. وبهذه الأرقام، يُفوتَر طلب من 50 مقعدًا بمبلغ $789.50 شهريًا، أي نحو $15.79 للمقعد. واسترداد REFUND_FULL على هذه المعاملة الواحدة يعيد مبلغ $789.50 كاملًا، لا سعر اشتراك واحد.
وتتضاعف تكلفة الخدمة بالطريقة نفسها. خمسون مقعدًا تعني خمسين شخصًا يشغّلون جلسات على خوادمك، ويجرون استدعاءات API لأطراف ثالثة تدفع ميزاتك ثمنها، ويملؤون مساحة تخزين تُفوتَر عليك. إذا احتفظ أصحاب المقاعد في طلب مستردّ بوصولهم لأن معالجك نظر فقط إلى معاملة المشتري، فستواصل الدفع عن كل واحد منهم. أما تفويت ASSIGNMENT_REVOKE فخسارته أصغر لكنه أكثر تكرارًا، فالشراء لم يعد يغطي ذلك الشخص، وكل طلب يرسله تكلفة لا يقابلها أي إيراد.
| الحدث | الأموال التي تنتقل | الوصول الذي يجب إنهاؤه | الأدلة التي يمكنك إرسالها |
|---|---|---|---|
| ASSIGNMENT_REVOKE على عضو | لا شيء مُبلَّغ عنه | ذلك العضو | لا ينطبق |
| REFUND_FULL على الشراء متعدد المقاعد | المعاملة كاملة، وكل مقعد فيها | المشتري وكل صاحب مقعد | معاملة المشتري فقط، خلال 12 ساعة من CONSUMPTION_REQUEST |
| REFUND_PRORATED على الشراء متعدد المقاعد | الحصة الواردة في revocationPercentage | يعتمد على ما يغطيه الاسترداد | معاملة المشتري فقط |
| رد الاستهلاك على معاملة مخصّصة | غير مقبول | لا ينطبق | مرفوض مع InvalidAssignedTransactionNotSupportedError |
أي مسارات الاسترداد تطلب روايتك أصلًا
المقاعد المتعددة لا تغيّر القائمة القصيرة. مساران فقط للاسترداد يطلبان أدلة من المطوّر: طلب CONSUMPTION_REQUEST من Apple، ويُرد عليه عبر Send Consumption Information خلال 12 ساعة، ومراجعة رد المبالغ (chargeback) في Google Play، ويُرد عليها عبر orders.reviewrefund خلال 24 ساعة. كل ما عدا ذلك يُحسم من دونك. وبالنسبة إلى طلبات Google Play التي تمت بعد 3 أغسطس 2026، يكلّف رد المبالغ المطوّرَ سعر الشراء، مخصومًا منه رسوم خدمة Play، مضافًا إليه رسوم رد المبالغ التي يفرضها البنك. يرد RefundHalt على طلبات الاستهلاك من Apple داخل مهلة الـ 12 ساعة، مستخدمًا بيانات الاستخدام التي تجمعها بالفعل.
ما الذي يجب تغييره في معالج App Store هذا الأسبوع
- اقرأ quantity في كل معاملة اشتراك واحفظها مع الشراء.
- احفظ inAppOwnershipType، وتعامل مع ASSIGNED كحالة مستقلة إلى جانب PURCHASED وFAMILY_SHARED.
- افصل معالجة REVOKE حسب revocationType، حتى ينهي ASSIGNMENT_REVOKE الوصول دون تسجيل استرداد.
- سجّل REFUND_PRORATED بحصة revocationPercentage، لا كاسترداد كامل.
- تحقّق من ASSIGNED قبل استدعاء Send Consumption Information أو Set App Account Token أو Extend a Subscription Renewal Date.
- قرّر في App Store Connect ما إذا كنت تريد البيع للمؤسسات أصلًا، قبل أن تشتري إحداها 50 مقعدًا.
الأسئلة الشائعة
- هل الاشتراكات متعددة المقاعد من Apple مفعّلة لتطبيقي؟
- على الأرجح نعم. فعّلت Apple الشراء متعدد المقاعد افتراضيًا في App Store Connect. الاشتراكات التي أُنشئت قبل 14 سبتمبر 2026 تبدأ غير مشاركة فقط إذا كانت لا تستخدم StoreKit 2 أو كانت Family Sharing مفعّلة فيها، والاشتراكات في التطبيقات المخصّصة لا يمكنها الانسحاب. يمكنك التحقق من ذلك في Purchase Options في صفحة كل اشتراك.
- هل يعني إشعار REVOKE مع ASSIGNMENT_REVOKE أنني خسرت مالًا؟
- لا. يعني ASSIGNMENT_REVOKE أن المؤسسة أو مشتري المجموعة أزال الاشتراك من شخص واحد. تطلب منك Apple إنهاء وصول ذلك الشخص، لكن الحدث لا يُبلغ عن أي استرداد. سجّل الاستردادات فقط عند REFUND_FULL أو REFUND_PRORATED.
- هل يمكنني إرسال معلومات الاستهلاك لموظف يستخدم مقعدًا مخصّصًا؟
- لا. تعيد واجهة Send Consumption Information لدى Apple الخطأ InvalidAssignedTransactionNotSupportedError للمعاملات التي خصّصتها مؤسسة أو مجموعة لعميل. تحقّق أولًا مما إذا كانت قيمة inAppOwnershipType هي ASSIGNED، وأرسل الأدلة على معاملة المشتري.
- كيف أعرف مقدار ما استردّته Apple من شراء متعدد المقاعد؟
- اقرأ revocationType وrevocationPercentage في المعاملة. يعني REFUND_FULL أن المعاملة كلها استُردّت. ويأتي REFUND_PRORATED مع revocationPercentage بوحدات الألف، فالقيمة 40000 تعني 40 بالمئة من المعاملة.
- متى تُطلق Apple ميزة Group Purchases؟
- تقول Apple إن Group Purchases، التي تتيح لعميل واحد في App Store شراء عدة مقاعد ودعوة آخرين، يمكن إعدادها واختبارها في sandbox ابتداءً من نوفمبر 2026، وستكون متاحة على App Store هذا الشتاء. أما Volume Purchasing (الشراء بالجملة) للشركات والمدارس فقد أُطلق في 22 أكتوبر 2026.
المصادر وقراءات إضافية
- Apple Developer News: Offer your subscriptions to businesses and schools (October 22, 2026)
- App Store Connect Help: Manage purchase options for an auto-renewable subscription
- WWDC26 Session 391: Offer subscriptions to groups and organizations
- App Store Server Notifications changelog
- App Store Server API: revocationType
- App Store Server API: revocationPercentage
- App Store Server API: InvalidAssignedTransactionNotSupportedError
- App Store Server API: ConsumptionRequest
RefundHalt
الطيار الآلي للاستردادات في App Store وGoogle Play
تابع القراءة
طلبات الاسترداد المفرطة قد تكلفك أكثر من المبالغ المستردة نفسها، لأن متجري التطبيقات يعدّانها مؤشرًا على الجودة
تذكر الإرشادات 5.6.4 من Apple طلبات الاسترداد المفرطة دليلًا على أن التطبيق لا يفي بمعايير الجودة، واتفاقية التوزيع من Google تسمح لها بإزالة تطبيقات المطورين الجدد بناءً على معدلات الاسترداد. إليك ما يقوله كل متجر، وكم تكلفك الإزالة، وكيف تبقى بعيدًا عن الخطر.
تحقّق من إشعارات خادم App Store قبل أن تتصرّف بناءً على استرداد، لأن أي شخص يستطيع الإرسال إلى عنوان webhook الخاص بك
إشعار الاسترداد ليس سوى طلب HTTPS إلى أن تتحقّق من توقيعه. إليك كيف تتحقّق من إشعارات خادم App Store ورسائل Google Play RTDN، وما الذي يوقّعه كل متجر، وما الذي يكلّفك إياه استرداد مزوّر أو مرفوض خطأً.