الانتقال إلى المحتوى
App Store Refund Management

كيف تتتبع عمليات استرداد App Store وتحمي إيرادات الاشتراكات

تتبّع عمليات استرداد App Store بموثوقية عبر إشعارات خادم Apple، ومطابقة سجل الاستردادات، وربط المعاملات بالمستخدمين، وتحديث الصلاحيات، وإعداد تقارير دقيقة لإيرادات الاشتراكات.

5 min read
كيف تتتبع عمليات استرداد App Store وتحمي إيرادات الاشتراكات

كيف تتتبع عمليات استرداد App Store وتحمي إيرادات الاشتراكات

يقول قسم المالية إن الإيرادات انخفضت بنحو أربعمئة دولار هذا الشهر. ولا أحد يستطيع أن يحدد السبب.

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

تتبع استردادات App Store هو ما يسد هذه الفجوة. الأمر لا يتعلق بمنع الاستردادات — فـ Apple هي من تقرر ذلك، ولا شيء تبنيه يغيّر هذا. بل يتعلق بالاحتفاظ بسجل موثوق لأحداث الاسترداد وربط كل حدث بمعاملة وعميل واشتراك وبند في تقاريرك.

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

أهم النقاط

• تتبع الاستردادات ليس منعها. Apple هي التي تتخذ قرار الاسترداد؛ أما التتبع فهو مسألة رؤية من جانبك.

• إشعارات الخادم وحدها ليست نظام تتبع مكتملاً. توفر Apple واجهة API للبحث مخصصة للاستردادات التي فاتتك.

• حدث الاسترداد لا يصبح مفيداً إلا بعد ربطه بمعاملة وعميل واشتراك.

• يجب أن تعكس حالة الصلاحيات الاسترداد، بما في ذلك الإلغاء الجزئي حيثما ينطبق.

• لا ينبغي أن تظهر معاملات الاشتراك المستردة في التقارير كتجديدات عادية.

• تستحق الأتمتة مكانها مع نمو الحجم وحاجة المزيد من الفرق إلى البيانات نفسها.

ما هو تتبع استردادات App Store؟

تتبع استردادات App Store هو ممارسة تسجيل كل حدث استرداد يؤثر على تطبيقك وربطه بما يحيط به: المعاملة، وحساب العميل، والمنتج، والاشتراك، وحالة الصلاحيات، وتقارير إيراداتك.

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

لماذا يحتاج المطورون إلى تتبع استردادات App Store

السبب الواضح هو المال، لكن شكل خسارة الإيرادات الناتجة عن استردادات App Store يستحق الدقة. المعاملة المستردة تعكس إيراداً سبق أن احتسبته، وإذا كانت فترة اشتراك، فالعلاقة عادة ما تنتهي معها، فتذهب التجديدات التي تليها أيضاً. وتلك التجديدات كانت ضمن توقعات أحدهم.

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

كيف تتتبع استردادات App Store

يتتبع المطورون استردادات App Store عبر إشعارات Apple من جانب الخادم وسجلات معاملاتهم الخاصة، ثم يربطون تلك الأحداث بالمستخدمين والاشتراكات والصلاحيات وتقارير الإيرادات. سبع خطوات.

1. استقبال إشعارات خادم Apple ذات الصلة

تصلك أحداث الاسترداد على شكل App Store Server Notifications إلى عنوان URL تحدده أنت. تغطي وثائق App Store Server Notifications من Apple الإعداد وأنواع الأحداث. الحدث الأهم هنا هو REFUND، الذي يخبرك بأن استرداداً قد مُنح. ويهم أيضاً REFUND_REVERSED: إذ يمكن لـ Apple أن تعكس استرداداً سبق أن منحته، ويجب أن تعكس سجلاتك ذلك.

2. التحقق من الإشعار

تصل الإشعارات على شكل حمولات JWS موقّعة. تحقق من التوقيع مقابل شهادات Apple وتأكد من bundle ID قبل أن تكتب أي شيء في قاعدة بياناتك. فنقطة النهاية التي تثق بكل ما يصلها هي نقطة نهاية يمكن لأي شخص آخر الكتابة إليها.

3. تحديد المعاملة

