كل نوع من أنواع الشراء داخل التطبيق يُستردّ بطريقة مختلفة، واثنان فقط منها يطلبان جانبك يومًا
إن الـ Consumables والـ non-consumables والـ auto-renewable subscriptions والـ non-renewing subscriptions، كل منها يُستردّ وفق قواعده الخاصة. بعضها يمكن استعادته، وبعضها يختفي بمجرد إنفاقه، واثنان فقط، طلب الاسترداد للـ consumable وطلب الاشتراك، يطلبان من المطوّر دليلًا. إليك كيف يغيّر نوع الشراء داخل التطبيق الذي تبيعه ما يفعله الاسترداد بك.

أهم الخلاصات
- توجد أربعة أنواع للشراء داخل التطبيق على App Store، وهي consumable وnon-consumable وauto-renewable subscription وnon-renewing subscription، ويُستردّ كل منها وفق قواعد مختلفة. أما Google Play فيصنّف الكتالوج نفسه إلى one-time products وsubscriptions.
- مساران فقط من Apple يطلبان من المطوّر دليلًا قبل البتّ في الاسترداد، وهما الـ CONSUMPTION_REQUEST الخاص بالـ consumable و، منذ WWDC24، الـ CONSUMPTION_REQUEST الخاص بالـ auto-renewable subscription. أما الـ non-consumables والـ non-renewing subscriptions فنادرًا ما تفتح تلك النافذة أصلًا.
- تحمل الـ consumables أكبر قدر من مخاطر الاسترداد. فهي تُنفَق عند التسليم، ولا يمكن استعادتها، وتختفي قيمتها قبل وصول الاسترداد، وهذا بالضبط سبب طلب Apple لبيانات الاستهلاك الخاصة بك عليها.
- الـ non-consumables دائمة وقابلة للاستعادة، لذا على الاسترداد أن يسحب صلاحية ما يزال حساب العميل يتذكرها. وعلى Google Play، أي عملية شراء لا تؤكّدها خلال 72 hours تُستردّ تلقائيًا ويُسحب الوصول.
- تُستردّ الـ auto-renewable subscriptions وفق ساعة. فـ Apple يحسب مقدار ما استُهلك من الوقت المنقضي، لا من رقم ترسله، لذا مهمتك هي refundPreference صادق ودليل الاستخدام الذي يدعمه.
- على App Store وحده Apple يمكنه إصدار استرداد لشراء داخل التطبيق. أما على Google Play فيمكنك أنت استرداد طلب بنفسك من Play Console، مما يجعل نوع المنتج الذي بعته قرارك أنت لتتحمّله.
- أيًا كان النوع، يعيد الاسترداد عمولة المتجر إلى العميل لكنه لا يعيد إنفاقك أبدًا. فالحوسبة واستدعاءات الـ API والتخزين والمدفوعات التي أطلقها الـ consumable بالفعل تبقى ضائعة.
إن نوع الشراء داخل التطبيق الذي اخترته في App Store Connect أو Play Console يقرّر أكثر من مجرد كيفية بيع المنتج. فهو يقرّر كيف يتصرف الاسترداد عند وقوعه، وما إذا كان العميل يستطيع استعادة العنصر مجانًا بعد ذلك، وما إذا كان سيُطلب منك جانبك يومًا قبل أن يتحرك المال. إن حزمة عملات وفتحًا مدى الحياة واشتراكًا شهريًا وتذكرة موسم لمرة واحدة هي أربعة كائنات قانونية وتقنية مختلفة، وقواعد الاسترداد تعاملها كذلك. معظم المطوّرين يشحنونها جميعًا عبر شيفرة الشراء نفسها ثم يتساءلون لماذا تبدو عمليات الاسترداد غير متسقة. إنها ليست غير متسقة. إنها خاصة بالنوع.
إليك ما هو كل نوع من أنواع الشراء داخل التطبيق، وكيف يصيبه الاسترداد، ولماذا اثنان فقط من الأربعة يوجّهان القرار عبر خادمك.
الأنواع الأربعة للشراء داخل التطبيق، ولماذا تنقسم عمليات الاسترداد على أساسها
يعرّف Apple أربعة أنواع من المنتجات. الـ consumable يُستهلك ويُشترى من جديد، مثل عملة اللعبة والتلميحات وإعادة تعبئة الطاقة. والـ non-consumable يُشترى مرة واحدة ويُحتفظ به إلى الأبد، مثل فتح النسخة الاحترافية وترقية إزالة الإعلانات وحزمة مستويات قابلة للتنزيل. والـ auto-renewable subscription يفوتر على دورة متكررة حتى يلغي العميل. والـ non-renewing subscription يمنح وصولًا لمدة ثابتة لا تتجدد من تلقاء نفسها، مثل موسم من المحتوى يُباع كمدة واحدة.
يصنّف Google Play الكتالوج نفسه بشكل مختلف لكنه يصل إلى المكان ذاته. فهو يقسّم المنتجات إلى one-time products وsubscriptions، ويُوسم الـ one-time product بأنه consumable أو لا بحسب ما إذا كان تطبيقك يستهلكه بعد الشراء. الكلمات تختلف. أما عواقب الاسترداد فلا.
| نوع الشراء داخل التطبيق | قابل للاستعادة بعد الاسترداد | القيمة وقت الاسترداد | هل يطلب Apple دليلك |
|---|---|---|---|
| Consumable | لا، لا يمكن استعادته | مُنفَق بالفعل عادةً | نعم، CONSUMPTION_REQUEST |
| Non-consumable | نعم، مرتبط بالحساب | ما زال محفوظًا، تُسحب الصلاحية | نادرًا |
| Auto-renewable subscription | نعم، أثناء النشاط | متناسب مع الوقت المنقضي | نعم، منذ WWDC24 |
| Non-renewing subscription | على تطبيقك استعادته | المدة انقضت جزئيًا | نادرًا |
الـ consumables هي النوع الذي يستهدفه احتيال الاسترداد فعلًا
الـ consumable هو أصعب حالة استرداد ستواجهها، وليس صدفة أنه النوع الذي بنى Apple طلب الاستهلاك حوله. في اللحظة التي يشتري فيها عميل 10,000 عملة ويمنحها خادمك، تكون القيمة قد سُلّمت. فإن أنفقوا تلك العملات ثم قدّموا طلب استرداد، يستطيع المتجر إعادة أموالهم، لكن العملات ذهبت وكذلك ما كلّفك الوفاء بها. وأدوات Apple نفسها تعكس هذا، فالـ consumable يغادر سجل المعاملة بمجرد اكتماله ولا يحمل أبدًا تاريخ إلغاء، لأنه لا شيء دائم لإلغائه.
لهذا فإن الـ consumable هو نوع المنتج الذي يُثمر فيه الدليل. عندما يطلب عميل استردادًا على consumable، يرسل Apple إلى خادمك CONSUMPTION_REQUEST وينتظر حتى 12 hours لاستدعاء Send Consumption Information. في ذلك الاستدعاء تضبط deliveryStatus و، عندما تكون قد سلّمت، consumptionPercentage. النسبة عدد صحيح بوحدات milliunits من 0 إلى 100,000، حيث تعني 100,000 أن العميل استخدم الشراء بأكمله. رصيد عملات تُظهر سجلاتك أنه أُنفق بالكامل هو 100,000 يمكنك الإبلاغ عنها، وهو أقوى حقيقة منفردة يمكنك وضعها أمام ادعاء شراء غير مقصود.
الـ consumables لا يمكن استعادتها، لذا التوقيت هو كل شيء
لأن الـ consumable لا يمكن استعادته، لا يمكنك سحبه بالطريقة التي تسحب بها اشتراكًا. فبمجرد منح الاسترداد، حمايتك الوحيدة هي السجل الذي احتفظت به وقت البيع. إن لم تسجّل التسليم والاستهلاك حين حدثا، فأنت تعيد بناءهما تحت ساعة مدتها 12 hours، وهي أسوأ لحظة للبحث عن البيانات. سجّلها عند الدخول، لا عند الخروج.
عمليات استرداد الاشتراكات تجري وفق ساعة لا تتحكم بها
الـ auto-renewable subscriptions هي حيث تجني معظم التطبيقات أموالها، وقد وجّه تحديث الاسترداد في WWDC24 أخيرًا هذه الاشتراكات عبر نافذة الأدلة نفسها التي للـ consumables. فمنذ App Store Server Notifications version 2.11، يُطلق طلب استرداد على auto-renewable subscription أيضًا CONSUMPTION_REQUEST. لذا فإن عمليات استرداد الاشتراك التي كانت تُبتّ سابقًا بالكامل بدونك تصل الآن بنافذة مدتها 12 hours.
المشكلة في كيفية قياس الاستهلاك. بالنسبة لـ auto-renewable subscription، لا يريد Apple أن تخترع نسبة استخدام. فهو يحسب الاستهلاك من الوقت المنقضي بنفسه، لذا فإن شخصًا مضى ستة أشهر على خطة سنوية يُقرأ على أنه استهلك النصف تقريبًا مهما أرسلت. رافعتك ليست النسبة. بل refundPreference صادق من GRANT_FULL أو GRANT_PRORATED أو DECLINE، مدعوم بأي إشارة استخدام تملكها فعلًا. أرسل التفضيل الذي يدعمه الدليل ودع Apple يزنه.
الـ non-renewing subscriptions أقرب إلى فتح لمرة واحدة
الـ non-renewing subscription مدة ثابتة يشتريها العميل مرة واحدة، وهي تتصرف لأغراض الاسترداد مثل non-consumable أكثر من خطة auto-renewable. نادرًا ما يوجّه Apple إليها CONSUMPTION_REQUEST، ولا يوجد تجديد تلقائي لتُحسب النسبة إزاءه. تطبيقك مسؤول عن تتبّع المدة واستعادتها عبر أجهزة العميل، لذا فإن الاسترداد يعني إنهاء نافذة وصول كنت تديرها بنفسك، لا نافذة كان Apple يوقّتها لك.
الـ non-consumables دائمة، وهذا سلاح ذو حدّين
الـ non-consumable هو أنظف شيء تبيعه وفخّ صامت عند الاسترداد. يُشترى مرة واحدة، ويرتبط بحساب متجر العميل إلى الأبد، ويستطيع المتجر استعادته إلى أي جهاز عند الطلب. تلك الدوامية ميزة حتى يصل استرداد، لأن عليك الآن سحب صلاحية ما زال الحساب يتذكرها. إن كان منطق السحب لديك يتحقق فقط وقت الشراء ولا يعيد التحقق أبدًا، فيمكن لعميل مسترَدّ أن يستعيد المشتريات ويعود مباشرة إلى الميزة المدفوعة.
يضيف Google Play هنا حدًا صارمًا يوقع المطوّرين الجدد. إن لم يؤكّد تطبيقك عملية شراء خلال 72 hours، يستردّها Google تلقائيًا ويسحب الصلاحية. الـ non-consumable الذي نسيت شيفرة الفوترة لديك تأكيده لا يبقى معلّقًا. بل ينعكس بنفسه، ويفقد العميل الوصول إلى شيء دفع مقابله، دون أي طلب منه.

