كل المقالات
Deep diveمدة القراءة 8 دقائق

استرداد الاشتراكات لا يعمل مثل استرداد المشتريات لمرة واحدة، والمتجر الذي تعمل عليه هو من يقرّر مقدار ما لك من رأي

استرداد الاشتراك يعكس فترة فوترة كاملة، لا بيعة واحدة. على App Store تقرّر Apple ولا يعرف خادمك سوى النتيجة. على Google Play تختار أنت بنفسك استرداداً كاملاً أو تناسبياً. إليك كيف يتعامل كلّ متجر مع استرداد الاشتراكات، وكم يكلّفك استرداد واحد.

تقويم حائطي مُحاطة فيه تواريخ الفوترة الشهرية المتكرّرة بدوائر، وبطاقة ائتمان فوقه وقطع نقدية مدفوعة جزئياً إلى الخلف، يوضّح كيف يعكس استرداد الاشتراك فترة فوترة

أهم الخلاصات

  • استرداد الاشتراك ليس مثل استرداد المشتريات لمرة واحدة. الوحدة التي تُعكس هي فترة فوترة، وعلى كلا المتجرين يؤدّي استرداد طلب اشتراك إلى إلغاء الاشتراك وقطع الوصول.
  • على App Store، تقرّر Apple كلّ عملية استرداد اشتراك. يطلب العميل من Apple على reportaproblem.apple.com، وتحكم Apple، ولا يعرف خادمك النتيجة إلّا عبر إشعار REFUND أو REFUND_DECLINED أو REFUND_REVERSED.
  • حين تمنح Apple استرداد اشتراك، تحصل المعاملة على revocationDate ويُضبط autoRenewStatus للاشتراك على false، فيتوقّف التجديد ويفقد العميل الوصول.
  • تقيس Apple الاشتراك القابل للتجديد التلقائي بالوقت المنقضي، لا بمقاييس استخدامك. من بلغ ستة أشهر في خطّة سنوية يكون قد استهلك نحو 50 percent، وGRANT_PRORATED هو تفضيل الاسترداد الوحيد الذي يمكنك التعبير عنه له.
  • على Google Play تُصدر الاسترداد بنفسك. يأخذ purchases.subscriptionsv2.revoke إمّا fullRefund الذي يعيد كامل الفترة الحالية، أو proratedRefund الذي يعيد فقط وقت الحقّ غير المستخدَم.
  • الطلب الذي تردّه على Google Play يغيّر النتيجة. اردد أحدث طلب فيُزال الاشتراك فوراً وتُلغى التجديدات المستقبلية. اردد طلباً أقدم فيبقى الاشتراك نشطاً.
  • حدود Google Play صارمة. الطلبات الأقدم من ثلاث سنوات لا يمكن ردّها، والاستردادات الجزئية تعمل فقط على الطلبات المقدَّمة بعد March 2018، ولا تنطبق على التطبيقات المدفوعة، ولا يمكن عكس أي استرداد بعد إصداره.

ردّ اشتراك وردّ مشترى واحد داخل التطبيق يبدوان كالزرّ نفسه. ليسا كذلك. المشترى لمرة واحدة رسم واحد تعيده. الاشتراك رسم متكرّر يرتبط به حقّ حيّ، لذا يجب على استرداد الاشتراك أن يجيب عن سؤالين لا يطرحهما استرداد المرة الواحدة أبداً: كم من الفترة الحالية تعيد، وهل يظلّ الاشتراك يعمل. يجيب App Store وGoogle Play عن هذين السؤالين بطريقتين متعاكستين، والفجوة تحدّد كم من التحكّم لديك وكم من المال يغادر حسابك.

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

كيف يختلف استرداد الاشتراكات عن استرداد المرة الواحدة

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

الوحدة التي تُعكس هي فترة فوترة

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

الفرق الحقيقي هو من يقرّر

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

كيف يتعامل App Store مع استرداد اشتراك

في جانب Apple أنت متفرّج بميكروفون صغير. العميل يتحدّث إلى Apple، وApple تتّخذ القرار، وخادمك يقرأ النتيجة.

العميل يطلب من Apple، وApple تحكم

يطلب عميل App Store استرداد اشتراك على reportaproblem.apple.com، لا منك. تراجع Apple الطلب وفق إشاراتها الخاصّة وتقرّر. أنت لا توافق عليه، ولا يوجد زرّ في وحدة تحكّم Apple يتيح لك إصدار استرداد اشتراك كما يفعل Google Play. لدى Apple ما يصل إلى 90 days من الشراء لقبول طلب للمراجعة، وحالما تحكم، فالقرار قرار Apple.

ما الذي يراه خادمك حين يصل الاسترداد

