كل المقالات
دليل عمليمدة القراءة 8 دقائق

أسباب إلغاء الاشتراك تصلك عادةً قبل طلب الاسترداد، وGoogle Play يمنحك منها أكثر بكثير مما يمنحه Apple

يسجّل Google Play أسباب إلغاء الاشتراك من استبيان الإلغاء، بينما يرسل Apple رمز انتهاء فقط. إليك ما يخبرك به كل متجر، وأي الإشارات تنبئ باسترداد أو رد مبلغ (chargeback) قادم، وكم يكلّفك كل منها.

مطوّر يجلس إلى مكتبه في ضوء الصباح الباكر يتفحّص شاشة الاشتراكات على هاتفه بجانب دفتر مليء بعلامات العدّ، وهو يفرز أسباب إلغاء الاشتراك

أهم الخلاصات

  • يسأل Google Play المشتركين عن سبب مغادرتهم عند الإلغاء، ويصل الجواب إلى المطوّر عبر canceledStateContext.userInitiatedCancellation.cancelSurveyResult في purchases.subscriptionsv2.
  • لاستبيان الإلغاء في Google Play خمس إجابات يستطيع المطوّر قراءتها: استخدام غير كافٍ، ومشكلات تقنية، وأسباب تتعلق بالتكلفة، وإيجاد تطبيق أفضل، وأخرى. ولا يُملأ النص الحر في reasonUserInput إلا عندما يختار المستخدم أخرى.
  • إشعار SUBSCRIPTION_CANCELED من Google Play لا يحمل سوى رمز الشراء (purchase token). يجب جلب سبب الإلغاء عبر purchases.subscriptionsv2.get، ويمسح Google كل حقول الإلغاء إذا استعاد المستخدم اشتراكه.
  • لا يتضمن App Store Server API من Apple أي استبيان للإلغاء. يعطي حقل expirationIntent واحدًا من خمسة رموز: العميل ألغى، أو خطأ في الفوترة، أو عدم الموافقة على زيادة السعر أو تحويل العرض، أو المنتج غير متاح، أو سبب آخر.
  • قد يعني إشعار DID_CHANGE_RENEWAL_STATUS من Apple بالنوع الفرعي AUTO_RENEW_DISABLED أن App Store أوقف التجديد التلقائي بعد أن طلب العميل استردادًا، وليس فقط أن العميل أوقفه بنفسه.
  • سبب الإلغاء لا يمنح المطوّر أي صوت في قرار الاسترداد. وحدهما يطلبان أدلة: CONSUMPTION_REQUEST من Apple ويُرد عليه خلال 12 ساعة، ومراجعة رد المبلغ في Google Play عبر orders.reviewrefund ويُرد عليها خلال 24 ساعة.
  • المشترك في Google Play الذي يلغي بسبب مشكلات تقنية هو الأكثر ميلًا لطلب أمواله. وبالنسبة للطلبات المقدّمة بعد August 3, 2026، فإن رد المبلغ الذي يكسبه يكلّف المطوّر سعر الشراء مطروحًا منه رسوم خدمة Play، إضافة إلى رسوم البنك.

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

ما يخبرك به Google Play عن أسباب إلغاء الاشتراك

عندما يلغي المستخدم اشتراكه من مركز الاشتراكات في Play، يسأله Google عن السبب. ويصل الجواب إلى مورد الاشتراك الذي تحصل عليه من purchases.subscriptionsv2.get، تحت canceledStateContext. لا يوجد هذا الكائن إلا عندما يكون الاشتراك في حالة الإلغاء أو الانتهاء، وهو يوضح من أنهى الاشتراك: المستخدم، أو نظام Google، أو أنت، أو استبدال مثل تغيير الخطة.

عندما يكون المستخدم هو من ألغى، يحتوي الكائن userInitiatedCancellation على حقلين. يوضح cancelTime وقت الإلغاء. ويحمل cancelSurveyResult جواب الاستبيان.

