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

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

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

يمكن للمستخدمين أو المطوّرين بدء عمليات إلغاء الاشتراكات.

عمليات الإلغاء التي بدأها المستخدم

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

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

عمليات الإلغاء التي بدأها المطوّر

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

تتيح لك هذه الطريقة تحديد الأنواع التالية من عمليات الإلغاء في مَعلمة cancellationType لنص الطلب:

  • USER_REQUESTED_STOP_RENEWALS: لإلغاء الاشتراك كما لو كان المستخدمون قد ألغوه من "متجر Play" ستستمر أي دفعات أقساط للفترة المتبقية من مدة الالتزام الحالية. من متجر Play، يمكن للمستخدمين استعادة الاشتراك قبل انتهاء صلاحيته، أو إعادة الاشتراك بعد انتهاء صلاحيته إذا كان هذا الخيار مفعّلاً في الخطة الأساسية.

  • DEVELOPER_REQUESTED_STOP_PAYMENTS: يؤدي هذا الإجراء إلى إلغاء الاشتراك ومنع أي دفعات أخرى. لا يمكن للمستخدمين استعادة الاشتراك أو إعادة الاشتراك فيه من "متجر Play"، ولكن يمكنك السماح لهم بالاشتراك مرة أخرى داخل تطبيقك.

السماح للمستخدمين باستعادة الاشتراكات غير المنتهية الصلاحية

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

للإشارة إلى أنّه يمكن للمستخدم استعادة الإلغاء، أرسِل طلب POST إلى واجهة برمجة التطبيقات purchases.subscriptions.cancel، واضبط مَعلمة الطلب cancellationType على القيمة USER_REQUESTED_STOP_RENEWAL.

مثال:

  • رمز الشراء للاشتراك 1a2b3c4d5e6f7g8h9i0j
  • اسم حزمة التطبيق com.your.app
  • رقم تعريف الاشتراك your-subscription-product

طلب HTTP POST:

https://androidpublisher.googleapis.com/androidpublisher/v3/applications/com.your.app/purchases/subscriptions/your-subscription-product/tokens/1a2b3c4d5e6f7g8h9i0j:cancel

نص الطلب:

{
  "cancellationType": "USER_REQUESTED_STOP_RENEWAL"
}

السماح للمستخدمين بإعادة الاشتراك في الاشتراكات المنتهية الصلاحية

للسماح بإعادة اشتراك اشتراك منتهي الصلاحية، عليك تفعيل خيار إعادة الاشتراك في الخطة الأساسية للاشتراك ثم إلغاء الاشتراك من خلال ضبط المَعلمة cancellationType على القيمة USER_REQUESTED_STOP_RENEWAL.

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

إذا ضبطت المَعلمة cancellationType على DEVELOPER_REQUESTED_STOP _PAYMENTS أو لم تضبطها، لن يتمكّن المستخدمون من استعادة اشتراكهم من مركز الاشتراكات في Play.cancellationType ومع ذلك، يمكن للمستخدمين الاشتراك مرة أخرى في التطبيق إذا لزم الأمر.

يؤدي اتّخاذ هذا الإجراء إلى SUBSCRIPTION_CANCELED إرسال إشعار في الوقت الفعلي إلى المطوّر. يمكنك معالجة عمليات الإلغاء هذه على النحو الموضّح في عمليات الإلغاء.

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

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

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

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

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

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

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

مثال:

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

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

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

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

إصدار عمليات ردّ الأموال وإلغاء الاشتراكات

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

ردّ الأموال المدفوعة في طلب بالكامل باستخدام معرّف الطلب

باستخدام واجهة برمجة التطبيقات 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 ، واضبط "fullRefund": {} على أنّه نوع طلب استرداد الأموال.

مثال:

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

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

  3. تُعلم خدمة العملاء "ماريا" بأنّه سيتم ردّ ‎100% من سعر اشتراكها وأنّها لم تعُد مشتركة في الخطة.

ردّ الأموال على أساس تناسبي

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

مثال:

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

  2. تعثر خدمة العملاء على تفاصيل شراء اشتراك "مريم" في نظامها وتُجري مكالمة إلى purchases.subscriptionsv2.revoke لطلب استرداد الأموال المدفوعة مُقسَّمة على أساس تناسبي.

  3. تُعلم خدمة العملاء "ماريا" بأنّه سيتم ردّ حوالي ‎50% من سعر اشتراكها وأنّه تم إنهاء إمكانية استخدامها للخدمة على الفور.