الاشتراك مع الإضافات

يتيح لك الاشتراك مع حِزم إضافية تجميع منتجات اشتراك متعددة معًا يمكن شراؤها وفوترتها وإدارتها معًا. يمكنك تقديم اشتراكاتك الحالية في كتالوج المنتجات كحِزم إضافية بسلاسة بدون الحاجة إلى تحديد أي تفاصيل مسبقًا أو إجراء أي إعدادات إضافية. يمكنك بدء مسار شراء يتضمّن عدة منتجات حالية متوفّرة عند الاشتراك وبيعها كميزات إضافية.

الاعتبارات

يجب مراعاة النقاط التالية عند استخدام ميزة "الاشتراك مع حِزم إضافية":

  • لا تتوفّر إمكانية الاشتراك مع حِزم إضافية إلا للخطط الأساسية التي يتم تجديدها تلقائيًا.

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

  • يمكن أن يتضمّن الاشتراك 50 منتجًا كحدّ أقصى عند شراء حِزم إضافية.

  • لا تتوفّر هذه الميزة في الهند (IN) وكوريا الجنوبية (KR).

الدمج مع Play Billing Library

يوضّح هذا القسم كيفية دمج ميزة "الاشتراك مع حِزم إضافية" مع "مكتبة الفوترة في Play" (PBL). ويفترض هذا الدليل أنّك على دراية بخطوات الدمج الأولية لمكتبة الفوترة في Google Play، مثل إضافة عنصر تابع لمكتبة الفوترة في Google Play إلى تطبيقك، وإعداد BillingClient، والربط بخدمة Google Play. يركّز هذا القسم على جوانب دمج PBL الخاصة بالاشتراك مع حِزم إضافية.

بدء مسار شراء

لبدء مسار شراء اشتراك يتضمّن حِزمًا إضافية، اتّبِع الخطوات التالية:

  1. يمكنك جلب جميع منتجات اشتراكك باستخدام طريقة BillingClient.queryProductDetailsAsync.

  2. اضبط عنصر ProductDetailsParams لكل سلعة.

    يمثّل العنصر الذي يمثّله كائن ProductDetailsParams عنصر الاشتراك، ويحدّد كلاً من ProductDetails الذي يشير إلى عنصر الاشتراك وofferToken الذي يختار اشتراكًا معيّنًا base plan أو offer.

  3. حدِّد تفاصيل العنصر في طريقة BillingFlowParams.Builder.setProductDetailsParamsList. تحدّد الفئة BillingFlowParams تفاصيل مسار عملية الشراء.

    تعرض العيّنة التالية كيفية بدء عملية الفوترة لشراء اشتراك يتضمّن عدة منتجات:

    Java

       BillingClient billingClient = ;
    
        // ProductDetails obtained from queryProductDetailsAsync().
        ProductDetailsParams productDetails1 = ...;
        ProductDetailsParams productDetails2 = ...;
        ArrayList productDetailsList = new ArrayList<>();
        productDetailsList.add(productDetails1);
        productDetailsList.add(productDetails2);
    
        BillingFlowParams billingFlowParams =
            BillingFlowParams.newBuilder()
               .setProductDetailsParamsList(productDetailsList)
               .build();
        billingClient.launchBillingFlow(billingFlowParams);

القواعد السارية على السلع في عملية الشراء

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

معالجة عمليات الشراء

تتم معالجة الاشتراكات التي تتضمّن حِزمًا إضافية بالطريقة نفسها التي تتم بها معالجة عمليات شراء المنتجات الفردية كما هو موضّح في مقالة دمج Google Play Billing Library في تطبيقك، والفرق الوحيد هو أنّ المستخدم يمكنه الحصول على امتيازات متعددة من خلال عملية شراء واحدة. عند شراء اشتراك يتضمّن حِزمًا إضافية، يتم عرض عناصر متعدّدة يمكن استردادها باستخدام Purchase.getProducts() في Google Play Billing Library، ثم قائمة lineItems في purchases.subscriptionsv2.get من Google Play Developer API.