تحمل الحمولة بعد فك ترميزها معرّفات المعاملة، وبالنسبة للمعاملات المستردة، تحمل revocationDate وrevocationReason. حقل السبب هذا أكثر فائدة مما تدركه معظم الفرق: فهو يميّز بين استرداد صدر بسبب مشكلة في التطبيق واسترداد صدر لسبب آخر. الاستردادات من الفئة الأولى إشارة تخص المنتج، لا مجرد حدث إيرادات.

4. ربط المعاملة بالمستخدم

معرّفات Apple ليست معرّفات حساباتك. وسد هذه الفجوة هو الغرض من appAccountToken: وهو UUID يرفقه تطبيقك وقت الشراء ويعود إليك في حمولة المعاملة. بدونه ستعتمد في المطابقة على التوقيت والاستنتاج، وهو أمر غير موثوق تحديداً في الحالات التي تهمك أكثر.

5. تسجيل حدث الاسترداد

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

6. تحديث حالة الاشتراك والصلاحيات

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

7. ربط نشاط الاسترداد بتقارير الإيرادات

الاسترداد الموجود فقط في قاعدة بيانات الهندسة لم يُكمل رحلته بعد. يحتاجه قسم المالية في الفترة الصحيحة؛ ويحتاجه فريق المنتج مرتبطاً بـ SKU. إذا كان هذان الفريقان يقرآن أرقاماً مختلفة، فالبيانات مخزّنة أكثر مما هي متتبَّعة.

ما الذي يجب على المطورين تتبعه لكل استرداد؟

بعض هذا يأتي من Apple. والباقي تنشئه أنت. والحفاظ على وضوح هذا التمييز مهم، لأن المجموعة الأولى وحدها هي المرجعية.

الحقل

المصدر

لماذا تحتاجه

transactionId

Apple

يحدد المعاملة المستردة بعينها

originalTransactionId

Apple

يربط المعاملة بسلسلة الاشتراك

productId

Apple

يتيح تحليل الاستردادات لكل منتج

purchaseDate

Apple

يربط الاسترداد بوقت حدوث البيع

revocationDate

Apple

متى استرده App Store

revocationReason

Apple

ما إذا كان الاسترداد بسبب مشكلة في التطبيق

appAccountToken

كلاهما

أنت تنشئه؛ وتعيده Apple في الحمولة

معرّف المستخدم الداخلي

نظامك

الحساب الذي يتأثر بالاسترداد فعلياً

حالة الاشتراك عند الاسترداد

نظامك

ما كان لدى العميل لحظة حدوثه

حالة الصلاحيات بعد المعالجة

نظامك

دليل على أن الوصول حُدّث فعلاً

وقت استلام الحدث / معالجته

نظامك

يكشف التأخر بين حدث Apple وإجرائك

فترة التقرير المطبّقة

نظامك

يبقي المالية والهندسة على الرقم نفسه

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

لماذا لا تكفي الإشعارات وحدها

هنا الجزء الذي يُوقع الفرق التي تظن أنها حلّت المشكلة. يمكن أن تفوتك الإشعارات. تتعطل نقطة النهاية لديك، أو يكسر نشر جديد المعالج، أو يفشل تحليل حمولة ما — ولا يظهر أي خطأ من جانبك، لأن الحدث ببساطة لم يصل قط. تراعي Apple ذلك: إذ تتضمن App Store Server API نقطة نهاية لسجل الاستردادات، وتصفها وثائق Apple صراحةً بأنها وسيلة لاسترجاع إشعارات الاسترداد التي ربما فاتتك، كما في حالة انقطاع الخادم.

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

كيف يتتبع المطورون استردادات Apple عبر الاشتراكات

ترفع الاشتراكات المخاطر: فخلف المعاملة علاقة، لا مجرد عملية شراء.

فترة الاشتراك المستردة ليست عكساً لمرة واحدة. فهي عادة تنهي الاشتراك، وبذلك تُغلق فترة الصلاحية مبكراً، وتتوقف التجديدات، ويحمل سجل العميل الآن استرداداً يستحق احتسابه.

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

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

كيف تؤثر استردادات App Store على إيرادات الاشتراكات

يمكن أن يؤثر الاسترداد على أكثر من المعاملة الأصلية، خاصة عندما تكون عملية الشراء المستردة جزءاً من علاقة اشتراك.

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

كيف يساعد تتبع استردادات اشتراكات App Store في حماية الإيرادات

