استخدام خدمة "الفوترة في Play" في "النشاط على الويب الموثوق به"

أندريه سيبرياني باندارا
"أندريه سيبرياني باندارا"

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

سيتم إطلاق الإصدار 88 من Chrome يتضمّن إصدار تجريبي من الموقع الإلكتروني على نظام التشغيل Android يتيح دمج الأنشطة الموثوق بها على الويب مع Payment Request API وDigital Goods API لتنفيذ عمليات الشراء من خلال خدمة "الفوترة في Google Play". نتوقع أن تكون النسخة التجريبية هذه متاحة أيضًا لنظام التشغيل ChromeOS في الإصدار 89.

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

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

build.gradle

تعتمد مكتبة إضافة الفوترة نفسها على الإصدار 2.1.0 من android-browser-helper. تأكَّد من أنّ تطبيقك يستخدم إصدارًا مساويًا لذلك أو أكبر منه.

ستحتاج أيضًا إلى إضافة بيان تنفيذ لمكتبة إضافة الفوترة:

dependencies {
    ...
    implementation 'com.google.androidbrowserhelper:androidbrowserhelper:2.1.0'
    implementation 'com.google.androidbrowserhelper:billing:1.0.0-alpha05'
}

DelegationService.java

يشحن android-browser-helper مع DelegationService تلقائي يمكن أن تستخدمه التطبيقات مباشرةً. عند استخدام إضافة الفوترة، تحتاج إلى إصدار مخصص بعض الشيء من DelegationService.

لتنفيذ هذا الإجراء، عليك إنشاء فئة DelegationService الخاصة بك لتوسّع الصف الأصلي وتلغي onCreate(). داخل onCreate()، عليك إضافة استدعاء إجراء واحد يسجّل التطبيق كمعالج لواجهة برمجة التطبيقات Digital Goods API:

package com.example.yourapp;

import com.google.androidbrowserhelper.playbilling.digitalgoods.DigitalGoodsRequestHandler;
import com.google.androidbrowserhelper.trusted.DelegationService;

public class DelegationService
        extends com.google.androidbrowserhelper.trusted.DelegationService {
    @Override
    public void onCreate() {
        super.onCreate();
        registerExtraCommandHandler(new DigitalGoodsRequestHandler(getApplicationContext()));
    }
}

AndroidManifest.xml

في بيان Android، عليك تغيير المرجع الذي يخصّ "مكتبة التفويض" في عملية التنفيذ. في تعريف service المقابل، استبدِل com.google.androidbrowserhelper.trusted.DelegationService بالفئة التي تم إنشاؤها حديثًا.

<service
    android:name=".DelegationService"
    android:exported="true">

    <intent-filter>
        <action android:name="android.support.customtabs.trusted.TRUSTED_WEB_ACTIVITY_SERVICE"/>
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</service>

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

<activity
    android:name="com.google.androidbrowserhelper.playbilling.provider.PaymentActivity"
    android:theme="@android:style/Theme.Translucent.NoTitleBar"
    android:configChanges="keyboardHidden|keyboard|orientation|screenLayout|screenSize"
    android:exported="true">
    <intent-filter>
        <action android:name="org.chromium.intent.action.PAY" />
    </intent-filter>
    <meta-data
        android:name="org.chromium.default_payment_method_name"
        android:value="https://play.google.com/billing" />
</activity>
<!-- This service checks who calls it at runtime. -->
<service
    android:name="com.google.androidbrowserhelper.playbilling.provider.PaymentService"
    android:exported="true" >
    <intent-filter>
        <action android:name="org.chromium.intent.action.IS_READY_TO_PAY" />
    </intent-filter>
</service>

مزيد من المعلومات حول Digital Goods API و"الفوترة في Google Play"

تناولت هذه المقالة الخطوات المطلوبة تحديدًا على تطبيق Android الذي يستخدم "نشاط الويب الموثوق به"، إلا أنّ واجهة برمجة التطبيقات Google Play Billing API لها مصطلحاتها الخاصة وتتضمّن مكوّنات العميل والخلفية. ننصح بشدة بقراءة مستندات الفوترة في Google Play وDigital Goods API وفهم مفاهيمها قبل دمجها في تطبيق في مرحلة الإنتاج.