تعديل الاشتراكات التي تتضمّن ميزات إضافية

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

لتغيير أو استعادة عملية شراء حالية لاشتراك يتضمّن حِزمًا إضافية في تطبيقك، عليك استدعاء واجهة برمجة التطبيقات launchBillingFlow مع مَعلمات إضافية، والتأكّد من استيفاء الشروط التالية:

  • يجب دائمًا الاتصال بـ setOldPurchaseToken باستخدام رمز الشراء الخاص بعملية شراء الاشتراك الحالية.
  • لترقية منتج أو الرجوع إلى إصدار أقدم أو الترقية إلى إصدار آخر، اتّصِل بالرقم SubscriptionProductReplacementParams.setReplacementMode لتحديد كيفية التعامل مع تغيير الخطة بين المنتج القديم والمنتج الجديد. وفي ما عدا ذلك، لا داعي لضبط هذه المَعلمة.
  • عندما لا يتم تغيير العنصر الأساسي، سيظل بإمكانك استدعاء SubscriptionProductReplacementParams.setSubscriptionReplacementMode لتطبيق سلوك استبدال معيّن. للاطّلاع على القواعد السارية في هذه الحالة، يُرجى الانتقال إلى إعادة الاشتراك أو التبديل بين الخطط ضمن الاشتراك نفسه.
  • سيتم تطبيق الميزات الإضافية الجديدة فورًا مع تحصيل رسوم حسب الاستخدام لمطابقة تاريخ التجديد التالي مع تاريخ تجديد المنتج الأساسي في الاشتراك.
  • ستنتهي صلاحية الميزات الإضافية التي تمت إزالتها في نهاية مُدد الفوترة الحالية.
  • عند بدء عملية الفوترة، عليك تحديد جميع العناصر النشطة في الاشتراك مع الميزات الإضافية باستثناء تلك التي ستتم إزالتها، بالإضافة إلى أي ميزات إضافية جديدة.

يوضّح المثال التالي كيفية استدعاء واجهة برمجة التطبيقات launchBillingFlow عند تغيير عملية شراء حالية لاشتراك يتضمّن ميزات إضافية:

Java

BillingClient billingClient = ;

int replacementMode =;

// ProductDetails obtained from queryProductDetailsAsync().
ProductDetailsParams productDetails1 = ...;
ProductDetailsParams productDetails2 = ...;
ProductDetailsParams productDetails3 = ...;

ArrayList newProductDetailsList = new ArrayList<>();
newProductDetailsList.add(productDetails1);
newProductDetailsList.add(productDetails1);
newProductDetailsList.add(productDetails1);

BillingFlowParams billingFlowParams =
    BillingFlowParams.newBuilder()
        .setSubscriptionUpdateParams(
          SubscriptionUpdateParams.newBuilder()
              .setOldPurchaseToken(purchaseTokenOfExistingSubscription)
              // No need to set if change does not affect the base item.
             .setSubscriptionReplacementMode(replacementMode)
             .build())
        .setProductDetailsParamsList(productDetailsList)
        .build();

billingClient.launchBillingFlow(billingFlowParams);

سيناريوهات تعديل الاشتراكات

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

عند استخدام SubscriptionProductReplacementParams

المنتجات الحالية العناصر المعدَّلة هل يجب ضبط وضع الاستبدال في SubscriptionProductReplacementParams؟ السُلوك
أ (السلعة الأساسية)، ب A (المنتج الأساسي) نعم (استخدام KEEP_EXISTING)
  • تم تحديد موعد لاحق لإزالة المنتج B.
  • سيتم الاحتفاظ بالعنصر (أ).
  • سيحتفظ المستخدمون بالسعر الحالي للعنصر (أ)، بما في ذلك أي مبالغ متبقية من الدفعات التمهيدية التي حصلوا عليها عند الاشتراك.
