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

أهم الخلاصات
- استرداد ترقية الاشتراك تلقائي. عندما ينتقل العميل إلى فئة أعلى في منتصف الدورة، يمنح المتجر رصيدًا أو يسترد الأيام غير المستخدمة في الخطة القديمة دون أن يسألك، ويُقتطع المبلغ من العائدات التي سجّلتها بالفعل.
- على App Store، تدخل الترقية حيّز التنفيذ فورًا وتسترد Apple المبلغ التناسبي للاشتراك الأصلي. أما التخفيض فينتظر حتى تاريخ التجديد التالي ولا يسترد شيئًا.
- لا ترسل Apple مبلغ استرداد الترقية إلى خادمك. تُوسم المعاملة المُرقّاة بعلامة isUpgraded، لكن حقل السعر لا يزال يعرض السعر الكامل للفئة الجديدة، لذا تأتي الإيرادات التي تحسبها من App Store Server Notifications مبالغًا فيها.
- تقارير App Store Connect المالية هي المكان الوحيد الذي يُحتسب فيه استرداد الترقية التناسبي. يقول موظفو Apple إن المبلغ غير متاح عبر App Store Server API أو Notifications أو StoreKit.
- لا تُعيد Google Play أموالًا إلى البطاقة عند الترقية. بل تمنح رصيدًا للوقت غير المستخدم أو تحصّل فرق السعر، ويعتمد ما يحدث على وضع الاستبدال الذي تضبطه. الوضع الافتراضي هو WITH_TIME_PRORATION.
- استرداد الترقية ليس طلب استرداد من العميل. لا يوجد CONSUMPTION_REQUEST ولا مراجعة ردّ مبالغ، لذا لا توجد نافذة 12 ساعة أو 24 ساعة ولا شيء للاعتراض عليه. أنت تُسوّيه، لا تُنازع فيه.
- وضع الاستبدال قرار متعلق بالإيرادات. يمنح WITH_TIME_PRORATION العميل وقتًا مدفوعًا إضافيًا تقدّمه أنت بتكلفة الفئة الأعلى، بينما يحصّل CHARGE_PRORATED_PRICE الفرق الآن، لذا فإن الوضع الافتراضي الخاطئ يسرّب هامش الربح ترقيةً تلو الأخرى.
ينقر العميل على الترقية، فينتقل من فئة 5 دولارات إلى فئة 10 دولارات، وتسجّل أنت عملية بيع أكبر. يفعل المتجر شيئًا آخر في اللحظة نفسها، وأنت لا تراه أبدًا. يمنح ذلك العميل استردادًا لترقية الاشتراك عن الأيام التي دفع مقابلها بالفعل في الخطة القديمة، ويُقتطع ذلك المبلغ من عائداتك. لم يسألك أحد. على App Store، لن تجد المبلغ حتى في الأحداث التي يستقبلها خادمك.
هذا ليس الاسترداد الذي يمكنك مقاومته. ليس CONSUMPTION_REQUEST من Apple وليس مراجعة ردّ مبالغ من Google Play. إنه احتساب تناسبي، مدمج في طريقة سماح المتجرين للناس بتغيير الخطط، ويعمل من تلقاء نفسه في كل مرة يرتقي فيها المشترك فئة. إليك ما هو استرداد الترقية فعليًا على كل متجر، ولماذا تُبقي Apple المبلغ بعيدًا عن خادمك، وكم يكلّفك إعداد Google Play الخاطئ.
ما هو استرداد ترقية الاشتراك فعليًا
استرداد الترقية هو تسوية المتجر مقابل وقت دفع العميل ثمنه لكنه لن يستخدمه. لا علاقة له بشكوى أو نزاع أو سياسة الاسترداد لديك. يعمل بناءً على آلية تغيير الخطة وحدها.
إنه احتساب تناسبي، لا شكوى عميل
عندما ينتقل المشترك إلى فئة أعلى في منتصف فترة الفوترة، يكون قد دفع بالفعل حتى نهاية تلك الفترة بالسعر القديم. يعوّضه المتجر عن الجزء غير المستخدم. تُصدر Apple استردادًا تناسبيًا للاشتراك الأصلي. وتمنح Google Play رصيدًا بالقيمة غير المستخدمة للخطة الجديدة. لا يمرّ أيٌّ منهما عبر مسار يمكنك الرد عليه، ولا ينتظر أيٌّ منهما موافقتك.
الترقية وحدها تُطلقه
اتجاه التغيير يحدّد المال. على App Store، الترقية هي انتقال إلى منتج ذي مرتبة أعلى في مجموعة الاشتراك نفسها، وهذا الانتقال وحده فوري ومسترد. أما التخفيض فهو انتقال إلى مرتبة أدنى، ويدخل حيّز التنفيذ عند التجديد التالي دون استرداد. والانتقال الجانبي هو انتقال بين منتجات بالمرتبة نفسها، ويعتمد توقيته على المدد المعنية. رتّب المنتجات ترتيبًا خاطئًا في App Store Connect وسيتصرّف التغيير الذي تظنه ترقية كشيء آخر.
| تغيير App Store | متى يدخل حيّز التنفيذ | ماذا يحدث للمال |
|---|---|---|
| الترقية إلى فئة أعلى | فورًا | تسترد Apple المبلغ التناسبي للاشتراك الأصلي |
| التخفيض إلى فئة أدنى | في تاريخ التجديد التالي | لا استرداد، يتجدّد بالسعر الأدنى |
| انتقال جانبي، المدة نفسها مدفوعة مقدمًا | فورًا | يبدأ اشتراك جديد، وتستمر الخدمة المدفوعة |
| انتقال جانبي، مدد مختلفة | في تاريخ التجديد التالي | لا استرداد في منتصف الدورة |
لماذا يخفي App Store استرداد الترقية عن خادمك
هنا الجزء الذي يُفسد تقارير الإيرادات. تُصدر Apple استرداد الترقية، لكنها لا تُخبر خادمك أبدًا بمقدار ما استردته.
isUpgraded هو الإشارة الوحيدة، والسعر خاطئ
تصل المعاملة الجديدة وقد ضُبط isUpgraded على true، ما يخبرك بحدوث تغيير في الخطة. وحقل السعر في تلك المعاملة لا يزال يعرض سعر العرض الكامل للفئة الجديدة، لا المبلغ الذي استعادته Apple من القديمة. لا يحمل أي App Store Server Notification رقم الاسترداد. وبكلمات Apple نفسها في منتديات المطوّرين، المبلغ التناسبي المسترد غير متاح عبر App Store Server API أو Notifications أو StoreKit، وتقارير App Store Connect هي مصدرك لكل أغراض المحاسبة المالية.
التقرير المالي هو السجل الصادق الوحيد
تحتسب تقارير App Store Connect المالية وتقارير المبيعات استرداد الترقية التناسبي، لأن تلك التقارير هي ما يحدّد المبلغ الذي تدفعه لك Apple فعليًا. وهذا يجعلها مصدر الحقيقة لأي مشترك سبق أن ارتقى فئته. ابنِ محاسبتك من التقارير، وعامِل أحداث الخادم كإشارات استحقاق، لا كإيرادات.