من يستطيع أصلًا إصدار الاسترداد يتغيّر بحسب المتجر والنوع
قبل أن تخطّط لأي استجابة استرداد، اعرف من يمسك القلم. على App Store، وحده Apple يمكنه إصدار استرداد لشراء داخل التطبيق، لكل نوع من المنتجات. لا تستطيع شيفرة StoreKit لديك استرداد عملية شراء، ولا مكتب الدعم لديك أيضًا. يمكنك إرسال بيانات الاستهلاك للتأثير في قرار Apple على النوعين اللذين يفتحان نافذة، وهذا كل تحكّمك المباشر.
Google Play هو العكس. يمكنك أنت استرداد one-time product أو طلب subscription بنفسك من Play Console أو من واجهات الـ Voided Purchases والاسترداد، كليًا أو جزئيًا. تلك الحرية مسؤولية أيضًا، فالاسترداد الذي تصدره على consumable ما زال عليه سحب العنصر في خلفيتك أنت، لأن Google لا يعلم أن عملاتك أُنفقت. نوع المنتج الذي اخترته يقرّر مدى نظافة ذلك السحب.
ما يكلّفك كل نوع استرداد فعلًا
السعر المسترَدّ هو السطر الذي يراقبه الجميع وأصغر جزء من الفاتورة. عندما يمنح أي متجر استردادًا، يعكس عمولته معه، لذا تخسر صافي عائدك لا كامل السعر المعلن. تلك هي الأخبار الجيدة، وتتوقف عند هذا الحد. ما يعيده المتجر هو الحصة التي أخذها. وما لا يعيده أبدًا هو ما أنفقته بالفعل للوفاء بالبيع، وذلك الرقم يتغيّر بحدّة بحسب نوع المنتج.
الـ consumable هو الاسترداد المكلف
الـ consumable المسترَدّ هو الذي قد يكلّف أكثر من سعره. لنقل إن عميلًا يشتري 5,000 رصيد، يطلق كل منها استدعاء inference مدفوعًا، ينفق 4,000 منها، ثم يقدّم طلب استرداد. يعيد المتجر السعر وعمولته، لكن الحوسبة وفاتورة الـ API لكل رمز والصور التي ولّدتها وأي مدفوعات مبدع مولّتها تلك الأرصدة، كلها أُنفقت. استرداد الـ non-consumable يسحب على الأقل صلاحية إلى تحكّمك. أما استرداد الـ consumable فيسحب بيعًا دفعت كامل كلفته بالفعل.
الـ chargeback هو النسخة الأثقل من الفاتورة نفسها
الاسترداد والـ chargeback حدثان مختلفان، وللفجوة الآن تاريخ. عندما ينازع العميل الرسم لدى مصرفه بدلًا من سؤال المتجر، يكون الـ chargeback المكتمل نهائيًا من المصرف. بالنسبة لطلبات Google Play الموضوعة في أو بعد August 3 2026، يفوتر الـ chargeback الخاسر المطوّرَ بسعر الشراء ناقص رسم خدمة Play، إضافة إلى رسم الـ chargeback المصرفي، وهو رسم ثابت تحدّده شبكة البطاقة. يوجّه Google Play الـ chargeback إليك للمراجعة عبر orders.reviewrefund بنافذة مدتها 24 hours، وهو المسار الوحيد من Google الذي يطلب دليلك، ويمكن أن يقع على أي نوع من المنتجات.
كيف تستجيب عندما يقرّر النوع القواعد
لا يمكنك تغيير نوع المنتج الذي يقع عليه الاسترداد بعد البيع، لكن يمكنك التوقف عن معاملة الأنواع الأربعة بالطريقة نفسها.
- سجّل التسليم والاستهلاك للـ consumables في اللحظة التي يحدثان فيها. ذلك السجل هو كامل دفاعك على النوع الوحيد الذي لا يمكن استعادته، ونافذة الـ 12 hours أقصر بكثير من أن تبنيه من الصفر.
- أعد التحقق من الصلاحيات للـ non-consumables بعد الاسترداد، لا وقت الشراء فقط. ينبغي لاستدعاء الاستعادة أن يتحقق من الحالة الراهنة، حتى لا يستطيع عميل مسترَدّ العودة إلى الميزة المدفوعة.
- أجب عن نافذتي الأدلة تلقائيًا. لا يمكن لطلب استهلاك مدته 12 hours ومراجعة chargeback مدتها 24 hours أن ينتظرا من يقرأ صندوق بريد، وهما لا يمتدّان بحسب المناطق الزمنية.
- احكم على دفاعك عن الاسترداد على النوعين القابلين للمنازعة فقط. إن عددًا متزايدًا من عمليات الاسترداد على أنواع لم تفتح نافذة قط هو إشارة منتج أو تسعير، لا إخفاق في دليلك.
لا شيء من هذا يتعلق بهزيمة المتجر. بل بمطابقة استجابتك للكائن الذي بيع فعلًا. يجيب RefundHalt عن الـ CONSUMPTION_REQUEST للـ consumable والاشتراك وعن مراجعة Google Play orders.reviewrefund تلقائيًا، داخل النافذة، بدليل التسليم والاستخدام الذي سجّلته وقت البيع، ويحتفظ بعمليات الاسترداد التي لم تسمح لك أي نافذة بمنازعتها في سجلّها الخاص، حتى يبقى الرقم الذي تحكم به على نفسك صادقًا.
الأسئلة الشائعة
- هل يمكنني استرداد عملية شراء داخل التطبيق بنفسي؟
- يعتمد ذلك على المتجر. على App Store، وحده Apple يمكنه إصدار استرداد لشراء داخل التطبيق، لكل نوع من المنتجات، لذا تأثيرك الوحيد هو بيانات الاستهلاك التي ترسلها على المسارين اللذين يطلبانها. أما على Google Play فيمكنك أنت استرداد one-time product أو طلب subscription بنفسك من Play Console أو من واجهات الاسترداد، كليًا أو جزئيًا.
- أي نوع من الشراء داخل التطبيق يحمل أعلى مخاطر استرداد؟
- الـ consumables. الـ consumable يُنفَق عند التسليم، ولا يمكن استعادته، وقيمته عادةً تختفي قبل وصول طلب الاسترداد. هذا بالضبط سبب إرسال Apple لـ CONSUMPTION_REQUEST للـ consumables وطلبه بيانات استهلاكك، وسبب أن كلفة الحوسبة أو الـ API خلف consumable قد تجعل استرداده يكلّف أكثر من البيع.
- هل يرسل Apple طلب استهلاك لكل نوع من أنواع الشراء؟
- لا. يرسل Apple CONSUMPTION_REQUEST للـ consumables و، منذ تحديث WWDC24، للـ auto-renewable subscriptions. أما الـ non-consumables والـ non-renewing subscriptions فنادرًا ما تفتح نافذة الأدلة تلك. ولكل نوع، يبقى الاسترداد نفسه من قرار Apple، لا قرارك أنت.
- هل يمكن للعميل استعادة consumable بعد الاسترداد؟
- لا. الـ consumables لا يمكن استعادتها، وهذا ما يجعل عمليات استردادها نهائية بالنسبة لك. أما الـ non-consumables والاشتراكات النشطة فمرتبطة بحساب متجر العميل ويمكن استعادتها، لذا فإن الاسترداد عليها عليه أن يسحب صلاحية ينبغي لخلفيتك أن تعيد التحقق منها بدلًا من الوثوق بها من وقت الشراء.
- كيف تُحسب عمليات استرداد الاشتراكات بشكل مختلف؟
- بالنسبة لـ auto-renewable subscription، يحسب Apple مقدار ما استُهلك من الوقت المنقضي بدلًا من نسبة ترسلها، لذا يُقرأ نصف المدة على أنه استُهلك النصف تقريبًا. دورك هو refundPreference صادق من GRANT_FULL أو GRANT_PRORATED أو DECLINE، مدعوم بدليل الاستخدام الذي تملكه، لا رقم استهلاك مخترَع.
المصادر وقراءات إضافية
- Apple Developer: In-App Purchase (product types)
- Apple Developer: ConsumptionRequest (App Store Server API)
- Apple Developer: Send Consumption Information
- Google Play Console Help: Understand in-app product types
- Android Developers: One-time products (Play Billing)
- Android Developers: Process purchases and acknowledgement (72-hour auto-refund)
- WWDC24: Explore App Store server APIs for In-App Purchase
RefundHalt
الطيار الآلي للاستردادات في App Store وGoogle Play
تابع القراءة
قوانين استرداد الأموال تتغير بتغير بلد العميل، ولا يمنح أي منها تقريبًا المطور رأيًا في الأمر
تختلف قوانين استرداد أموال التطبيقات بين الاتحاد الأوروبي والمملكة المتحدة والولايات المتحدة، لكن النتيجة تبقى واحدة في معظم مبيعات التطبيقات. حق الانسحاب خلال 14-day في الاتحاد الأوروبي يُتنازل عنه عادةً عند الدفع، ويعتمد المشترون في الولايات المتحدة على سياسة المتجر، ولا يمنحك أي استرداد قانوني فرصة للرد. مساران فقط في المتجر يسألان عن وجهة نظرك.
الاحتيال الودّي هو ردّ المبالغ المدفوعة حيث يكون العميل قد حصل بالفعل على ما دفع مقابله، وهو النزاع الوحيد الذي لا يزال بإمكان أدلتك التأثير فيه
الاحتيال الودّي هو أن يشتري عميل حقيقي عملية الشراء داخل تطبيقك، ثم يستخدمها، ثم يخبر بنكه بأن الرسم كان خاطئًا. تكون البضاعة قد ذهبت وينعكس المال. إليك ما يكلّفه ذلك مطوّر التطبيق، ولماذا يتزايد، والنافذة القصيرة التي يمنحك إياها Apple وGoogle للرد.