A أ (السلعة الأساسية)، ب نعم (استخدِم KEEP_EXISTING للحرف A)
  • تتم إضافة المنتج "ب" على الفور مع تحصيل رسوم نسبية.
  • سيتم الاحتفاظ بالعنصر (أ).
  • سيحتفظ المستخدمون بالسعر الحالي للعنصر (أ)، بما في ذلك أي مبالغ متبقية من الدفعات التمهيدية التي حصلوا عليها عند الاشتراك.
أ (السلعة الأساسية)، ب أ (السلعة الأساسية)، ج نعم (استخدِم KEEP_EXISTING للحرف A)
  • تم تحديد موعد لإزالة B بشكل مؤجّل.
  • تتم إضافة C على الفور مع احتساب رسوم نسبية.
  • سيتم الاحتفاظ بالعنصر (أ).
  • سيحتفظ المستخدمون بالسعر الحالي للعنصر (أ)، بما في ذلك أي مبالغ متبقية من الدفعات التمهيدية التي حصلوا عليها عند الاشتراك.
أ (السلعة الأساسية)، ب B (السلعة الأساسية) لا تم تحديد موعد لإزالة A بشكل مؤجّل.
أ (السلعة الأساسية)، ب C (المنتج الأساسي) نعم
  • يعتمد استبدال A بـ C على SubscriptionProductReplacementParams replacementMode
  • تم تحديد موعد لإزالة B بشكل مؤجّل.
أ (السلعة الأساسية)، ب C (السلعة الأساسية)، B نعم
  • يعتمد بديل A -> C على SubscriptionProductReplacementParams replacementMode.
  • لإبقاء العنصر B بدون تغيير، اضبط وضع الاستبدال على KEEP_EXISTING. بخلاف ذلك، يكون وضع الاستبدال التلقائي هو IMMEDIATE_WITHOUT_PRORATION.
أ (السلعة الأساسية)، ب C (المنتج الأساسي)، D نعم
  • يعتمد بديل A -> C على SubscriptionProductReplacementParams replacementMode.
  • تم تحديد موعد لإزالة B بشكل مؤجّل.
  • تتم إضافة D على الفور مع تحصيل رسوم متناسبة مع المدة المتبقية.
أ (السلعة الأساسية)، ب A (السلعة الأساسية)، C نعم
  • يعتمد استبدال A -> A وB -> C على وضع الاستبدال المتوفّر في SubscriptionProductReplacementParams replacementMode في كل ProductDetailsParams.
  • لإبقاء العنصر A بدون تغيير، اضبط وضع الاستبدال على KEEP_EXISTING.
أ (السلعة الأساسية)، ب، ج D (السلعة الأساسية)، B، C نعم
  • يعتمد بديل A->D وB->B وC->C على وضع الاستبدال المتوفّر في SubscriptionProductReplacementParams replacementMode في كل ProductDetailsParams.
  • لإبقاء العنصرين B وC بدون تغيير، اضبط وضع الاستبدال على KEEP_EXISTING.

عند استخدام SubscriptionUpdateParams

المنتجات الحالية العناصر المعدَّلة هل تحتاج إلى ضبط معلومات الاستبدال؟ السُلوك
أ (السلعة الأساسية)، ب A (المنتج الأساسي) لا
  • تم تحديد موعد لاحق لإزالة المنتج B.
  • يعتمد سلوك المنتج "أ" على إعدادات التغييرات المتعلقة بالخطة الأساسية والعرض الترويجي في الخطة الأساسية.
  • يتم تعديل سعر المنتج (أ) إلى أحدث سعر، وقد يفقد المستخدمون أي دفعات تمهيدية حصلوا عليها أثناء الاشتراك استنادًا إلى معايير الأهلية للاستفادة من العرض.
A أ (السلعة الأساسية)، ب لا
  • تتم إضافة المنتج "ب" على الفور مع تحصيل رسوم نسبية.
  • يعتمد سلوك المنتج "أ" على إعدادات التغييرات المتعلقة بالخطة الأساسية والعرض الترويجي في الخطة الأساسية.
  • يتم تعديل سعر المنتج (أ) إلى أحدث سعر، وقد يفقد المستخدمون أي دفعات تمهيدية حصلوا عليها أثناء الاشتراك استنادًا إلى معايير أهلية العرض.