كم يكلّفك، بالمال
استرداد الترقية ليس خطأ تقريب. إنه عائدات حقيقية، وعلى Google Play تختار أيضًا مقدار الوقت غير المستخدم الذي تتخلى عنه.
الاسترداد عائدات سجّلتها بالفعل
خُذ مشتركًا في فئة 9.99 شهريًا يرتقي إلى 19.99 في اليوم 20 من دورة مدتها 30 يومًا. نحو ثلث الشهر غير مستخدم، لذا تسترد Apple نحو 3.33 من أصل 9.99 الأصلية. أنت لا تخسر البيع كله. أنت تعيد الجزء الذي دفعه العميل مقدمًا ولن يستخدمه. المهم أن الإعادة تلقائية وتقع على البيع القديم، فتتقلّص العائدات التي حسبتها بالفعل بعد وقوعها. اضرب ذلك في كل مشترك يرتقي في منتصف الدورة وستجده بندًا ينبغي أن تراه، لا فجوة تكتشفها في الدفعة.
على Google Play، وضع الاستبدال هو رافعة التكلفة الحقيقية
لا تُعيد Google Play أموالًا إلى البطاقة عند الترقية. بل تُسوّي الوقت غير المستخدم بإحدى عدة طرق، وتختار أنت أيها بتمرير وضع استبدال عند إطلاق مسار الشراء. يحدّد الاختيار ما إذا كنت ستمنح العميل وقتًا مدفوعًا أم تحصّل منه الفرق. توصي Google بـ CHARGE_PRORATED_PRICE للترقيات وبـ DEFERRED للتخفيضات، لكن الوضع الافتراضي للمكتبة هو WITH_TIME_PRORATION، لذا فإن مسارًا لم تُعِدّه قط يمنح الوقت بهدوء.
| وضع استبدال Google Play | متى يدخل حيّز التنفيذ | ماذا يحدث للوقت غير المستخدم |
|---|---|---|
| WITH_TIME_PRORATION (الافتراضي) | فورًا | يُضاف كرصيد وقت إضافي على الخطة الجديدة، ويُؤجَّل تاريخ الفوترة التالي |
| CHARGE_PRORATED_PRICE (للترقية فقط) | فورًا | يُحصَّل فرق السعر للفترة المتبقية الآن، ويبقى تاريخ الفوترة دون تغيير |
| WITHOUT_PRORATION | فورًا | لا تسوية الآن، ويبدأ السعر الجديد عند التجديد التالي |
| CHARGE_FULL_PRICE | فورًا | يُحصَّل السعر الكامل للخطة الجديدة الآن، وتُرحَّل القيمة المتبقية أو تُحتسب تناسبيًا |
| DEFERRED | عند التجديد التالي | تستمر الخطة الحالية حتى تنتهي، ثم تبدأ الخطة الجديدة |
كيف تمنع عمليات استرداد الترقية من مفاجأة دفاترك
لا يمكنك إيقاف الاحتساب التناسبي، ولن ترغب في ذلك، لأنه ما يجعل تغيير الخطة عادلًا للعميل. ما يمكنك فعله هو أن تراه، وتسعّره، وتفصله عن عمليات الاسترداد التي يمكنك فعلًا الاعتراض عليها.
سوِّ ترقيات Apple مع التقرير المالي
لأن مبلغ الاسترداد لا يصل إلى خادمك أبدًا، فإن تقارير App Store Connect المالية وتقارير المبيعات هي المكان الوحيد الذي يظهر فيه استرداد الترقية التناسبي. سوِّ إيرادات المشتركين مقابل تلك التقارير كل فترة، ولا تحسب الإيرادات من مجموع متراكم لـ Server Notifications. علامة isUpgraded تخبرك بحدوث تغيير. والتقرير يخبرك بكم كلّف.
اختر وضع استبدال Google Play عن قصد
مرِّر وضع استبدال لكل تغيير خطة بشكل متعمَّد. استخدم CHARGE_PRORATED_PRICE حين تريد تحصيل فرق السعر الآن عند الترقية. واترك WITH_TIME_PRORATION فقط حين تقصد منح العميل الوقت المتبقي. واستخدم DEFERRED للتخفيضات كي تحتفظ بالإيراد الحالي حتى نهاية المدة. الوضع الافتراضي قرار، والوضع الافتراضي الخاطئ يتنازل عن هامش الربح ترقيةً تلو الأخرى.
افصل عمليات استرداد الترقية عن عمليات الاسترداد التي يمكنك الاعتراض عليها
استرداد الترقية تلقائي ونهائي بحكم التصميم. إنه ليس عميلًا يطلب استعادة أمواله. عمليات الاسترداد التي يمكنك فعلًا التأثير فيها هي التي يبدأها العميل، حيث ترسل Apple CONSUMPTION_REQUEST وتمنحك 12 ساعة للرد، وحيث تفتح Google Play مراجعة ردّ مبالغ عبر orders.reviewrefund بنافذة 24 ساعة. صنّف بياناتك كي لا يختلط الأمران أبدًا. بند تُسوّيه. وبند آخر تُجيب عليه، والوقت يجري.
النسخة المختصرة
عندما يرقّي العميل اشتراكًا، يُسوّي المتجر الوقت غير المستخدم له تلقائيًا. تسترد Apple المبلغ التناسبي للخطة القديمة فورًا ولا ترسل الرقم إلى خادمك أبدًا، لذا فإن تقارير App Store Connect المالية هي السجل الدقيق الوحيد. تمنح Google Play رصيدًا للوقت أو تحصّل الفرق حسب وضع الاستبدال الذي تضبطه، ويمنح الوضع الافتراضي العميل وقتًا مدفوعًا تقدّمه أنت بالتكلفة. لا شيء من ذلك يمرّ عبر CONSUMPTION_REQUEST أو مراجعة ردّ مبالغ، فلا شيء للاعتراض عليه. سوِّ استرداد الترقية، واضبط وضع Google Play عن قصد، وافصله عن عمليات الاسترداد التي لا يزال بإمكانك مقاومتها.
الأسئلة الشائعة
- هل يطلب استرداد ترقية الاشتراك موافقتي؟
- لا. استرداد ترقية الاشتراك تلقائي. عندما ينتقل العميل إلى فئة أعلى في منتصف الدورة، يُسوّي المتجر الوقت غير المستخدم في الخطة القديمة من تلقاء نفسه، دون أي طلب إليك ودون نافذة للرد. تسترد Apple المبلغ التناسبي للاشتراك الأصلي، وتمنح Google Play رصيدًا للوقت غير المستخدم أو تحصّل فرق السعر حسب وضع الاستبدال الذي تضبطه.
- لماذا لا تتطابق إيرادات App Store مع دفعتي بعد الترقيات؟
- لأن Apple لا ترسل مبلغ استرداد الترقية إلى خادمك. تحمل المعاملة المُرقّاة isUpgraded مضبوطًا على true، لكن حقل السعر لا يزال يعرض السعر الكامل للفئة الجديدة، ولا يتضمّن أي App Store Server Notification الاسترداد. الإيرادات المحسوبة من أحداث الخادم تحتسب البيع الجديد وتغفل الاسترداد على الخطة القديمة، فتأتي مرتفعة حتى تُسوّيها مقابل تقارير App Store Connect المالية.
- هل تُعيد Google Play أموالًا إلى البطاقة عند ترقية العميل؟
- لا. تعامل Google Play الوقت غير المستخدم كرصيد، لا كاسترداد نقدي. حسب وضع الاستبدال، إما أن تمنح رصيدًا بالوقت المتبقي للخطة الجديدة وتؤجّل تاريخ الفوترة التالي، أو تحصّل فرق السعر للفترة المتبقية. الوضع الافتراضي هو WITH_TIME_PRORATION، الذي يمنح رصيدًا بالوقت.
- هل يمكنني الاعتراض على استرداد ترقية الاشتراك؟
- لا. استرداد الترقية ليس طلب استرداد من العميل. لا يوجد CONSUMPTION_REQUEST من Apple ولا مراجعة ردّ مبالغ من Google Play، لذا لا توجد نافذة 12 ساعة أو 24 ساعة ولا شيء لإرساله. أنت تُسوّي استرداد الترقية. ولا تعترض إلا على عمليات الاسترداد وردّ المبالغ التي يبدأها العميل.
- هل يمنح التخفيض العميل استردادًا؟
- لا. على App Store، يدخل التخفيض حيّز التنفيذ في تاريخ التجديد التالي ولا يسترد شيئًا، لأن العميل يحتفظ بالمستوى الأعلى حتى تنتهي الفترة المدفوعة. وعلى Google Play، الطريقة الموصى بها للتعامل مع التخفيض هي وضع الاستبدال DEFERRED، الذي يبقي الخطة الحالية حتى تنتهي صلاحيتها ثم يبدأ الخطة الأدنى.
- أي وضع استبدال في Google Play ينبغي أن أستخدم للترقية؟
- توصي Google بـ CHARGE_PRORATED_PRICE للترقيات، وهو يحصّل فرق السعر للفترة المتبقية فورًا ويترك تاريخ الفوترة دون تغيير. أما الوضع الافتراضي WITH_TIME_PRORATION فيمنح بدلًا من ذلك رصيدًا بالوقت غير المستخدم كخدمة إضافية في الفئة الأعلى، لذا استخدمه فقط حين تنوي التخلي عن ذلك الوقت.
المصادر وقراءات إضافية
- Apple Developer: Auto-renewable subscriptions (upgrade, downgrade, and crossgrade behavior and prorated refunds)
- Apple Developer Forums: Retrieving the prorated refund amount after an upgrade (Apple staff on isUpgraded, the price field, and financial reports as the source)
- Android Developers: BillingFlowParams.SubscriptionUpdateParams.ReplacementMode (all replacement mode constants)
- Android Developers: About subscriptions (proration, default replacement mode, upgrade and downgrade recommendations)
- Google Play Developer API: Method orders.reviewrefund (chargeback review, 24 hours)
- Apple Developer: Send Consumption Information (CONSUMPTION_REQUEST response window)
RefundHalt
الطيار الآلي للاستردادات في App Store وGoogle Play
تابع القراءة
عمليات الشراء داخل التطبيق غير المصرح بها التي يجريها الأطفال تُرَدُّ أموالها إلى ولي الأمر في كل مرة تقريبًا، وأنت من يتحمل التكلفة
عندما يشتري طفل حزمة عملات على هاتف أحد الوالدين، يقوم كل من Apple وGoogle برد المبلغ ولا يسألك أي منهما أولًا. الجهات التنظيمية صممت الأمر بهذه الطريقة. إليك كيف تعمل عمليات رد الأموال هذه عن مشتريات داخل التطبيق غير المصرح بها في كل متجر، ونافذة الـ 15 دقيقة التي يذهب فيها المال، وكم تكلفك عملية واحدة فعليًا.
ضريبة استرداد التطبيق لم تكن ملكك قط، لذا يكلفك الاسترداد حصتك، لا الإجمالي المكتوب على الإيصال
استرد قيمة عملية شراء داخل التطبيق وسيُظهر الإيصال السعر مضافًا إليه الضريبة عائدين. الضريبة لم تكن مالك قط. تجمعها Apple وGoogle وتوردها بصفتهما تاجر السجل، ثم تعكسانها عند الاسترداد دون المساس بحصتك. إليك ما يكلفه الاسترداد فعلًا، والإعداد الوحيد الذي تصبح فيه الضريبة على عاتقك.