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

استرداد Family Sharing يعكس دفعة واحدة لكنه قد يترك خمسة أشخاص آخرين يستخدمون تطبيقك، وخادمك وحده هو من يستطيع قطع وصولهم

استرداد Family Sharing يعكس دفعة واحدة لكنه قد يبقي حتى خمسة من أفراد العائلة على ميزاتك المدفوعة. ترسل Apple إشعار REVOKE وتتوقع أن ينهي خادمك ذلك الوصول. إليك كيف تعمل عمليات الاسترداد المشتركة عائليًا وما تكلفة الواحدة منها.

إيصال ورقي واحد في وسط طاولة طعام مُعَدّة لستة أشخاص، يمثل كيف يمكن لدفعة واحدة خلف استرداد Family Sharing أن تغطي ستة أشخاص

أهم الخلاصات

  • تضع Apple على كل معاملة مشتركة عائليًا وسمًا بقيمة inAppOwnershipType تساوي FAMILY_SHARED، وعلى كل عملية شراء مباشرة وسم PURCHASED. لا يظهر هذا الحقل إلا على عمليات الشراء داخل التطبيق غير القابلة للاستهلاك والاشتراكات ذاتية التجديد، وهما نوعا المنتج اللذان يدعمهما Family Sharing.
  • يمكن لعملية شراء واحدة قابلة للمشاركة العائلية أن تمنح الحق لستة أشخاص، المشتري بالإضافة إلى خمسة من أفراد العائلة، لذا فإن دفعة واحدة قد تُحمّلك ما يعادل ستة أشخاص من الحوسبة واستدعاءات API والتخزين والمدفوعات التي ينفقها منتجك لتقديمه.
  • عندما تُعيد Apple المال للشخص الذي اشترى عملية شراء مشتركة، فإنها ترسل إشعار REVOKE من App Store Server، وإلغاء الوصول، بما في ذلك كل نسخة مشتركة عائليًا منه، هو مهمة خادمك. تُعيد Apple المال لكنها لا تنهي استحقاقاتك نيابة عنك.
  • تحمل معاملة FAMILY_SHARED داخل إشعار REVOKE قيمة revocationDate فقط عندما يكون الإلغاء ناتجًا عن استرداد للمشتري. أما إذا غادر أحد أفراد العائلة المجموعة فحسب، فإن الإشعار REVOKE نفسه يصل دون أي revocationDate، وفقًا لمهندسي Apple أنفسهم.
  • تؤخر Apple عملية شراء مشتركة عائليًا جديدة نحو ساعة واحدة قبل أن تصل إلى أفراد العائلة، عن قصد، حتى يكون لدى المشتري وقت لتعطيل المشاركة قبل أن يحصل أي شخص آخر على الوصول.
  • لا يمكن التراجع عن تفعيل Family Sharing على عملية شراء داخل التطبيق في App Store Connect، لذا بمجرد أن يصبح المنتج قابلًا للمشاركة يبقى كذلك، ويتعين على معالجتك لعمليات الاسترداد أن تأخذ في الحسبان معاملات FAMILY_SHARED من تلك اللحظة فصاعدًا.
  • المنتجات القابلة للاستهلاك لا تُشارَك عائليًا أبدًا، لذا لا يُطلق أحد أفراد العائلة أبدًا CONSUMPTION_REQUEST ولا يظهر في تقارير الاستهلاك لديك. عمليات استرداد Family Sharing لا تشمل سوى المنتجات غير القابلة للاستهلاك والاشتراكات ذاتية التجديد.

عملية شراء واحدة في مجموعة Family Sharing يمكن أن تسلّم تطبيقك إلى ستة أشخاص. الشخص الذي دفع هو واحد منهم. أما الخمسة الآخرون فلم يفتحوا محفظتهم قط، ومع ذلك تتوقع Apple أن يعمل تطبيقك لهم جميعًا. هذه هي الصفقة التي تختارها في اللحظة التي تُفعّل فيها Family Sharing لعملية شراء داخل التطبيق. وهي أيضًا السبب في أن استرداد Family Sharing كائن مختلف عن الاسترداد العادي. عندما يستعيد المشتري ماله، تنعكس عملية البيع لحساب واحد، لكن الوصول الذي منحته لما يصل إلى خمسة أشخاص آخرين لا ينطفئ من تلقاء نفسه. على خادمك أن يفعل ذلك، وإذا كُتب ليراقب المشتري وحده، فلن يفعل.

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

ماذا يوزّع Family Sharing، وعلى كم شخص