أ (السلعة الأساسية)، ب A (السلعة الأساسية)، C لا
أ (السلعة الأساسية)، ب B (السلعة الأساسية) لا تم تحديد موعد لإزالة A بشكل مؤجّل.
أ (السلعة الأساسية)، ب C (المنتج الأساسي) نعم
  • يعتمد بديل A -> C على setSubscriptionReplacementMode (تم إيقافه نهائيًا في الإصدار 8.1 من PBL).
  • تم تحديد موعد لإزالة B بشكل مؤجّل.
أ (السلعة الأساسية)، ب C (السلعة الأساسية)، B نعم يعتمد بديل A -> C على setSubscriptionReplacementMode (تم إيقافه نهائيًا في الإصدار 8.1 من PBL).
أ (السلعة الأساسية)، ب C (المنتج الأساسي)، D نعم
  • يعتمد بديل A -> C على setSubscriptionReplacementMode (تم إيقافه نهائيًا في الإصدار 8.1 من PBL).
  • تم تحديد موعد لإزالة B بشكل مؤجّل.
  • تتم إضافة D على الفور مع تحصيل رسوم متناسبة مع المدة المتبقية.

الإشعارات في الوقت الفعلي الخاصة بالمطوّرين

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

تغييرات الأسعار للمشتركين الحاليين

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

إنهاء مجموعة نموذجية قديمة للأسعار

يؤثّر إنهاء مجموعة نموذجية قديمة أيضًا في الاشتراكات التي تتضمّن عمليات شراء إضافية. تنطبق القواعد التالية:

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

    مثال:

    • لنفترض أنّ لديك اشتراكًا يتضمّن ميزات إضافية (المنتج A والمنتج B)، ويتم تجديده في اليوم السابع من كل شهر.
    • يخضع المنتج "أ" لعملية نقل مستمرة للسعر من 7 دولار أمريكي إلى 10 دولار أمريكي، ومن المتوقّع أن يتم تطبيق الزيادة في السعر في 7 تموز (يوليو).
    • بدأ تغيير السعر الجديد من 5 دولار أمريكي إلى 6 دولار أمريكي للمنتج B في 2 يونيو. بما أنّ الزيادة الاختيارية في السعر تبدأ بعد 37 يومًا من عملية نقل البيانات، ستكون الزيادة الأولى في سعر السلعة B في 7 أغسطس.

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

  • تتضمّن رسالة البريد الإلكتروني من Google Play قائمة بجميع السلع التي سيتم تطبيق الزيادات أو الانخفاضات في أسعارها في اليوم نفسه.

إلغاء الاشتراك مع ميزات إضافية

يمكن للمستخدمين إلغاء عملية شراء اشتراك يتضمّن ميزات إضافية بالكامل من &quot;مركز اشتراكات Play&quot;، ولا يمكنك إلغاء عملية شراء اشتراك يتضمّن ميزات إضافية بالكامل إلا باستخدام Google Play Developer API.

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

إبطال الاشتراكات التي تتضمّن ميزات إضافية وردّ الأموال المدفوعة مقابلها

في ما يلي بعض الإرشادات المتعلّقة بإلغاء الاشتراكات وردّ الأموال المدفوعة مقابلها:

  • استخدِم Play Console لردّ مبلغ معيّن مقابل طلب محدّد بدون إبطال إمكانية الوصول إلى الاشتراك.

  • اتّصِل بالرقم orders.refund لردّ الأموال بالكامل مقابل دفعات اشتراك محدّدة دفعها المستخدم بدون إبطال إمكانية الوصول إلى الاشتراك.

  • اتّصِل بالرقم purchases.subscriptionsv2.revoke لإلغاء إذن الوصول إلى جميع عناصر الاشتراك على الفور. باستخدام واجهة برمجة التطبيقات هذه، يمكنك إجراء ما يلي:

    • إلغاء إذن الوصول إلى جميع العناصر وتقديم استرداد نسبي للأموال

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

    • إلغاء إذن الوصول إلى جميع العناصر وتقديم ردّ كامل للأموال

    • إلغاء إذن الوصول إلى منتج فردي مع استرداد الأموال المدفوعة بالكامل مقابل المنتج

