إذا كان تطبيقك لا يزال يعمل على App Store Server Notifications V1، فإن Apple لا تسألك أبدًا عن استرداد مبالغ الاشتراكات
أوقفت Apple دعم App Store Server Notifications V1 في يونيو 2023، ولم يحصل أبدًا على CONSUMPTION_REQUEST الخاص بالاشتراكات ولا على REFUND_DECLINED أو REFUND_REVERSED. إليك ما يفوت خادم V1، وكم يكلفك ذلك، وكيف تنتقل إلى V2 دون أن تخسر أي طلب استرداد.

أهم الخلاصات
- أعلنت Apple إيقاف دعم App Store Server Notifications V1 ونقطة النهاية verifyReceipt في 5 يونيو 2023. لا يزال كلاهما يعمل، ولا يحصلان على ميزات جديدة، ولم يُعلن عن موعد لنهاية عمرهما.
- تذكر وثائق V1 من Apple الإشعار CONSUMPTION_REQUEST للمشتريات القابلة للاستهلاك داخل التطبيق فقط. أُضيفت طلبات الاستهلاك للاشتراكات المتجددة تلقائيًا إلى App Store Server Notifications V2 في أبريل 2024.
- لا يوجد REFUND_DECLINED وREFUND_REVERSED إلا في App Store Server Notifications V2، لذلك لا يعرف خادم V1 أبدًا أن Apple رفضت طلب استرداد أو تراجعت عن استرداد منحته.
- على V1، يصل استرداد Apple لاشتراك متجدد تلقائيًا على شكل CANCEL. وعلى V2 يصل على شكل REFUND مع revocationDate وrevocationReason في المعاملة الموقّعة.
- تعيد Apple محاولة إرسال إشعار V2 الفاشل خمس مرات على مدى أسبوع تقريبًا، بعد 1 و12 و24 و48 و72 ساعة. أما إشعار V1 الفاشل فيحصل على ثلاث محاولات، بعد 6 و24 و48 ساعة، ولا يمكن استعادته عبر Get Notification History.
- بعد تحويل التطبيق إلى V2 في App Store Connect، تصل الإشعارات الجديدة بتنسيق V2 فورًا، بينما قد تستمر إشعارات V1 التي هي قيد إعادة المحاولة في الوصول لمدة 78 ساعة تقريبًا.
لا يزال Version 1 من App Store Server Notifications يُبلغك بعمليات الاسترداد، لكنه يُغفل الإشعار الوحيد الذي يتيح لك الدفاع عن موقفك في استرداد اشتراك. أوقفت Apple دعم V1 في 5 يونيو 2023، إلى جانب نقطة النهاية verifyReceipt، ومنذ ذلك الحين أضافت كل ميزة متعلقة بالاسترداد إلى V2 فقط. إذا كانت إعدادات App Store Connect لديك لا تزال تشير إلى Version 1، فقد تبتّ Apple في استرداد اشتراك دون أن ترسل إلى خادمك CONSUMPTION_REQUEST أبدًا. أنت لا تخسر معركة هنا. أنت لا تُدعى إليها من الأساس.
ماذا يعني إيقاف Apple لدعم App Store Server Notifications V1
إيقاف الدعم لا يعني الإطفاء. كتب أحد مهندسي Apple في منتديات المطورين في يونيو 2023 أن verifyReceipt وإشعارات V1 ستستمر في العمل إلى أن يُعلن موعد نهاية العمر، وأن هذا الموعد لم يُحدَّد بعد، وأن المطورين سيُبلَّغون مسبقًا. وبعد أكثر من ثلاث سنوات، لا يزال App Store Connect يعرض "Version 1 (deprecated)" خيارًا عند ضبط عنوان URL للخادم.
ما يعنيه إيقاف الدعم فعلًا هو التجميد. كل تغيير في سجل تغييرات الإشعارات لدى Apple منذ يونيو 2023 هو تغيير في V2: حقول جديدة في المعاملة الموقّعة، وأنواع إشعارات جديدة، وبيانات الالتزام لمدة 12 شهرًا المضافة في أبريل 2026. لا يرى خادم V1 شيئًا من ذلك.
إشارات الاسترداد التي لا يتلقاها خادم V1 أبدًا
إليك كيف تصل أحداث الاسترداد نفسها إلى خادم V1 وخادم V2، وفقًا لوثائق Apple لكل إصدار.
| حدث الاسترداد | Version 1 | Version 2 |
|---|---|---|
| يطلب العميل من Apple استرداد منتج قابل للاستهلاك | CONSUMPTION_REQUEST | CONSUMPTION_REQUEST |
| يطلب العميل من Apple استرداد اشتراك متجدد تلقائيًا | غير مذكور في وثائق V1 | CONSUMPTION_REQUEST، منذ أبريل 2024 |
| تسترد Apple مبلغ اشتراك متجدد تلقائيًا | CANCEL | REFUND |
| تسترد Apple مبلغ منتج قابل للاستهلاك أو غير قابل للاستهلاك أو اشتراك غير متجدد | REFUND | REFUND |
| ترفض Apple استردادًا بدأه العميل داخل تطبيقك | غير متاح | REFUND_DECLINED |
| تتراجع Apple عن استرداد سبق أن منحته | غير متاح | REFUND_REVERSED |
| تستعيد الإشعارات التي فاتتك أثناء انقطاع الخدمة | غير متاح | Get Notification History |
هل لا يزال V1 يتلقى CONSUMPTION_REQUEST أصلًا؟
نعم، للمنتجات القابلة للاستهلاك. يصف مرجع V1 من Apple الإشعار CONSUMPTION_REQUEST بأنه الإشعار المرسل عندما يبدأ العميل طلب استرداد لعملية شراء قابلة للاستهلاك داخل التطبيق. وأكد أحد مهندسي Apple في المنتديات عام 2023 أن طلبات الاستهلاك على V1 تُرسل لعمليات الاسترداد المؤهلة. الفجوة في الاشتراكات. يؤرخ سجل تغييرات Apple طلبات الاستهلاك للاشتراكات بتاريخ 11 أبريل 2024، في V2، وتنص وثائق Send Consumption Information على أن Apple ترسل الطلب عبر نقطة نهاية V2 لديك.
لماذا يسهل سوء فهم CANCEL على V1
على V1، عندما تسترد Apple مبلغ اشتراك، يكون نوع الإشعار CANCEL، وغالبًا ما يقترن بـ DID_CHANGE_RENEWAL_STATUS. تتعامل خوادم كثيرة مع أي إلغاء على أنه عميل أوقف التجديد التلقائي، فيبقى الوصول مفعّلًا حتى نهاية الفترة. يزيل V2 هذا الالتباس. يصل الاسترداد على شكل REFUND، ويصل إيقاف العميل للتجديد على شكل DID_CHANGE_RENEWAL_STATUS بالنوع الفرعي AUTO_RENEW_DISABLED.
كم يكلفك البقاء على V1 من المال
Apple هي من تبتّ في كل عملية استرداد على App Store. والإشعار CONSUMPTION_REQUEST هو النقطة الوحيدة التي تصل فيها بيانات الاستخدام لديك إلى هذا القرار، وتطلب منك Apple الرد خلال 12 ساعة. على V1، تتخطى عمليات استرداد الاشتراكات هذه الخطوة.
إليك مثالًا تطبيقيًا بأرقام توضيحية. لنفترض أن تطبيقك يبيع اشتراكًا شهريًا بسعر $9.99 يتضمن توليد صور بالذكاء الاصطناعي. يُجري أحد المشتركين 400 عملية توليد في شهر، وكل واحدة تكلفك مالًا حقيقيًا في استدلال النموذج. ثم يطلب من Apple استرداد المبلغ.
| بند التكلفة | خادم V1 | خادم V2 |
|---|---|---|
| حصتك من الدفعة | تُعاد إذا وافقت Apple | تُعاد إذا وافقت Apple |
| الحوسبة واستدعاءات API والتخزين المستخدمة في ذلك الشهر | مدفوعة مسبقًا، لا يمكن استعادتها | مدفوعة مسبقًا، لا يمكن استعادتها |
| فرصة لعرض الـ 400 عملية توليد على Apple | لا توجد | CONSUMPTION_REQUEST واحد، 12 ساعة |
| معرفة أن Apple رفضت الاسترداد | أبدًا | REFUND_DECLINED |
| معرفة أن الاسترداد أُلغي | أبدًا | REFUND_REVERSED |
الدفعة التي تخسرها هي حصتك، لا السعر المعلن. تدفع Apple 70% من سعر الاشتراك، بعد خصم الضرائب المطبقة، خلال السنة الأولى من الخدمة المدفوعة للمشترك، و85% بعد ذلك أو لأعضاء App Store Small Business Program. ولا تنخفض فاتورة الحوسبة معها. فالاستدلال واستدعاءات API لدى الأطراف الثالثة وتخزين الملفات دُفعت عندما استخدمها العميل.
والإشعاران الغائبان عن نتيجة الطلب يكلفان مالًا أيضًا. بدون REFUND_REVERSED، فإن الخادم الذي ألغى الوصول عند الاسترداد لا يعيده أبدًا عندما تتراجع Apple عن الاسترداد، فيبقى عميل يدفع محرومًا من الوصول ويراسل الدعم. وبدون REFUND_DECLINED، لا يمكنك التمييز بين استرداد لا يزال معلقًا واسترداد رفضته Apple.

