إلى جانب السماح لتطبيقك ببيع السلع والاشتراكات الرقمية على "متجر 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 وفهم مفاهيمها قبل دمجها في تطبيق في مرحلة الإنتاج.