فعّل Family Sharing لمنتج ما فتغيّر من هو عميلك الدافع. يمكن لمجموعة عائلية على Apple أن تضم ستة أشخاص كحد أقصى، منظّم واحد وحتى خمسة أعضاء. عندما يشتري أي شخص في المجموعة منتجًا قابلًا للمشاركة العائلية، يحصل كل فرد في المجموعة على الوصول إليه. هم لا يدفعون. لا يظهرون في إيراداتك. يظهرون فقط في تطبيقك باستحقاق صالح، لأن Apple تُصدر لكل واحد منهم معاملة تشير إلى عملية الشراء نفسها.

نوعان فقط من المنتجات قابلان للمشاركة، والمنتجات القابلة للاستهلاك ليست منهما

يغطي Family Sharing نوعين بالضبط من الشراء داخل التطبيق: غير القابلة للاستهلاك والاشتراكات ذاتية التجديد. أما المنتجات القابلة للاستهلاك، أي منتجات العملات والأرصدة، فلا تُشارَك أبدًا، ولهذا لا يُطلق أحد أفراد العائلة أبدًا CONSUMPTION_REQUEST ولا يظهر في تقارير الاستهلاك لديك. إذا كان تطبيقك يبيع منتجات قابلة للاستهلاك فقط، فإن عمليات استرداد Family Sharing ليست مشكلتك. أما إذا كنت تبيع فتحًا مدى الحياة أو خطة متكررة، فهي مشكلتك.

الحقل الذي يميّز المشتري عن المستفيد

كل معاملة تُصدرها Apple تحمل inAppOwnershipType. له قيمتان. PURCHASED تعني أن هذا الحساب دفع ثمن المنتج ويمكنه إدارته، بما في ذلك إلغاؤه أو طلب استرداد. FAMILY_SHARED تعني أن هذا الحساب فرد من العائلة يملك الوصول عبر عملية شراء شخص آخر. كلاهما يمنح الشخص حق استخدام منتجك. واحد فقط منهما دفع. الحقل موجود على معاملة StoreKit، والإيصال، وApp Store Server API، فيمكنك قراءته في أي مكان تتحقق فيه أصلًا من الاستحقاقات.

inAppOwnershipTypeمن هويمكنه إدارة الشراء أو استردادههل دفع لك
PURCHASEDالحساب الذي اشترى المنتجنعمنعم
FAMILY_SHAREDفرد من العائلة يملك وصولًا مشتركًالالا

كيف يصل استرداد Family Sharing إلى خادمك

يبدأ الاسترداد على عملية شراء مشتركة بالطريقة نفسها التي يبدأ بها أي استرداد من Apple. المشتري، وهو الشخص الوحيد القادر على ذلك، يطلب من Apple إعادة ماله. تقرر Apple. إذا منحته Apple، تنعكس عملية شراء المشتري وترسل Apple إلى خادمك إشعار REVOKE من App Store Server. كل من V1 وV2 من الإشعار يحمله. الإشعار REVOKE هو إشارتك الوحيدة إلى أن الاستحقاق الكامن وراءه، وكل نسخة مشتركة عائليًا منه، أصبح الآن لاغيًا.

لا تُلغِ معاملة واحدة، أعد قراءة السجل بأكمله

توجيه Apple بشأن الإشعار REVOKE صريح: لا تعامله كمفتاح واحد. عندما تتلقى واحدًا، اجتَز سجل معاملات العميل بأكمله وأعد بناء استحقاقاته من الصفر، لأن الشخص قد يملك أكثر من معاملة تمنح المنتج نفسه أو منتجًا مختلفًا. إذا ألغيت فقط المعاملة المسماة في الإشعار فقد تترك فرد عائلة مُسترَدًا له ماله مع وصول حي، أو تقطع شخصًا لا يزال يملك استحقاقًا ثانيًا صالحًا. أعد تكوين الصورة الكاملة في كل مرة.

يد ترفع مفتاحًا نحاسيًا بعيدًا عن حلقة تضم ستة مفاتيح متطابقة، تمثل إلغاء الوصول المشترك لفرد واحد من العائلة بعد استرداد Family Sharing

التفصيل الوحيد الذي يفصل الاسترداد عن انفصال عائلي

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

ما تكلفة الاسترداد المشترك عليك فعلًا

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

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

ماذا تُلغي عند استرداد مشتركمن يفقد الوصوللأجل ماذا تظل تدفع
سجل المعاملات الكاملالمشتري وكل أفراد العائلةلا شيء، ينتهي الوصول للجميع
معاملة PURCHASED فقطالمشتري وحدهحتى خمسة من أفراد العائلة، ما زالوا على حوسبتك وواجهات API والتخزين والمدفوعات
لا شيء، لأنك فوّتّ الإشعار REVOKEلا أحدالمشتري وحتى خمسة أعضاء، جميعهم مجانًا