كيف تنتقل من V1 إلى V2 دون أن تفقد أي استرداد
الانتقال إلى V2 تغيير في الخادم إضافة إلى إعداد واحد. توضح إرشادات Apple نفسها في المنتديات، من أحد مهندسي App Store Commerce في ديسمبر 2025، ما يحدث في يوم التحويل.
أنشئ نقطة نهاية V2 قبل تغيير الإعداد
- اقبل طلب POST يحمل جسمه signedPayload. حمولات V2 بتنسيق JWS وتوقّعها Apple، لذا تحقّق من التوقيع قبل أن تثق بأي شيء بداخلها. تتولى App Store Server Library من Apple ذلك نيابة عنك.
- اربط معالجة CANCEL بـ REFUND، وعالج REFUND_DECLINED وREFUND_REVERSED كحالات جديدة.
- أجب عن CONSUMPTION_REQUEST الخاص بالاشتراكات عبر Send Consumption Information، وفقط عندما يوافق العميل على مشاركة البيانات مع Apple. تقول Apple إنه لا ينبغي لك الرد دون موافقة.
- أعد HTTP 200 إلى 206 عند النجاح. أي رمز 40x أو 50x يجعل Apple تعيد المحاولة.
غيّر الإعداد في App Store Connect
في App Store Connect، افتح تطبيقك، واختر App Information ضمن General، وابحث عن App Store Server Notifications، واضبط Production Server URL على نقطة نهاية V2 لديك مع تحديد Version 2. افعل الشيء نفسه لعنوان sandbox أولًا إن أردت الاختبار، واستخدم Request a Test Notification للتأكد من أن خادمك يستجيب.
أبقِ معالج V1 يعمل لنحو ثلاثة أيام
بعد التحويل، تصل الإشعارات الجديدة بتنسيق V2 فورًا، لكل اشتراك، قديمًا كان أو جديدًا. أما إشعارات V1 التي هي قيد إعادة المحاولة فتستمر في الوصول بتنسيق V1 حتى تنجح أو تنفد محاولاتها. تحدد Apple آخر محاولة ممكنة لـ V1 بنحو 78 ساعة، أي 6 + 24 + 48. اترك المعالج القديم يعمل لما بعد ذلك، ثم أزله.
استبدل verifyReceipt وأنت في ذلك
أُوقف دعم verifyReceipt في اليوم نفسه. لا يزال يستجيب، لكن Apple توجّه الخوادم إلى App Store Server API بدلًا منه. يعيد Get Transaction Info معاملة موقّعة واحدة، ويعيد Get Transaction History سجل العميل، ويسرد Get Refund History كل عملية شراء مستردة للعميل. ومع إشعارات V2، تغطي هذه الواجهات ما كانت معظم الخوادم تستخدم الإيصالات من أجله، بما في ذلك الحقل cancellation_date الذي كان يميّز الاسترداد في الإيصال.
يتصل RefundHalt بـ App Store Server Notifications V2 ويرد على كل CONSUMPTION_REQUEST خلال مهلة الـ 12 ساعة، مستخدمًا بيانات الاستخدام التي يسجلها تطبيقك بالفعل. إذا كنت لا تزال على V1، فالتحويل هو الخطوة التي تجعل كل ذلك ممكنًا.
الأسئلة الشائعة
- هل سيتم إيقاف App Store Server Notifications V1؟
- ليس بعد. أوقفت Apple دعم V1 وverifyReceipt في 5 يونيو 2023، ولا يزال كلاهما يعمل. قالت Apple إنه لا يوجد موعد لنهاية العمر حتى الآن وإن المطورين سيُبلَّغون مسبقًا. وفي الأثناء لا يحصل V1 على أي ميزات جديدة.
- هل أتلقى إشعارات CONSUMPTION_REQUEST على V1؟
- للمنتجات القابلة للاستهلاك فقط، وفقًا لوثائق V1 من Apple. أُضيفت طلبات الاستهلاك للاشتراكات المتجددة تلقائيًا إلى V2 في أبريل 2024، وترسلها Apple عبر نقطة نهاية V2 لديك. إذا كنت تبيع اشتراكات وبقيت على V1، فلن تستطيع الرد على طلبات الاسترداد تلك.
- كيف يبدو استرداد الاشتراك على V1 مقارنةً بـ V2؟
- على V1 يصل على شكل CANCEL، وغالبًا مع DID_CHANGE_RENEWAL_STATUS. وعلى V2 يصل على شكل REFUND، مع revocationDate وrevocationReason في المعاملة الموقّعة. كما يرسل V2 الإشعار REFUND_DECLINED عندما ترفض Apple استردادًا بدأ في تطبيقك، والإشعار REFUND_REVERSED عندما تتراجع Apple عن استرداد منحته.
- ماذا يحدث للإشعارات عند التحويل من V1 إلى V2؟
- تصل الإشعارات الجديدة بتنسيق V2 بعد وقت قصير من التحويل، لجميع الاشتراكات. أما إشعارات V1 التي يُعاد إرسالها فتستمر في الوصول بتنسيق V1 حتى تنجح أو تستنفد محاولاتها، وهو ما تقدّره Apple بنحو 78 ساعة بعد التحويل. أبقِ المعالجين يعملان طوال هذه المدة.
- هل يمكنني العودة إلى V1 بعد التحويل إلى V2؟
- نعم، عبر نقطة النهاية Modify an App في App Store Connect API، كما توضح المذكرة التقنية TN3180 من Apple. تصف Apple ذلك بأنه حالة غير معتادة ولا تزال تصنّف V1 على أنه موقوف الدعم، لذا فإن العودة تعني التخلي عن طلبات الاستهلاك للاشتراكات وإشعارات الاسترداد الأحدث.
المصادر وقراءات إضافية
- Apple Developer Documentation: App Store Server Notifications changelog
- Apple Developer Documentation: notification_type (Version 1)
- Apple Developer Documentation: notificationType (Version 2)
- Apple Developer Documentation: Responding to App Store Server Notifications
- Apple Developer Documentation: Send Consumption Information V1
- Apple Developer Documentation: App Store Receipts (verifyReceipt deprecated)
- Apple Developer Documentation: TN3180, Reverting to App Store Server Notifications V1
- App Store Connect Help: Enter server URLs for App Store Server Notifications
- Apple Developer Forums: When will the verifyReceipt API be deprecated? (Apple staff reply, June 2023)
- Apple Developer Forums: Switching App Store Server Notifications from V1 to V2 (Apple staff reply, December 2025)
- Apple Developer: Auto-renewable subscriptions (net revenue after one year of paid service)
RefundHalt
الطيار الآلي للاستردادات في App Store وGoogle Play
تابع القراءة
استرداد واحد على اشتراك Apple الشهري بالتزام 12 شهرًا قد يُنهي السنة كلها، أو شهرًا واحدًا منها فقط
يقسم اشتراك Apple الشهري بالتزام 12 شهرًا عمليات الاسترداد إلى حالتين. إذا استُرد شهر سابق تستمر الفوترة. وإذا استُرد الشهر الحالي ينتهي الالتزام فورًا. إليك كيف تصل كل حالة إلى خادمك، وكم تكلّفك، وما الذي ترسله إلى Apple.
سياسة استرداد الأموال في تطبيقك لا تعلو على Apple أو Google، فاكتب السياسة التي تطابق ما يحدث فعلًا
لا تُلزمك سياسة استرداد الأموال في التطبيق إلا حيث تُصدر المبالغ المستردة بنفسك. تتولى Apple استرداد كل عملية شراء من App Store بنفسها، بينما يُسلّم Google Play عمليات الاسترداد إليك بعد 48 ساعة. إليك ما تنص عليه كل اتفاقية، وما يكلّفك إياه وعد متسرّع، والبنود التي تستحق الكتابة.