سبب الاستبيانوصف Googleما يشير إليه غالبًا
CANCEL_SURVEY_REASON_NOT_ENOUGH_USAGEاستخدام غير كافٍ للاشتراكاستخدام منخفض، أي تكلفة قليلة أُنفقت على الحساب
CANCEL_SURVEY_REASON_TECHNICAL_ISSUESمشكلات تقنية أثناء استخدام التطبيقأقوى إشارة إلى استرداد أو رد مبلغ
CANCEL_SURVEY_REASON_COST_RELATEDمشكلات تتعلق بالتكلفةحساسية للسعر، وأحيانًا تجديد لم يتوقعه
CANCEL_SURVEY_REASON_FOUND_BETTER_APPوجد المستخدم تطبيقًا أفضلفاز منافس، ونادرًا ما يحدث نزاع
CANCEL_SURVEY_REASON_OTHERSأسباب أخرىاقرأ reasonUserInput، كلمات المستخدم نفسه
CANCEL_SURVEY_REASON_UNSPECIFIEDسبب استبيان إلغاء غير محددلا جواب يمكن العمل عليه

العمود الأخير هو قراءتنا نحن، لا قراءة Google. أما العمودان الأولان فمأخوذان مباشرة من مرجع API.

الإشعار لا يحمل السبب

يؤدي الاشتراك الملغى إلى إرسال إشعار المطوّر الفوري SUBSCRIPTION_CANCELED، من type 3. ويوضح Google صراحةً أن هذه الإشعارات لا تقول سوى أن حالة الشراء تغيّرت. لا تحتوي الحمولة على شيء مفيد غير رمز الشراء، لذا على معالجك أن يستدعي purchases.subscriptionsv2.get لقراءة جواب الاستبيان.

ما تعرضه Play Console

لا تحتاج إلى كتابة كود لرؤية الإجماليات. تتضمن تقارير الاشتراكات في Play Console بطاقة Cancellations التي تقسم التسرّب إلى طوعي وغير طوعي وآخر، وبطاقة Cancellation survey responses للمستخدمين الذين اختاروا الإجابة. ويمكن تنزيل الإجابات النصية الحرة من المستخدمين الذين اختاروا أخرى بصيغة CSV من بطاقة Other responses. يتطلب هذا التنزيل صلاحية View financial data، وهي الصلاحية نفسها التي تمنحها لأي أداة تقرأ طلباتك.

ما يخبرك به Apple، وما يغفله

لا يجري Apple أي استبيان إلغاء يصل إلى المطوّرين. أقرب حقل هو expirationIntent في معلومات التجديد الموقّعة، وهو يصف كيف انتهى الاشتراك، لا ما كان يفكر فيه العميل.

expirationIntentالمعنى لدى Appleالنوع الفرعي المقابل في EXPIRED
1ألغى العميل اشتراكهVOLUNTARY
2خطأ في الفوترة، مثل معلومات دفع غير صالحةBILLING_RETRY
3عدم الموافقة على زيادة سعر أو تحويل عرض كان يتطلب الموافقةPRICE_INCREASE
4لم يكن المنتج متاحًا للشراء عند التجديدPRODUCT_NOT_FOR_SALE
5سبب آخرلا يوجد نوع فرعي

الرمز 1 هو الوحيد الذي يصف قرارًا اتخذه العميل، ولا يقول شيئًا عن دافعه. العميل الذي غادر لأن التطبيق ظل يتعطل، والعميل الذي أنهى مشروعه ببساطة، يبدوان متطابقين.

الإشارة المخفية في AUTO_RENEW_DISABLED

هناك إشعار واحد من Apple يستحق نظرة أدق. فإشعار DID_CHANGE_RENEWAL_STATUS بالنوع الفرعي AUTO_RENEW_DISABLED يعني عادةً أن العميل أوقف التجديد التلقائي. لكن وثائق Apple تضيف حالة ثانية: يوقف App Store أيضًا التجديد التلقائي بعد أن يطلب العميل استردادًا.

إذن على iOS، قد يكون حدث إيقاف التجديد أول أثر لطلب استرداد. إذا كان الشراء منتجًا استهلاكيًا أو اشتراكًا يتجدد تلقائيًا، فقد يتبعه CONSUMPTION_REQUEST، ومن تلك اللحظة يكون أمامك 12 ساعة لإرسال بيانات الاستهلاك. أي حدث إيقاف تجديد يصل دون إجراء ظاهر في تطبيقك يستحق أن تعامله كتنبيه مبكر لتجهيز بيانات استخدام ذلك الحساب.

