Play Billing in deinen vertrauenswürdigen Webaktivitäten verwenden

Bandarra
André Cipriani Bandarra

Google Play Billing ermöglicht es deiner App nicht nur, digitale Waren und Abos im Play Store zu verkaufen, sondern bietet auch Tools zum Verwalten deines Katalogs, deiner Preise und Abos, nützliche Berichte und einen vom Play Store unterstützten Bezahlvorgang. Sie gilt auch für Apps, die im Play Store veröffentlicht werden und mit denen digitale Waren verkauft werden.

Chrome 88 wird mit einem Ursprungstest für Android eingeführt. Damit können vertrauenswürdige Web-Aktivitäten in die Payment Request API und die Digital Goods API eingebunden werden, um Kaufvorgänge über Google Play Billing zu implementieren. Dieser Ursprungstest wird voraussichtlich auch für ChromeOS ab Version 89 verfügbar sein.

Um die Integration in die Android-App zu vereinfachen, führt das Trusted Web Activity-Team eine Erweiterungsbibliothek für android-browser-helper ein. In diesem Leitfaden erfahren Sie, welche Änderungen erforderlich sind, um diese Bibliothek in eine vorhandene Anwendung einzubinden.

Hinweis:In diesem Artikel wird die Integration für die Android-App beschrieben. Wenn Sie Bubblewrap zum Erstellen Ihrer App verwenden, können Sie das Tool zum Aktualisieren Ihrer App verwenden. Die Implementierung von Bubblewrap wird in diesem Problem nachverfolgt. Dieser Leitfaden richtet sich an Nutzer, die Bubblewrap nicht zum Aktualisieren ihrer App verwenden.

build.gradle

Die Bibliothekserweiterung selbst hängt von der Version 2.1.0 von android-browser-helper ab. Achten Sie darauf, dass Ihre Anwendung eine Version verwendet, die gleich oder höher ist.

Außerdem muss eine Implementierungsdeklaration für die Billing Extensions Library hinzugefügt werden:

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

DelegationService.java

android-browser-helper wird mit einem standardmäßigen DelegationService ausgeliefert, der direkt von Apps verwendet werden kann. Wenn Sie die Abrechnungserweiterung verwenden, benötigen Sie eine leicht angepasste Version von DelegationService.

Dazu müssen Sie eine eigene DelegationService-Klasse erstellen, die die ursprüngliche Klasse erweitert und onCreate() überschreibt. Innerhalb von onCreate() müssen Sie einen einzelnen Methodenaufruf hinzufügen, der die Anwendung als Handler für die Digital Goods API registriert:

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

Im Android-Manifest müssen Sie den Verweis auf die Delegationsbibliothek Ihrer eigenen Implementierung ändern. Ersetzen Sie in der entsprechenden service-Deklaration com.google.androidbrowserhelper.trusted.DelegationService durch die neu erstellte Klasse.

<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>

Die Billing Library enthält auch zwei neue Komponenten, die dem Android-Manifest hinzugefügt werden müssen: einen Dienst, mit dem sich der Browser verbinden kann, um zu prüfen, ob die App die Zahlung unterstützt, und eine Activity, die den Zahlungsvorgang selbst verarbeitet:

<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>

Weitere Informationen zur Digital Goods API und zu Google Play Billing

In diesem Artikel wurden die Schritte beschrieben, die speziell für die Android-App erforderlich sind, die Trusted Web Activity verwendet. Die Google Play Billing API hat jedoch eine eigene Terminologie und enthält Client- und Back-End-Komponenten. Wir empfehlen Ihnen dringend, die Dokumentation zu Google Play Billing und der Digital Goods API zu lesen und sich mit den Konzepten vertraut zu machen, bevor Sie sie in eine Anwendung in der Produktion einbinden.