يوضّح هذا المستند كيفية دمج تطبيقك مع ميزة المنتجات المتعددة في Play Billing Library (PBL).
تتيح لك ميزة "منتجات متعدّدة في حزمة واحدة" دمج عدة منتجات يتم تحصيل سعرها مرة واحدة في حزمة واحدة. ويمكن بعد ذلك شراء هذه المنتجات المجمّعة ودفع فواتيرها وإدارتها بشكل جماعي. يمكنك أيضًا إنشاء عروض خصومات لحِزم العروض هذه لتشجيع المستخدمين على شراء المنتجات.
الاعتبارات
عند إنشاء حِزم منتجات يتم تحصيل سعرها مرة واحدة، يُرجى مراعاة ما يلي:
- لا يمكنك تضمين اشتراكات في حِزمة منتجات يتم تحصيل سعرها مرة واحدة.
- لا يمكنك الجمع بين المحتوى الرقمي والخدمة في حزمة منتجات يتم تحصيل سعرها مرة واحدة.
- يجب أن تكون المنتجات المجمّعة التي يتم تحصيل سعرها مرة واحدة متاحة للتنزيل الفوري. على سبيل المثال، لا يمكن شراء حزمة منتجات يتم تحصيل سعرها مرة واحدة كطلب مُسبَق لأنّها غير متاحة للتنزيل الفوري.
- لا يتيح المنتج المتعدد الذي يتم تحصيل سعره مرة واحدة خيار الشراء أو الاستئجار.
الدمج مع Play Billing Library
يفترض هذا القسم أنّك على دراية بخطوات الدمج الأولية لمكتبة Play Billing Library، مثل إضافة عنصر تابع لمكتبة Play Billing Library إلى تطبيقك وتهيئة BillingClient والاتصال بخدمة Google Play. يركّز هذا القسم على جوانب دمج PBL الخاصة بعمليات شراء OTP لمنتجات متعدّدة.
بدء مسار شراء
لإطلاق مسار شراء لمنتجات متعدّدة يتم تحصيل سعرها مرة واحدة، اتّبِع الخطوات التالية:
أنشئ قائمة منتجات تتضمّن جميع المنتجات التي يتم تحصيل سعرها مرة واحدة باستخدام طريقة QueryProductDetailsParams.Builder.setProductList.
يمكنك استرداد جميع المنتجات التي يتم تحصيل سعرها مرة واحدة باستخدام طريقة
BillingClient.queryProductDetailsAsync.يوضّح المثال التالي كيفية استرداد جميع منتجاتك التي يتم شراؤها لمرة واحدة:
Java
billingClient.queryProductDetailsAsync( queryProductDetailsParams, new ProductDetailsResponseListener() { public void onProductDetailsResponse( BillingResult billingResult, QueryProductDetailsResult productDetailsResult) { // check billingResult // … // process productDetailsList returned by QueryProductDetailsResult ImmutableList
productDetailsList = productDetailsResult.getProductDetailsList(); for (ProductDetails productDetails : productDetailsList) { for (OneTimePurchaseOfferDetails oneTimePurchaseOfferDetails : productDetails.getOneTimePurchaseOfferDetailsList()) { // … } } } }); اضبط عنصر
ProductDetailsلكل منتج يتم تحصيل سعره مرة واحدة.حدِّد تفاصيل المنتج الذي يتم تحصيل سعره مرة واحدة في طريقة
BillingFlowParams.Builder.setProductDetailsParamsList. تحدّد الفئةBillingFlowParamsتفاصيل مسار الشراء.يوضّح المثال التالي كيفية بدء مسار الفوترة لشراء منتجات متعددة باستخدام كلمة مرور صالحة لمرة واحدة:
Java
BillingClient billingClient = BillingClient.newBuilder() // set other options .build(); // ProductDetails obtained from queryProductDetailsAsync(). ProductDetails productDetails1 = ...; ProductDetails productDetails2 = ...; ArrayList
productDetailsList = new ArrayList<>(); productDetailsList.add(productDetails1); productDetailsList.add(productDetails2); BillingFlowParams billingFlowParams = BillingFlowParams.newBuilder() .setProductDetailsParamsList(productDetailsList) .build(); billingClient.launchBillingFlow(billingFlowParams);
معالجة عمليات الشراء
تتم معالجة عمليات شراء منتجات متعدّدة يتم تحصيل سعرها مرة واحدة بالطريقة نفسها المتبعة في عمليات شراء منتج واحد، كما هو موضّح في مقالة دمج Google Play Billing Library في تطبيقك. الفرق الوحيد هو أنّه عليك منح إذن استخدام لجميع المنتجات بدلاً من منتج واحد فقط عند شراء منتجات متعدّدة يتم تحصيل سعرها مرة واحدة، وذلك لكي يتمكّن المستخدم من الحصول على أذونات استخدام متعددة بعملية شراء واحدة.
تعرض عملية شراء منتجات متعددة باستخدام ميزة "الشراء عند الطلب" عدة عناصر يمكن استردادها باستخدام Purchase.getProducts() في مكتبة الفوترة في Google Play، ثم قائمة lineItems في purchases.products.get من Google Play Developer API.
الإشعارات في الوقت الفعلي الخاصة بالمطوّرين
لا يتم توفير الحقل sku في RTDN لعمليات شراء منتجات متعددة باستخدام كلمة مرور صالحة لمرة واحدة.
تمثّل عمليات شراء المحتوى لمرة واحدة لمنتجات متعدّدة أكثر من منتج واحد. وبالتالي، يمكنك استخدام واجهات Play Developer API للحصول على بيانات عمليات الشراء والاطّلاع على جميع السلع فيها.
عمليات ردّ الأموال
في عملية شراء تتضمّن منتجات متعددة وتتطلّب إدخال كلمة مرور صالحة لمرة واحدة، لا يمكن للمستخدمين طلب استرداد الأموال المدفوعة مقابل سلع فردية، ولا يمكنك أنت أيضًا ردّ الأموال المدفوعة مقابل سلع فردية. ومع ذلك، يُسمح بطلب واسترداد الأموال المدفوعة مقابل عملية شراء كاملة باستخدام كلمة مرور صالحة لمرة واحدة لعدة منتجات. إذا كنت ستلغي عملية شراء منتجات متعددة يتم تحصيل سعرها مرة واحدة لأحد المستخدمين، سيتم إلغاء جميع أذونات الوصول المرتبطة بعملية الشراء.
إعداد التقارير المالية والتسوية
استخدِم تقرير الأرباح لتسوية عمليات شراء حزمة المنتجات النشطة التي تتم لمرة واحدة مع عمليات الدفع والمعاملات على Google Play. يحتوي كل عنصر من عناصر سطر المعاملة على معرّف طلب. بالنسبة إلى عمليات شراء منتجات متعددة باستخدام كلمة المرور صالحة لمرة واحدة (OTP)، سيتضمّن تقرير الأرباح وتقرير المبيعات المقدَّرة صفوفًا منفصلة (تحتوي على مُعرّف الطلب نفسه) لكل معاملة، مثل تحصيل رسوم ورسم وضرائب وعمليات ردّ الأموال، وذلك لكل منتج معنيّ.
بالنسبة إلى لوحات البيانات في Play Console:
يتم تقسيم إحصاءات الأرباح المعروضة في قسم التقارير المالية في وحدة التحكّم حسب المنتجات الفردية.
تعرض إدارة الطلبات عمليات شراء منتجات متعددة باستخدام رمز OTP، كما تعرض قوائم مفصّلة بالمنتجات التي تم شراؤها. من خلال إدارة الطلبات، يمكنك إلغاء عملية شراء أجراها أحد المستخدمين أو ردّ أموالها بالكامل أو إبطالها.