إدارة الاشتراكات وعمليات الشراء لمرة واحدة

قد تحتاج إلى اتخاذ إجراءات إدارية بشأن الاشتراكات أو عمليات الشراء لمرة واحدة كجزء من الأعمال اليومية. على سبيل المثال، قد تحتاج خدمة العملاء إلى إصدار ردّ أموال كامل أو جزئي للمستخدمين، أو قد تحتاج إلى إبطال الاستحقاقات في حالات معينة. يمكنك إدارة الطلبات من Play Console أو إذا أردت إدارتها من نظامك الخاص باستخدام واجهة برمجة التطبيقات Google Play Developer API.

إلغاء الاشتراكات

يمكن للمستخدمين إلغاء اشتراك Google Play في أي وقت باستخدام "متجر Play"، ولكن عليك أيضًا توفير خيار يتيح للمستخدمين إلغاء اشتراكاتهم في تطبيقك وعلى موقعك الإلكتروني إن أمكن.

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

وقد تحتاج أيضًا إلى إجراء عمليات الإلغاء من الخلفية. تتيح لك الطريقة purchases.subscriptions.cancel إلغاء عملية شراء اشتراك. على سبيل المثال، يمكنك استخدام هذه الطريقة لإيقاف خدمة قديمة. لا يؤدي إلغاء الاشتراك إلى ردّ الأموال، ويظل المستخدم متاحًا له حتى نهاية المدة الزمنية الحالية للفوترة. يؤدي إلغاء الاشتراك بهذه الطريقة إلى منع المستخدم من استعادة الاشتراك في "متجر Play"، ولكن يظل بإمكان المستخدمين الاشتراك مرة أخرى من خلال تطبيقك إذا كانوا بحاجة إلى ذلك.

يؤدي هذا الإجراء إلى ظهور إشعار "SUBSCRIPTION_CANCELED" للمطوِّر في الوقت الفعلي. يجب التعامل مع عمليات الإلغاء هذه على النحو الموضَّح في صفحة عمليات الإلغاء.

تأجيل الفوترة

استخدِم subscriptions.defer لتمديد فترة استحقاق الاشتراك. أثناء فترة التأجيل، يظل المستخدم مشتركًا في المحتوى الخاص بك ولكن لا يتم تحصيل رسوم مقابل الوقت الإضافي. عند تأجيل فوترة أحد الاشتراكات، يتم تعديل معلومات الحالة وفقًا لذلك، وتظهر في الحقل expiryTime في معلومات حالة الشراء:

  • بالنسبة إلى الاشتراكات المتكررة النشطة، يتم تمديد الفوترة المؤجلة لتاريخ التجديد التالي.
  • بالنسبة إلى خطط الدفع المُسبَق، تعمل الفوترة المؤجلة على تمديد وقت انتهاء الصلاحية.

في ما يلي بعض الأمثلة حول كيفية استخدام الفوترة المؤجلة:

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

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

يؤدي هذا الإجراء إلى ظهور إشعار "SUBSCRIPTION_DEFERRED" للمطوِّر في الوقت الفعلي. يمكنك الاطّلاع على مقالة تأجيل الفوترة لمشترك في القسم لمحة عن الاشتراكات للتعرّف على طريقة التعامل مع هذه الأحداث.

مثال:

  1. تريد خدمة بث اللياقة البدنية الأهداف إجراء إعلان ترويجي لتشجيع الممارسات الرياضية المنتظمة في فبراير.

  2. وهم يقررون تقديم خدمة لمدة شهر إضافي لأي مشترك يمارس التمارين الرياضية لأهداف اللياقة البدنية 10 مرات على الأقل خلال شهر شباط (فبراير).

  3. يتتبّع الفريق نتائج التحدي، وفي 1 آذار (مارس)، استدعى الفريق واجهة subscriptions.defer API الخاصة بكل عملية شراء اشتراك نشطة تخص المستخدمين الذين واجهوا التحدي في شباط (فبراير).

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

إصدار عمليات ردّ الأموال والإبطال

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

ردّ أموال طلب بالكامل حسب مُعرّف الطلب

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

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

مثال:

  1. للاحتفال ببداية كأس العالم الجديدة، قرّر تطبيق الرياضة الإلكترونية Football-Not-Soccer ببيع قمصان افتراضية مجانية لجميع المستخدمين الذين يشترون مجموعات جديدة للفريق خلال أول 24 ساعة.

  2. تستخدم Football-Not-Soccer واجهة برمجة تطبيقات orders.refund بدون تمرير معلمة إبطال لرد الأموال التي تم شراؤها إلى الفائزين.

إبطال اشتراك وردّ الأموال المدفوعة فيه باستخدام الرمز المميّز للشراء

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

يؤدي اتّخاذ هذا الإجراء إلى ظهور إشعار "SUBSCRIPTION_REVOKED" للمطوِّر في الوقت الفعلي. ويجب أن يعالج تطبيقك عمليات الإلغاء هذه على النحو الموضَّح في عمليات الإلغاء.

مثال:

  • الشراء باستخدام الرمز المميّز للشراء 1a2b3c4d5e6f7g8h9i0j
  • تطبيق باسم الحزمة com.your.app
  • نية ردّ الأموال مقسَّمة حسب الاستخدام

طلب HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptionsv2/tokens/1a2b3c4d5e6f7g8h9i0j:revoke

نص الطلب:

{
  "revocationContext": {
    "proratedRefund": {}
  }
}

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

إذا كنت بحاجة إلى إنهاء اشتراك وردّ جزء من الأموال المتبقية من وقت الاستحقاق، يمكنك ردّ الأموال بشكل تناسبي. استخدِم الدالة purchases.subscriptionsv2.revoke، واضبط "proratedRefund": {} كنوع لردّ الأموال.

مثال:

  1. لدى سميرة اشتراك يتجدّد تلقائيًا لمدة 30 يومًا في خطة بث SuperMovies شهرية. وقد استخدمت الخدمة بسهولة لبعض الوقت. تتصل ماريا بخدمة العملاء في اليوم 15 من دورة الفوترة لإبلاغها بأنّها ستنتقل إلى الخارج ولن تتمكّن من استخدام الخدمة بعد ذلك بدءًا من اليوم التالي.

  2. تحدّد خدمة العملاء تفاصيل شراء اشتراك ماريا في نظامها وتشغّل مكالمة إلى purchases.subscriptionsv2.revoke لطلب استرداد الأموال بشكل تناسبي.

  3. تخبر خدمة العملاء ماريا أنّه يجب استرداد ما يقرب من 50% من سعر اشتراكها وإيقاف إمكانية الوصول إلى الخدمة على الفور.