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

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

تتيح لك ميزة المنتجات المتعدّدة للمنتجات التي يتم تحصيل سعرها مرة واحدة (OTP) دمج عدة منتجات من هذا النوع في وحدة واحدة. يمكن بعد ذلك شراء هذه المنتجات المجمّعة وتحصيل فواتيرها وإدارتها بشكل جماعي. يمكنك أيضًا إنشاء عروض خصم على هذه المنتجات المجمّعة من هذا النوع لتشجيع المستخدمين على شرائها.

الاعتبارات

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

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

التكامل مع مكتبة الفوترة في Play

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

بدء مسار الشراء

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

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

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

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

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

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

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

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

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

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

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