Apple وGoogle جنبًا إلى جنب

Google PlayApple App Store
يسأل المستخدم عن السببنعم، استبيان إلغاءلا يوجد استبيان مرئي للمطوّر
أين يوجد السببcanceledStateContext في purchases.subscriptionsv2expirationIntent في معلومات التجديد
نص حرreasonUserInput، فقط عند اختيار أخرىلا يوجد
من ألغىالمستخدم أو النظام أو المطوّر أو استبداليُستنتج من الرمز والنوع الفرعي
الإشعارSUBSCRIPTION_CANCELED، ثم استدعاء getDID_CHANGE_RENEWAL_STATUS، EXPIRED
يضيع إذا اشترك المستخدم من جديدنعم، يُمسح عند الاستعادةمعلومات التجديد تعكس الحالة الحالية
لوحة التحكمبطاقة Cancellation survey responsesلا شيء بخصوص الأسباب
بطاقات استبيان مطبوعة مفروزة في أكوام صغيرة على طاولة خشبية بجانب هاتف وكوب قهوة، بالطريقة التي يجمّع بها المطوّر أسباب إلغاء الاشتراك

متى يتحول الإلغاء إلى استرداد

الإلغاء يوقف الدفعة التالية. لكنه لا يعيد الدفعة الأخيرة. استرجاع المال يعتمد على مسار الاسترداد الذي يصل إليه العميل بعد ذلك، ومعظم هذه المسارات تجري من دونك.

  • على Google Play، يمكن للمشتري الحصول على استرداد بنفسه خلال 48 ساعة من الشراء، وGoogle هو من يقرر.
  • الاستردادات التي تتم عبر دعم Google أو Apple يقررها المتجر.
  • يطلب CONSUMPTION_REQUEST من Apple بيانات الاستهلاك لديك، ضمن مهلة 12 ساعة.
  • تطلب مراجعة رد المبلغ في Google Play أدلة عبر orders.reviewrefund، ضمن مهلة 24 ساعة. وقرار البنك في رد المبلغ نهائي.

سبب الإلغاء لا يغيّر أيًّا من هذه القواعد. ما يغيّره هو مدى سرعة معرفتك بالعميل غير الراضي، وما إذا كانت أدلتك جاهزة عندما يصل أحد المسارين اللذين يطلبانها.

كم يكلّفك كل سبب

جواب الاستبيان هو أيضًا مؤشر تقريبي على ما كلّفه الحساب حتى الآن لخدمته، وهو المال الذي يبقى على عاتقك بعد الاسترداد.

مشكلات تقنية

هذا هو السبب المكلف. استخدم العميل المنتج بما يكفي ليصادف مشكلات، لذا فقد دفعت ثمن الحوسبة وراء جلساته، واستدعاءات model API التي أحدثتها طلباته، وتخزين ما أنشأه، وأي مستحقات لصانع محتوى استخدم محتواه. وإذا حصل بعد ذلك على استرداد، يعود السعر وتبقى هذه التكاليف عليك. وإذا لجأ إلى بنكه على Google Play، فإن الطلب المقدّم بعد August 3, 2026 يكلّفك سعر الشراء مطروحًا منه رسوم خدمة Play، إضافة إلى رسوم البنك.

أسباب تتعلق بالتكلفة

شكوى السعر تكلّفك أقل مما تبدو، ما لم تخفِ وراءها تجديدًا غير متوقع. فهذه هي القصة المعتادة لرد المبلغ، لذا تحقّق مما إذا جاء الإلغاء مباشرة بعد دفعة تجديد، ومما إذا كانت تذكيرات التجديد قد أُرسلت.

استخدام غير كافٍ

الاستخدام المنخفض يعني تكلفة خدمة منخفضة، لذا فالاسترداد هنا يعيد في الغالب مالًا لم تنفق الكثير لكسبه. وهو أيضًا السبب الذي تُظهر فيه بيانات الاستهلاك الصادقة، إذا طلبها Apple، بالضبط ما استخدمه العميل وما لم يستخدمه.

