لفترة طويلة، كانت الإجابة الصادقة عن سؤال "كيف أرد على طلب استرداد من Apple" هي أنك لا تفعل ذلك. كانت Apple تستلم الدفعة، وتستلم الطلب، وتتخذ القرار، وأول ما يعرفه المطوّر عن الأمر هو دفعة مالية أصغر. لم يعد هذا صحيحًا منذ عام 2021، مع أن كثيرين ما زالوا يفترضون ذلك.
أما اليوم، فتسأل Apple خادمك عمّا يعرفه عن عملية الشراء قبل أن تتخذ قرارها، وتنتظر نحو 12 ساعة للحصول على الرد. وقد سبق أن تناولنا ما يحتويه إشعار CONSUMPTION_REQUEST بالفعل، لذا لن أكرر تفاصيل الحمولة حقلاً بحقل. هذا المقال يتناول ما يجب فعله عند وصول أحد هذه الإشعارات.
أهم النقاط
تتخذ Apple القرار في كل عملية استرداد على App Store. ما ترسله لا يغيّر ذلك، لكنه يغيّر ما تعرفه Apple عند اتخاذ القرار.
يصل الطلب في صورة إشعار CONSUMPTION_REQUEST، وذلك للمنتجات الاستهلاكية والاشتراكات المتجددة تلقائيًا فقط.
أمامك 12 ساعة للرد عبر نقطة نهاية Send Consumption Information، التي تطلب الآن خمسة حقول.
يتكوّن الرد في معظمه من ثلاث حقائق: هل تم التسليم، وما مقدار الاستخدام، وهل حصل العميل على عيّنة مجانية أولاً. بالإضافة إلى تفضيلك.
في تجربتنا، فإن حالات الاسترداد التي يخسرها المطوّرون هي في الغالب تلك التي لم يرد عليها أحد.
ما هو طلب استرداد الأموال من Apple App Store؟
طلب استرداد الأموال من Apple App Store هو طلب يقدّمه العميل إلى Apple لاسترداد ثمن تطبيق أو عملية شراء داخل التطبيق. وهو لا يتوجّه إليك. فالعميل يزور reportaproblem.apple.com، أو يستخدم نافذة الاسترداد داخل التطبيق، ويختار سببًا من قائمة قصيرة، ويحدّد عملية الشراء ثم يرسل الطلب. وتخبره صفحة دعم Apple بتوقّع الرد في غضون 24 إلى 48 ساعة.
إذا كانت عملية الشراء منتجًا استهلاكيًا أو اشتراكًا متجدّدًا تلقائيًا، تتصل Apple بخادمك وتسأله عمّا يعرفه، ثم تدمج ردّك مع سجل العميل الخاص بعمليات الشراء والاسترداد، الذي تعرفه Apple أفضل منك بكثير، وتتخذ القرار. أنت لا ترى اسم العميل، ولا تملك حق النقض. كل ما تحصل عليه هو نافذة زمنية قصيرة لطرح الحقائق.
كيف تعمل عملية استرداد الأموال من Apple للمطوّرين
تمرّ عملية استرداد الأموال من Apple للمطوّرين بأربع مراحل، ولا يتدخّل المطوّر إلا في واحدة منها.
يطلب العميل من Apple استرداد أمواله ويختار سببًا لذلك.
ترسل Apple إشعار CONSUMPTION_REQUEST إلى عنوان URL الخاص بخادمك المسجّل في App Store Connect. ولا يحدث هذا إلا بالنسبة للمنتجات الاستهلاكية والاشتراكات المتجددة تلقائيًا.
أمامك 12 ساعة لاستدعاء نقطة نهاية Send Consumption Information وإرسال بياناتك.
تتخذ Apple قرارها، ثم تُعلمك عبر إشعار REFUND أو إشعار REFUND_DECLINED.
إذا لم تضبط من قبل عنوان URL للخادم لخدمة App Store Server Notifications، فإن المرحلة الثانية لا تحدث ببساطة. وتتخذ Apple قرارها بناءً على حساب العميل وحده، وأنت تعرف بالأمر من تقرير المبيعات، إن كنت تقرؤه.
ما الذي يحدث بعد أن يطلب العميل استردادًا؟
بعد فترة قصيرة من تقديم العميل الطلب، تستلم نقطة النهاية الخاصة بك حمولة JSON موقّعة بنوع إشعار notificationType هو CONSUMPTION_REQUEST. وتحتوي على: المعاملة الموقّعة، ومعرّف المنتج، ومعرّف المعاملة الأصلية، وحقل consumptionRequestReason. وقد أضافت Apple هذا الحقل في عام 2024 وشرحته في جلسة WWDC24 الخاصة بواجهات برمجة خادم App Store. وله خمس قيم محتملة: UNINTENDED_PURCHASE وFULFILLMENT_ISSUE وUNSATISFIED_WITH_PURCHASE وLEGAL وOTHER.
الشيء الغائب هو هوية الشخص. فالخيط الوحيد الذي يصلك بسجلاتك هو معرّف المعاملة، ومُعرّف appAccountToken إن كنت قد أرفقته عند الشراء. وإن لم تفعل، فهذه هي اللحظة التي ستتمنى فيها لو فعلت.
وبذلك، تكون المراجعة في الحقيقة عملية بحث: من اشترى هذا، وهل حصل عليه، وماذا فعل به منذ ذلك الحين؟
كيفية الرد على طلب استرداد من Apple
معظم من يبحث عن كيفية الرد على إشعارات طلب استرداد من Apple يجد مرجع واجهة برمجة التطبيقات فقط. وفيما يلي الخطوات بالترتيب.
1. تحقّق من الحمولة
توقّع Apple كل إشعار. تحقّق من التوقيع قبل أن تصدّق كلمة واحدة فيه. وتقوم مكتبة App Store Server Library من Apple بذلك بلغات Java وPython وNode وSwift.
2. ابحث عن عملية الشراء
استخدم معرّف المعاملة أو appAccountToken للبحث عن عملية الشراء في نظامك الخاص. فأنت تحتاج إلى المستخدم، وسجل التسليم، وأي بيانات استخدام سجّلتها منذ ذلك الحين.
3. اقرأ السبب، ثم تحقّق منه
FULFILLMENT_ISSUE تعني أن العميل يقول إنه لم يحصل على ما دفع ثمنه. تحقّق من سجلات التسليم أولاً، لأنه إذا كان العميل محقًا، فأنت تريد لهذا الاسترداد أن يتم.
UNINTENDED_PURCHASE تكون غالبًا بسبب طفل أو نقرة خاطئة.
وفي حالة UNSATISFIED_WITH_PURCHASE، تحمل بيانات استخدامك ثقلًا حقيقيًا، لأن عبارة "لم تعجبني" تبدو مختلفة عند استخدام 2 في المئة مقارنةً باستخدام 100 في المئة.
4. اختر تفضيلك
تقبل Apple القيم GRANT_FULL أو GRANT_PRORATED أو DECLINE. اختر القيمة التي تدعمها بياناتك. فهو تفضيل فقط، وقد منحت Apple الكثير من حالات الاسترداد التي طلب المطوّرون رفضها.
5. أرسل الرد
استدعِ نقطة نهاية Send Consumption Information . ويحتوي محتوى الطلب الحالي على خمسة حقول: customerConsented وdeliveryStatus وconsumptionPercentage وsampleContentProvided وrefundPreference.
يُقاس الاستهلاك بوحدة الألفية (milliunits)، وهو ما يسبب الالتباس: فالقيمة 100000 تعني استخدامًا كاملاً، والقيمة 45200 تعني 45.2 في المئة.
ويجب أن تكون قيمة customerConsented هي true، لذا يجب أن يكون إذن مشاركة بيانات الاستخدام موجودًا في شروطك قبل وصول أول طلب بوقت طويل.
6. تصرّف بناءً على النتيجة
يعني إشعار REFUND سحب المحتوى أو الصلاحية، ويفضَّل أن يتم ذلك في غضون ساعة. ويعني إشعار REFUND_DECLINED أن لا شيء يتغيّر. وفي كل الحالات، سجّل النتيجة مقابل الحالة.
لنفترض أن شخصًا يشتري حزمة من 500 عملة في الساعة 11 مساءً، ويستخدم 470 منها خلال الليل، ثم يقدّم طلبًا تحت تصنيف UNSATISFIED_WITH_PURCHASE صباح اليوم التالي. تم التسليم، واستُهلك 94 في المئة، ولا توجد نسخة تجريبية، والتفضيل هو DECLINE. هذا رد كامل على طلب استرداد من Apple. وهو ليس مقالًا مطوّلًا.
ما المعلومات التي يجب على المطوّرين التحقق منها قبل الرد؟
خمسة أمور، ينبغي أن يكون معظمها موجودًا في قاعدة بياناتك من قبل.
سجل عملية الشراء
التاريخ، والمنتج، والسعر، وما إذا كان هذا الحساب قد اشترى منك من قبل. وإذا كانت سجلاتك غير كافية، فإن نقطة نهاية Get Transaction History من Apple تُعيد كل ما اشتراه هذا العميل في تطبيقك، بالاستناد إلى أحد معرّفات معاملاته كنقطة بداية.
التسليم
هل سلّم خادمك العملات فعلاً، أو فتح الميزة، أو بدأ الاشتراك، وفي أي وقت؟ فإذا فشلت تلك العملية، تكون قيمة deliveryStatus إحدى قيم UNDELIVERED ويكون الاسترداد مستحقًا. لا تجادل سجلاتك الخاصة.
الاستخدام منذ ذلك الحين
الجلسات، والفصول المفتوحة، والعملات المُنفقة، أو أيًا كان ما يعنيه "استخدامه" بالنسبة لمنتجك. تريد Apple نسبة فقط، لكنك لا تستطيع تقديم نسبة يمكنك الدفاع عنها دون الأحداث التي تقوم عليها.
هل حصل العميل على عيّنة أولاً
أي نسخة تجريبية مجانية، أو فصل معاينة، أو مستوى مجاني. تسأل Apple عن هذا مباشرة، والإجابة بنعم تُضعف قصة "لم أكن أعرف ما الذي أشتريه".
الحساب من جانبك
عمر الحساب، وما إذا كنت قد استردت أمواله من قبل، وما إذا كانت هناك تذكرة دعم مفتوحة. وترى Apple النصف المتعلق بـ App Store من ذلك السجل. وأنت ترى النصف الخاص بك.
جميع هذا يعتمد على ربط معرّف معاملة Apple بمستخدم في نظامك، وهذا هو الغرض من appAccountToken. وهذه هي الثغرة الأكثر شيوعًا التي نجدها، وقد كتبنا عن أهمية appAccountToken في الدفاع عن طلبات الاسترداد إذا كنت تريد تفاصيل الإعداد.
الأخطاء الشائعة التي يرتكبها المطوّرون مع طلبات استرداد Apple
الإشعار لا يصل أبدًا
لا يوجد عنوان URL للخادم في App Store Connect، أو يوجد لكنه يشير إلى خادم اختباري ألغاه أحدهم في مارس. وتستمر Apple في الإرسال. ولا يوجد أحد في الطرف الآخر.
الرد المتأخر
تبدو اثنتا عشرة ساعة كافية تمامًا، إلى أن يصل طلب في الساعة 2 صباحًا يوم الأحد، ويكون الشخص المسؤول عن التعامل معه نائمًا، ثم في وجبة إفطار متأخرة، ثم مدركًا بشكل غامض لرسالة على Slack. وأي عملية مبنية على ساعات العمل الرسمية تفوّت جزءًا من الطلبات بطبيعة تصميمها.
عدم وجود ما تقوله
يصل الإشعار ولا يوجد سجل تسليم، ولا أحداث استخدام، ولا appAccountToken. فتتخذ Apple قرارها بناءً على كلام العميل فقط. وهذا الخطأ ارتُكب قبل أشهر، عند إتمام الدفع.
طلب رفض كل شيء من Apple
رأينا أنظمة ترسل DECLINE على كل طلب، بما فيها الطلبات التي تُظهر فيها سجلات المطوّر نفسه فشل التسليم. وتستطيع Apple رؤية هذا النمط، وهو يكلّفك مصداقيتك في الطلبات التي تملك فيها حجة حقيقية.
نسيان سحب الصلاحية بعد منح الاسترداد
وهذا الخطأ يكلّفك مرتين. فالمال يذهب والعميل لا يزال يملك المحتوى، وبعضهم يلاحظ ذلك.
الاختبار في بيئة الإنتاج
توفّر Apple نقطة نهاية إشعارات اختبارية وطلبات استرداد في بيئة sandbox. استخدم كليهما قبل أن يظهر أول طلب حقيقي في وقت غير مناسب.
إدارة استرداد أموال Apple: يدويًا أم تلقائيًا
تشمل إدارة استرداد أموال Apple كل ما يدور حول نافذة الـ 12 ساعة: استلام الطلب، والعثور على البيانات، واختيار التفضيل، وإرسال الرد، وتسجيل النتيجة، وسحب الصلاحية عند الحاجة.
الإدارة اليدوية
يدويًا، يعني ذلك شخصًا واحدًا لديه إمكانية الوصول إلى السجلات وتنبيه يصله. وهذا يعمل بشكل جيد مع عدد قليل من الطلبات شهريًا، شرط ألا يأخذ ذلك الشخص إجازة لمدة أسبوع أبدًا.
وعند نحو عشرين طلبًا في الأسبوع، يبدأ الأمر بالتسرّب. وعند مائة طلب، يصبح وظيفة بكامل معنى الكلمة، وظيفة لا يطلبها أحد.
الإدارة التلقائية
في الإدارة التلقائية، يعمل البحث والرد بناءً على قواعد كتبتها مرة واحدة. فيحصل المنتج الاستهلاكي المستهلك بالكامل على DECLINE، وتحصل حالة FULFILLMENT_ISSUE المصحوبة بفشل في التسليم على GRANT_FULL، وتُحوَّل أي حالة غريبة إلى شخص للمراجعة.
تخرج الردود في دقائق، في الساعة 2 صباحًا بنفس موثوقية الساعة 2 مساءً.
والمشكلة: أن الأتمتة لا تكون أفضل من البيانات التي تقوم عليها. فسجلات التسليم والاستخدام الناقصة لا تفعل أكثر من إرسال "غير معروف" بشكل أسرع.
متى ينبغي للمطوّرين التفكير في برامج إدارة استرداد أموال Apple؟
بصراحة، ليس في البداية. يمكن التعامل مع طلبين أو ثلاثة شهريًا بقائمة تحقّق وتنبيه واضح، والتعامل مع عدد قليل منها يدويًا يعلّمك الكثير.
يبدأ الأمر بأن يكون منطقيًا عندما تتدفق الطلبات بسرعة أكبر من قدرة شخص واحد على إنهائها ضمن النافذة الزمنية، أو في ساعات لا يكون أحد مستيقظًا فيها. ويساعد ذلك أيضًا عندما تُدير عدة تطبيقات، أو تعمل على Apple وGoogle Play جنبًا إلى جنب، وتريد قائمة واحدة بدلًا من ثلاث.
تبرهن برامج إدارة استرداد أموال Apple على قيمتها بمجرد أن تبدأ العملية اليدوية بإسقاط الطلبات. وستعرف ذلك الوقت: إنه الأسبوع الذي تفوّت فيه ثلاثة طلبات متتالية ولا تكتشف ذلك إلا من خلال الدفعة المالية.
برامج الدفاع عن استرداد أموال Apple: ما الذي يجب أن يبحث عنه المطوّرون؟
إذا كنت تقارن بين برامج الدفاع عن استرداد أموال Apple، فابدأ بالبنية التقنية: هل يستلم البرنامج إشعار CONSUMPTION_REQUEST نفسه ويرد على الحالات الروتينية دون تدخل شخص؟ وما مدى سرعته، بما في ذلك خلال الليل وعطلات نهاية الأسبوع؟ الدقائق هي الإجابة الصحيحة، واطلب رؤية الطوابع الزمنية.
الأدلة
هل يستطيع جلب أو استلام بيانات التسليم والاستخدام الخاصة بك، أم أنه يعيد إرسال الإشعار فقط مع إضافة تفضيل؟ النوع الثاني لا يستحق الكثير.
وينبغي أيضًا أن يكون مبنيًا على App Store Server API وServer Notifications V2، وليس على تحليل رسائل البريد الإلكتروني.
الرؤية والشفافية
إشعارات عند وصول الطلب، وعند إرسال الرد، وعند اتخاذ Apple قرارها.
حالة واحدة لكل طلب، مع الرد والنتيجة في مكان واحد.
تقارير عن معدلات الاسترداد ومعدلات الفوز والأسباب، لكل تطبيق ولكل منتج.
سجل تدقيق يوضح من أو ما الذي أرسل أي رد ومتى.
قواعد تتحكم فيها أنت، بحيث لا يتطلب تغيير منطقك عملية نشر (deploy) جديدة.
التسعير
يختلف التسعير أيضًا: فالرسوم الشهرية الثابتة، والرسوم لكل طلب، ونماذج النسبة من المبالغ المستردة، كل منها منطقي عند حجم مختلف من الطلبات.
وهناك شيء واحد لا يستطيع أي منها فعله: منع حدوث طلبات الاسترداد، أو ضمان الطريقة التي تقرر بها Apple. وأي من يدّعي غير ذلك فهو يبيع شيئًا ما.
أفضل الممارسات للرد على طلبات استرداد Apple
علّق هذه القائمة بجانب جدول المناوبة.
سجّل عنوان URL لخادم بيئة الإنتاج لخدمة App Store Server Notifications V2، واضبط تنبيهًا في حال توقّفه عن العمل.
اضبط قيمة appAccountToken في كل عملية شراء. كل عملية دون استثناء.
سجّل التسليم مع طابع زمني ونتيجة، بالإضافة إلى عدد قليل من أحداث الاستخدام التي تعني "أنهم استخدموه".
أضِف الموافقة على مشاركة بيانات الاستخدام في شروطك الآن.
رد على كل طلب في غضون 12 ساعة، بما في ذلك الطلبات التي يكون الرد فيها "وافق على الاسترداد".
اطلب DECLINE فقط عندما تدعمك بياناتك. فـ Apple تلاحظ الأنماط.
اسحب الوصول عند كل إشعار REFUND، في نفس اليوم.
مرة كل شهر، تحقّق من نسبة الطلبات التي رددت عليها فعلاً. فهذا الرقم يؤثر في معدل استردادك أكثر من أي شيء آخر.
هل تستحق برامج إدارة استرداد أموال Apple الاستخدام؟
عند حجم منخفض من الطلبات، فالإجابة على الأرجح لا. وبمجرد أن تتجاوز الطلبات ما يستطيع شخص واحد الرد عليه بشكل موثوق، أو تبدأ بالوصول خارج ساعات العمل، فإن البرامج التي تردّ تلقائيًا تعوّض تكلفتها غالبًا.
إذا كان هناك عادة واحدة يجب أخذها من كل هذا، فهي الرد على كل طلب، ببيانات حقيقية، قبل انتهاء الوقت. فتطبيق Dipsea، وهو تطبيق صوتي يعمل بالاشتراك، انتقل من معدل استرداد 3 في المئة إلى 1.9 في المئة في نحو أسبوعين بعد أن بدأ بالرد، ولم يطلب من Apple رفض أي شيء أبدًا. أما التطبيقات التي تبقى صامتة، فلا تعرف أبدًا ما كان يمكنها الاحتفاظ به.
الأسئلة الشائعة
هو طلب يقدّمه العميل إلى Apple، عادةً عبر reportaproblem.apple.com، لاسترداد ثمن تطبيق أو عملية شراء داخل التطبيق. وتخبر Apple العملاء بتوقّع الرد في غضون 24 إلى 48 ساعة. وبالنسبة للمنتجات الاستهلاكية والاشتراكات، تطلب من المطوّر معلومات أولاً.
تحقّق من الإشعار، وابحث عن عملية الشراء في سجلاتك الخاصة، وتفقّد التسليم والاستخدام، واختر تفضيلك، ثم استدعِ نقطة نهاية Send Consumption Information من Apple في غضون 12 ساعة. وبعد ذلك تصرّف بناءً على ما تقرره Apple.
لا. يمكنك إخبار Apple بأنك تفضّل رفض الطلب وإرسال بيانات تدعم ذلك. لكن القرار النهائي يبقى بيد Apple، وهي قد تمنح استردادات رفض المطوّرون الموافقة عليها، وتفعل ذلك فعلاً.
خمسة عناصر: موافقة العميل على مشاركة البيانات، وما إذا كان تم تسليم عملية الشراء، ومقدار ما تم استهلاكه منها، وما إذا كان العميل قد حصل على نسخة تجريبية مجانية، وتفضيلك بشأن الاسترداد. هذا هو محتوى الطلب الكامل الحالي.
اثنتا عشرة ساعة من تاريخ إشعار CONSUMPTION_REQUEST. وتقول Apple إنه يجب الرد خلال هذه المهلة إذا كنت تريد أن تُدرَج بياناتك في القرار.