لنكن واضحين بشأن ما يفعله التتبع وما لا يفعله: فهو لا يؤثر في قرارات Apple بشأن الاسترداد. بل يغيّر ما يمكنك رؤيته والتصرف بناءً عليه.

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

لماذا ينهار التتبع اليدوي لاستردادات App Store

يعمل التتبع اليدوي عند الحجم المنخفض ويفشل بشكل متوقع مع نمو الحجم.

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

المشكلة ليست في الجهد. العمل ينمو مع الإيرادات بينما لا ينمو دور أحد ليواكبه.

متى ينبغي للمطورين أتمتة تتبع استردادات App Store؟

تقريباً عندما يتحقق أي مما يلي: تصل أحداث الاسترداد أسرع مما يستطيع شخص معالجتها، أو تحتاج عدة فرق إلى البيانات نفسها، أو أصبحت تحديثات الصلاحيات غير متسقة، أو يحتاج قسم المالية إلى الرؤية قبل موعد الإقفال التالي.

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

ما الذي ينبغي أن تفعله برامج مراقبة استردادات App Store؟

السؤال المفيد هو ما إذا كانت الأداة تسد الفجوات المحددة أعلاه. ينبغي أن تعالج App Store Server Notifications وتتحقق منها، حتى لا تختفي الأحداث في نقطة نهاية معطلة. وينبغي أن تطابق مقابل سجل استردادات Apple، لأن التتبع بالإشعارات وحدها له نقطة عمياء. وينبغي أن تربط المعاملات بالحسابات، لأن هذا هو ما يستهلك الوقت اليدوي. وينبغي أن تتتبع أثر الاشتراك بدلاً من التعامل مع كل استرداد بالطريقة نفسها.

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

خلاصة

أنت لا تقرر أي الاستردادات توافق عليها Apple. لكنك تقرر ما إذا كنت قادراً على رؤيتها.

التتبع الجيد يعني معرفة ما استُرد، وأي عميل تأثر، وما الذي يجب أن يكون عليه وصوله الآن، وكيف يظهر في التقارير، وما إذا كان جزءاً من نمط. هذا جدول وبضعة معالجات، لا مشروع بطولي.

إذا كنت ستفعل شيئاً واحداً بعد قراءة هذا، فأضف عملية المطابقة. معالجة الإشعارات هي الجزء الذي تملكه معظم الفرق؛ أما مقارنتها بسجل استردادات Apple فهي الجزء الذي يخبرك ما إذا كانت تعمل فعلاً.

إذا تجاوز حجم الاستردادات قدرة التتبع اليدوي

مع نمو نشاط الاستردادات، يتوقف التحقق اليدوي من الإشعارات ومطابقة المعاملات وتتبع أثر الاشتراك وتحديث سجل الاستردادات عن كونه أمراً واقعياً. RefundSensor يؤتمت وينظّم جانب المطور من سير العمل هذا، فيبقى السجل دقيقاً دون أن يصونه أحد يدوياً.

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

يستخدم المطورون إشعارات خادم Apple وسجلات المعاملات وواجهة API الخاصة بسجل الاستردادات. يتحققون من الأحداث، ويربطون المعاملات بالمستخدمين، ويحدّثون الصلاحيات، ويطابقون الاستردادات التي فاتتهم.

هو عملية تسجيل الاستردادات وربطها بالمعاملات والعملاء والمنتجات والاشتراكات والصلاحيات وتقارير الإيرادات.

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

تعكس الاستردادات الإيرادات ويمكن أن تؤثر على التجديدات المستقبلية. يساعد تتبع الاستردادات على ضمان أن تعكس تقارير الإيرادات والقيمة الدائمة للعميل صافي الإيرادات الفعلي.

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

نعم. يمكن للمطورين أتمتة الإشعارات والتحقق ومطابقة المعاملات وسجلات الاستردادات والمطابقة وتحديثات الصلاحيات.

لا. Apple هي التي تقرر ما إذا كانت ستصدر الاستردادات. يساعد التتبع فقط في إدارة الوصول والتقارير والرؤى المتعلقة بالاستردادات بعد حدوثها.

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

#App Store Refund Tracking#Apple App Store Refunds#Subscription Revenue#App Store Server Notifications#Refund Reconciliation#Subscription Management
Refund SensorRefund Sensor TeamRefund defense for App Store and Google Play developers