إيجاد تطبيق أفضل

نادرًا ما يعترض هؤلاء العملاء على أي شيء. لقد انتقلوا إلى منافس. هذا السبب مفيد لقرارات المنتج، ولا يكاد يفيد أبدًا في الدفاع ضد الاسترداد.

روتين لقراءة أسباب الإلغاء

  • مع كل SUBSCRIPTION_CANCELED من Google Play، استدعِ purchases.subscriptionsv2.get واحفظ canceledStateContext مع رمز الشراء وcancelTime.
  • احفظ reasonUserInput حرفيًا عندما يكون السبب أخرى. فهو النص الحر الوحيد الذي يمنحك إياه أي من المتجرين.
  • مع كل DID_CHANGE_RENEWAL_STATUS من Apple يحمل AUTO_RENEW_DISABLED، سجّل الحدث واسحب بيانات استخدام ذلك الحساب، تحسبًا لوصول CONSUMPTION_REQUEST.
  • مع كل إشعار EXPIRED من Apple، سجّل النوع الفرعي وexpirationIntent حتى لا يختلط التسرّب الطوعي بإخفاقات الفوترة.
  • بالنسبة لإلغاءات Google Play التي تذكر مشكلات تقنية، افحص سجلات الأخطاء لذلك الحساب وتواصل مع العميل قبل أن يصل إلى بنكه.
  • احتفظ بسجلات استخدام لكل حساب، حتى يُرد على CONSUMPTION_REQUEST خلال 12 ساعة وعلى مراجعة رد المبلغ خلال 24.

الأسئلة الشائعة

كيف أعرف سبب إلغاء مشترك في Google Play؟
استدعِ purchases.subscriptionsv2.get واقرأ canceledStateContext.userInitiatedCancellation.cancelSurveyResult. يحمل حقل reason جواب الاستبيان، ويحمل reasonUserInput النص الحر عندما يختار المستخدم أخرى. كما تعرض Play Console الإجماليات في بطاقة Cancellation survey responses.
هل يخبر Apple المطوّرين بسبب إلغاء العميل للاشتراك؟
لا. ليس لدى Apple استبيان إلغاء مرئي للمطوّرين. يوضح حقل expirationIntent كيف انتهى الاشتراك، برموز تعني: العميل ألغى، أو خطأ في الفوترة، أو عدم الموافقة على زيادة السعر، أو المنتج غير متاح، أو سبب آخر، لكنه لا يكشف دافع العميل.
هل يتضمن إشعار SUBSCRIPTION_CANCELED سبب الإلغاء؟
لا. إشعارات المطوّر الفورية من Google Play لا تقول سوى أن حالة الشراء تغيّرت. اجلب الاشتراك عبر purchases.subscriptionsv2.get لقراءة السبب، واحفظه فورًا، لأن Google يمسح حقول الإلغاء إذا استعاد المستخدم اشتراكه.
هل يمكن أن يعني إشعار AUTO_RENEW_DISABLED من Apple طلب استرداد؟
نعم. تقول وثائق Apple إن النوع الفرعي AUTO_RENEW_DISABLED يشمل حالتين: أن يوقف العميل التجديد التلقائي، وأن يوقفه App Store بعد أن يطلب العميل استردادًا.
هل يمكنني سحب الوصول عندما يلغي المشترك؟
ليس على Google Play ما دام لا يزال مستحقًا. يقول Google إن المشترك الملغي يحتفظ بوصوله حتى نهاية دورة الفوترة، وإن سحب الوصول مبكرًا يخالف سياسة الاشتراكات في Google Play. استخدم expiryTime لتحديد موعد انتهاء الوصول.

المصادر وقراءات إضافية

RefundHalt

الطيار الآلي للاستردادات في App Store وGoogle Play

تابع القراءة

طلب الاسترداد التالي في طريقه إليك بالفعل.

أعد RefundHalt في الوقت الذي تستغرقه لقراءة رسالة دعم أخرى عن استرداد لم تتمكن من الاعتراض عليه.