تعرف النتيجة عبر App Store Server Notifications V2. الاسترداد الممنوح يصل كإشعار REFUND، وتحمل المعاملة الآن revocationDate يحدّد متى ينبغي أن ينتهي الوصول. يُضبط autoRenewStatus للاشتراك على false، فيتوقّف التجديد ويفقد العميل الحقّ. إن رفضت Apple الطلب تتلقّى REFUND_DECLINED، وإن ألغت Apple لاحقاً استرداداً كانت قد منحته تتلقّى REFUND_REVERSED ويعود الاشتراك. مهمّتك أن تقرأ هذه وتقلب الوصول، لا أن تُدلي بصوت.

الإشعارماذا يعنيماذا تفعل
REFUNDApple منحت الاسترداد؛ تحصل المعاملة على revocationDateألغِ الوصول، اعتبر autoRenewStatus بقيمة false
REFUND_DECLINEDApple رفضت طلب استرداد العميللا شيء يتغيّر؛ يبقى الاشتراك قائماً
REFUND_REVERSEDApple ألغت استرداداً كانت قد منحتهاستعد الوصول والبيعة

Apple تقيس الاشتراك بالوقت، لا بمقاييسك

للمُستهلَك (consumable)، يمكنك إخبار Apple بمقدار ما استُخدم عبر بيانات الاستهلاك. أمّا للاشتراك القابل للتجديد التلقائي، فتحسب Apple الاستهلاك من الوقت المنقضي بنفسها. مثال Apple نفسها عميل بلغ ستة أشهر في اشتراك سنوي، وقد استهلك نحو 50 percent منه. إذاً مقاييس استخدامك لا تحدّد الرقم لاشتراك. الرافعة الوحيدة التي يمكنك سحبها هي refundPreference، وللاشتراك القيمة ذات الصلة هي GRANT_PRORATED، التي تقول إنّك تفضّل أن تعيد Apple الجزء غير المستخدَم فقط. إنّه تفضيل، لا قرار. Apple تظلّ هي من يحكم.

كيف يتعامل Google Play مع استرداد اشتراك

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

كامل أو تناسبي، والقرار قرارك

الطريقة الحالية لردّ وإلغاء اشتراك هي purchases.subscriptionsv2.revoke، تُستدعى مع revocationContext. مرّر fullRefund فينهي Google Play الاشتراك ويعيد كامل مبلغ فترة الفوترة الحالية. مرّر proratedRefund فينهي Google Play الاشتراك ويعيد فقط وقت الحقّ المتبقّي غير المستخدَم. الطريقة الأقدم لم تكن تستطيع سوى الاستردادات الكاملة، وهذا سبب استخدام الأحدث. الإلغاء التناسبي جسم من سطرين، revocationContext يلفّ proratedRefund، وتستبدله بـ fullRefund للفترة كلّها. أيّ إلغاء يطلق إشعار مطوّر فوري SUBSCRIPTION_REVOKED، وهو إشارتك لقطع الوصول.

الطلب الذي تردّه يغيّر ما يحدث

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

الإجراءالطلب المُردّماذا يحدث للاشتراك
ردّ أحدث طلبأحدث فترة فوترةيُزال فوراً، وتُلغى التجديدات المستقبلية
ردّ طلب أقدمفترة فوترة سابقةيبقى نشطاً، ويواصل التجديد
subscriptionsv2.revoke، كامل أو تناسبيالفترة الحاليةيُنهى الآن، ويُرسَل SUBSCRIPTION_REVOKED
هاتفان ذكيان جنباً إلى جنب على مكتب داكن يعرضان شاشتي دفع اشتراك مع كومة جزئية من العملات المُعادة بينهما، يوضّح استرداد اشتراك كامل مقابل تناسبي على App Store وGoogle Play

الحدود التي تُعثِر المطوّرين

بضع حوافّ حادّة تمسك الناس، ولا شيء منها في المسار السلس.

  • الطلبات الأقدم من ثلاث سنوات لا يمكن ردّها إطلاقاً.
  • الاستردادات الجزئية تعمل فقط على الطلبات المقدَّمة بعد March 2018، ولا تعمل أبداً على مشتريات التطبيقات المدفوعة.
  • يمكنك تكديس استردادات جزئية متعدّدة على طلب واحد، لكن ليس حتى إجمالي الطلب أو ما بعده.
  • لا يمكن عكس استرداد بعد إصداره.

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

ما الذي يكلّفك إيّاه استرداد الاشتراك فعلاً

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

كامل مقابل تناسبي قرار مالي

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

نوع الاستردادما يستعيده العميلما تحتفظ به
استرداد كاملالفترة الحالية بأكملها، 10.00لا شيء من هذه الفترة
استرداد تناسبيالـ 40 percent غير المستخدَمة، نحو 4.00الـ 60 percent المستخدَمة، نحو 6.00