إبطال منتج فردي في اشتراك يتضمّن ميزات إضافية

لإلغاء منتجات فردية في اشتراك يتضمّن حِزمًا إضافية بدون إلغاء عملية الشراء بالكامل، استخدِم الدالة purchases.subscriptionsv2.revoke مع ضبط الحقل ItemBasedRefund في RevocationContext. يمكن ضبط productId السلعة التي يجب إبطالها وردّ أموالها في الحقل ItemBasedRefund.

يمكن ضبط حقل ItemBasedRefund لعمليات الشراء التي تتضمّن منتج اشتراك واحدًا أو أكثر يتجدّد تلقائيًا.

  • إذا كانت هناك سلع نشطة متبقية في عملية شراء الاشتراك بعد إبطال السلعة المحدّدة في ItemBasedRefund، سيتم إبطال السلعة فقط وردّ الأموال المدفوعة بالكامل بدون التأثير في حالة الاشتراك.
  • إذا لم تتبقَّ أي سلع نشطة في عملية شراء الاشتراك بعد إبطال السلعة المحدّدة في ItemBasedRefund، سيتم إبطال السلعة وردّ أموالها بالكامل وإلغاء الاشتراك.

الاعتبارات

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

انتهاء صلاحية السلعة أثناء رفض الدفعة

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

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

اختيار فترة الاسترداد

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

تشمل المنتجات النشطة المنتجات التي كانت نشطة عند شراء اشتراك مع حِزم إضافية قبل محاولة التجديد مباشرةً، ولا تشمل أي منتجات تمت إضافتها حديثًا (ولن تكون مؤهَّلة إلا بعد استردادها)، كما لا تشمل أي منتجات لم تعُد نشطة بسبب إزالتها أو إيقافها.

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

فترة السماح

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

فترة تعليق الاشتراك

أثناء تعليق الاشتراك، يتم تعليق إمكانية الوصول إلى جميع المنتجات المضمّنة في الاشتراك إلى أن يتم استرداد الدفعة.

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

مثال:

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

  • في 22 أغسطس، يتم تحصيل 2.90 دولار أمريكي من المستخدم (10*9/31) لتحديد نسبة الاشتراك حتى 31 أغسطس، ولكن تنتهي صلاحية طريقة الدفع التي يستخدمها قبل ذلك، ويتم رفض الدفع في 22 أغسطس.

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

في المثال السابق، تم تعليق الاشتراك في 22 آب (أغسطس).

  • إذا تم استرداد الحساب في 25 آب (أغسطس)، أي قبل تاريخ التجديد العام في 1 أيلول (سبتمبر)، سيستعيد المستخدم إمكانية الوصول إلى كل من الخطة الأساسية وخطة الإضافة في اليوم نفسه. تم تغيير تاريخ الفوترة التالي إلى 4 أيلول (سبتمبر).

  • إذا لم يتم استرداد الحساب بعد 30 يومًا، سيتم إلغاء الاشتراك في 21 سبتمبر، وسيفقد المستخدم إمكانية الوصول إلى خطة الإضافة، وسيستعيد إمكانية الوصول إلى الخطة الأساسية حتى 30 سبتمبر.

في هذا المثال، يجب الحصول على expiryTime المعدَّل لجميع العناصر في الاشتراك مع الإضافات، لأنّه قد يتم استئناف إذن الوصول إلى بعض العناصر بعد فترة السماح وتعليق الحساب.

إعداد التقارير المالية والتسوية

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

بالنسبة إلى لوحات البيانات في Play Console:

  • يتم تقسيم إحصاءات الإيرادات المعروضة في قسم التقارير المالية ضمن وحدة التحكّم حسب السلع.

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