الاشتراكات تجعل التسرب متكررًا

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

أن تفعلها بشكل صحيح، وأن تختبرها قبل أن يفعل ذلك استرداد حقيقي

لا شيء غريب لتبنيه هنا. المهمة كلها هي أن تربط الوصول بالاستحقاق، لا بالمشتري، وأن تعيد بناء ذلك الوصول عند كل REVOKE.

  • خزّن الوصول مقابل المعاملة وقيمة inAppOwnershipType الخاصة بها، لا مقابل حساب مشترٍ واحد، حتى تمنح معاملة FAMILY_SHARED الوصول بمفردها ويمكن إلغاؤها بمفردها.
  • عند أي إشعار REVOKE، أعد قراءة سجل معاملات العميل الكامل وأعد حساب الاستحقاقات، بدلًا من إطفاء المعاملة الوحيدة المسماة.
  • عامِل معاملة FAMILY_SHARED التي تحمل revocationDate كاسترداد وأنهِ وصول ذلك العضو. وعامِل التي بلا revocationDate كمغادرة عائلية وأنهِها أيضًا.
  • لا تندفع بعملية شراء مشتركة جديدة تمامًا إلى الخدمة. تحتجزها Apple نحو ساعة واحدة حتى يتمكن المشتري من التراجع، لذا احترم المعاملة التي تُصدرها Apple فعليًا بدلًا من المنح عند نقرة الشراء.
  • تدرّب عليها. تتيح لك أداة Testing Family Sharing من Apple محاكاة معاملة مشتركة، ويُطلق استرداد في sandbox إشعار REVOKE نفسه الذي سيتلقاه خادم الإنتاج لديك.

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

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

ما هو inAppOwnershipType وما قيمه؟
inAppOwnershipType حقل تضعه Apple على كل معاملة شراء داخل التطبيق، وله قيمتان: PURCHASED للحساب الذي اشترى المنتج، وFAMILY_SHARED لفرد من العائلة يملك الوصول عبر عملية شراء شخص آخر. لا يظهر إلا على المنتجات غير القابلة للاستهلاك والاشتراكات ذاتية التجديد، وهي أنواع المنتجات التي يدعمها Family Sharing.
هل تُلغي Apple وصول أفراد العائلة تلقائيًا عندما يحصل المشتري على استرداد؟
لا. تعكس Apple دفعة المشتري وترسل إلى خادمك إشعار REVOKE من App Store Server، لكن إلغاء الاستحقاق، بما في ذلك كل نسخة مشتركة عائليًا منه، هو مهمة خادمك. إذا لم تتصرف بناءً على الإشعار REVOKE، يحتفظ أفراد العائلة بالوصول بعد الاسترداد.
كيف أميّز استرداد Family Sharing عن مغادرة فرد من العائلة للمجموعة؟
تحقق من وجود revocationDate على معاملة FAMILY_SHARED. عندما يكون الإلغاء ناتجًا عن استرداد للمشتري، تحمل المعاملة revocationDate. وعندما يغادر أحد أفراد العائلة المجموعة فحسب، يصل الإشعار REVOKE دون revocationDate. تنهي الحالتان الاستحقاق، لكن المؤرّخة وحدها عكست دفعة.
كم شخصًا يمكنه استخدام عملية شراء مشتركة عائليًا واحدة؟
حتى ستة، المنظّم بالإضافة إلى ما يصل إلى خمسة من أفراد العائلة. لذا يمكن لدفعة واحدة أن تمنح ستة أشخاص حق استخدام منتجك، ولهذا قد يترك استرداد مشترك ما يصل إلى خمسة أشخاص عالقين على ميزاتك المدفوعة إذا ألغيت معاملة المشتري وحدها.
هل يمكنني إيقاف Family Sharing لعملية شراء داخل التطبيق بعد تفعيلها؟
لا. لا يمكن التراجع عن تفعيل Family Sharing على عملية شراء داخل التطبيق في App Store Connect. بمجرد أن يصبح المنتج قابلًا للمشاركة يبقى كذلك، لذا يتعين على معالجتك لعمليات الاسترداد أن تأخذ في الحسبان معاملات FAMILY_SHARED من تلك النقطة فصاعدًا.
هل تُشارَك عمليات الشراء القابلة للاستهلاك مع العائلة؟
لا. يغطي Family Sharing المنتجات غير القابلة للاستهلاك والاشتراكات ذاتية التجديد فقط. المنتجات القابلة للاستهلاك لا تُشارَك أبدًا، لذا لا يُطلق أحد أفراد العائلة أبدًا CONSUMPTION_REQUEST ولا يظهر في تقارير الاستهلاك لديك.

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

RefundHalt

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

تابع القراءة

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

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