يتيح لك الاشتراك مع ميزات إضافية تجميع منتجات اشتراك متعددة معًا يمكن شراؤها وفوترتها وإدارتها معًا. يمكنك تقديم اشتراكاتك الحالية في كتالوج المنتجات كحِزم إضافية بسلاسة بدون الحاجة إلى تحديد أي تفاصيل مسبقًا أو إجراء أي إعدادات إضافية. يمكنك بدء مسار شراء يتضمّن عدة منتجات حالية متوفّرة عند الاشتراك، وبيعها كميزات إضافية.
الاعتبارات
يُرجى مراعاة النقاط التالية عند استخدام ميزة "الاشتراك مع حِزم إضافية":
لا تتوفّر إمكانية الاشتراك مع حِزم إضافية إلا للخطط الأساسية التي يتم تجديدها تلقائيًا.
يجب أن تتضمّن جميع السلع في عملية الشراء فترة الفوترة المتكرّرة نفسها. على سبيل المثال، لا يمكنك الحصول على اشتراك تتم فوترته سنويًا مع ميزات إضافية تتم فوترتها شهريًا.
يمكن أن يتضمّن الاشتراك 50 منتجًا كحدّ أقصى عند شراء حِزم إضافية.
هذه الميزة غير متوفّرة في كوريا الجنوبية (KR).
الدمج مع Play Billing Library
يوضّح هذا القسم كيفية دمج ميزة "الاشتراك مع حِزم إضافية" مع "مكتبة الفوترة في Play" (PBL). ويفترض هذا الدليل أنّك على دراية بخطوات الدمج الأولية لمكتبة الفوترة في Google Play، مثل إضافة الاعتمادية على مكتبة الفوترة في Google Play إلى تطبيقك وإعداد BillingClient والربط بخدمة Google Play. يركّز هذا القسم على جوانب دمج PBL الخاصة بالاشتراك مع حِزم إضافية.
بدء مسار شراء
لبدء مسار شراء اشتراك يتضمّن حِزمًا إضافية، اتّبِع الخطوات التالية:
يمكنك جلب جميع المنتجات المتوفّرة في اشتراكك باستخدام طريقة
BillingClient.queryProductDetailsAsync.اضبط عنصر
ProductDetailsParamsلكل سلعة.يمثّل العنصر الذي يمثّله كائن
ProductDetailsParamsعنصر الاشتراك، ويحدّد كلاً منProductDetailsالذي يشير إلى عنصر الاشتراك وofferTokenالذي يختار اشتراكًا معيّنًاbase planأوoffer.حدِّد تفاصيل السلعة في الطريقة
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، ثم قائمة lineItems في purchases.subscriptionsv2.get من Google Play Developer API.
تعديل الاشتراكات التي تتضمّن ميزات إضافية
سيؤدي أي تغيير في اشتراكك مع حِزم إضافية إلى ترقية أو الرجوع إلى إصدار سابق. لمزيد من المعلومات، يمكنك الاطّلاع على مقالة ترقية الاشتراكات أو الرجوع إلى إصدار سابق.
لتغيير أو استعادة عملية شراء حالية للاشتراك مع إضافات في تطبيقك، عليك استدعاء واجهة برمجة التطبيقات launchBillingFlow مع مَعلمات إضافية، والتأكّد من ما يلي:
- يجب دائمًا طلب
setOldPurchaseTokenباستخدام رمز الشراء الخاص بعملية شراء الاشتراك الحالية. - لترقية منتج أو الرجوع إلى إصدار أقدم أو الترقية إلى إصدار آخر، اتّصِل بالرقم
SubscriptionProductReplacementParams.setReplacementModeلتحديد كيفية التعامل مع تغيير الخطة بين المنتج القديم والجديد. بخلاف ذلك، ليست هناك حاجة إلى ضبط السمةSubscriptionProductReplacementParams. - عندما لا يتم تغيير العنصر الأساسي، يمكنك الاستمرار في استدعاء
SubscriptionProductReplacementParams.setSubscriptionReplacementModeلتطبيق سلوك استبدال معيّن. للاطّلاع على القواعد السارية في هذه الحالة، يُرجى الانتقال إلى إعادة الاشتراك أو التبديل بين الخطط ضمن الاشتراك نفسه.