التكاليف التي لا تعود أبداً

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

كيف تتعامل مع استرداد الاشتراكات دون أن يراقب شخص

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

اقرأ النتيجة وألغِ الوصول على كلا المتجرين

على App Store، أنصت لـ REFUND وREFUND_DECLINED وREFUND_REVERSED، واستخدم revocationDate وautoRenewStatus لإنهاء الوصول أو استعادته تلقائياً. على Google Play، أنصت لـ SUBSCRIPTION_REVOKED وإشارات المشتريات المُبطَلة وافعل الشيء نفسه. هذه هي السباكة التي يشغّلها RefundHalt نيابةً عنك: إشعار يدخل، حساب يُطابَق، وصول يُقلَب، لا شخص في الحلقة.

أبقِ الأدلّة جاهزة قبل النزاع

النوافذ الضيّقة التي تطلب إدخالك فعلاً، وهي CONSUMPTION_REQUEST من Apple البالغة 12 hours على المُستهلَكات ومراجعة ردّ المبلغ من Google Play البالغة 24 hours، لا تفيد إلّا إن كان الدليل موجوداً أصلاً. أرفق مُعرّف حساب بكلّ عملية شراء، appAccountToken بصيغة UUID على Apple وsetObfuscatedAccountId مُجزّأ بطول 64 characters أو أقلّ على Google Play، وسجّل ما سلّمته كلّ فترة مدفوعة. عندئذٍ حين يصل رمز، تكون القضية مبنيّة أصلاً، ويكون الجواب داخل النافذة عمل آلة، لا سباق محموم.

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

هل ردّ اشتراك يختلف عن ردّ مشترى لمرة واحدة؟
نعم. المشترى لمرة واحدة طلب واحد تعيده. الاشتراك سلسلة طلبات بحقّ حيّ، لذا يتصرّف استرداد الاشتراك في فترة فوترة واحدة ويقرّر أيضاً إن كان الاشتراك سيظلّ يعمل. على كلٍّ من App Store وGoogle Play، يؤدّي ردّ طلب اشتراك إلى إلغاء الاشتراك وإنهاء الوصول، وغالباً ما يمكنك الاختيار بين إعادة الفترة الكاملة أو الجزء غير المستخدَم فقط.
هل يمكن لمطوّر أن يصدر استرداد اشتراك على App Store مباشرة؟
لا. Apple تقرّر استرداد اشتراكات App Store. يطلب العميل واحداً على reportaproblem.apple.com، وتحكم Apple، وتعرف أنت النتيجة عبر إشعار REFUND أو REFUND_DECLINED أو REFUND_REVERSED. الإدخال الوحيد الذي يمكنك تقديمه هو refundPreference، مثل GRANT_PRORATED، وتعامله Apple كتفضيل، لا كقرار.
كيف تصدر استرداد اشتراك تناسبياً على Google Play؟
استدعِ purchases.subscriptionsv2.revoke مع revocationContext مضبوط على proratedRefund. ينهي Google Play الاشتراك ويعيد فقط وقت الحقّ المتبقّي غير المستخدَم، ثمّ يرسل إشعار SUBSCRIPTION_REVOKED. مرّر fullRefund بدلاً منه لإعادة الفترة الحالية بأكملها. الطريقة الأقدم للإلغاء لم تكن تستطيع سوى الاستردادات الكاملة.
لماذا لم يُلغِ استرداد Google Play الخاصّ بي الاشتراك؟
لأنّك رددت طلباً أقدم في السلسلة. على Google Play، ردّ أحدث طلب يُزيل الاشتراك فوراً ويلغي التجديدات المستقبلية، لكنّ ردّ طلب أقدم يردّ تلك الفترة بينما يبقى الاشتراك نشطاً. معامل revoke على orders.refund لا يلغي إلّا حين يكون الطلب هو الأحدث، لذا لإنهاء اشتراك نشط استخدم purchases.subscriptionsv2.revoke.
إلى أيّ مدى في الماضي يمكنك ردّ طلب اشتراك؟
على Google Play، الطلبات الأقدم من ثلاث سنوات لا يمكن ردّها. الاستردادات الجزئية تعمل فقط على الطلبات المقدَّمة بعد March 2018 ولا تعمل أبداً على التطبيقات المدفوعة، ولا يمكن عكس أي استرداد بعد إصداره. على App Store، تقبل Apple طلبات استرداد العملاء لمدّة تصل إلى 90 days من الشراء وتقرّر كلّ واحد بنفسها.

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

RefundHalt

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

تابع القراءة

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

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