منتجات متعدّدة يتم تحصيل سعرها مرة واحدة

يوضّح هذا المستند كيفية دمج تطبيقك مع ميزة المنتجات المتعددة في Play Billing Library (PBL).

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

الاعتبارات

عند إنشاء حِزم منتجات تُباع لمرة واحدة، يُرجى مراعاة ما يلي:

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

الدمج مع Play Billing Library

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

بدء مسار شراء

لإطلاق مسار شراء لمنتجات متعدّدة يتم تحصيل سعرها مرة واحدة، اتّبِع الخطوات التالية:

  1. أنشئ قائمة منتجات تتضمّن جميع المنتجات التي يتم تحصيل سعرها مرة واحدة باستخدام طريقة QueryProductDetailsParams.Builder.setProductList.

  2. يمكنك جلب جميع منتجاتك التي يتم تحصيل سعرها مرة واحدة باستخدام طريقة 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()) {
                 // …
          }
        }
      }
    });
  3. اضبط عنصر ProductDetails لكل منتج يتم تحصيل سعره مرة واحدة.

  4. حدِّد تفاصيل المنتج الذي يتم تحصيل سعره مرة واحدة في طريقة 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 في تطبيقك. والفرق الوحيد هو أنّه عليك منح إذن استخدام لجميع المنتجات بدلاً من منتج واحد فقط في عمليات شراء منتجات متعدّدة يتم تحصيل سعرها مرة واحدة، وذلك لكي يتمكّن المستخدم من الحصول على أذونات استخدام متعدّدة بعملية شراء واحدة. يؤدي شراء منتجات متعددة باستخدام رمز OTP إلى إرجاع عناصر متعددة يمكن استردادها باستخدام Purchase.getProducts() في مكتبة الفوترة في Google Play، ثم قائمة lineItems في purchases.products.get من Google Play Developer API.

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

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

عمليات ردّ الأموال

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

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

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

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

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

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