Gebruik Play Billing in uw vertrouwde webactiviteit

Naast dat uw app digitale goederen en abonnementen kan verkopen in de Play Store, biedt Google Play Billing tools voor het beheren van uw catalogus, prijzen en abonnementen, nuttige rapporten en een betaalstroom mogelijk gemaakt door de Play Store die al bekend is bij uw gebruikers. Het is ook een vereiste voor applicaties die in de Play Store zijn gepubliceerd en die digitale goederen verkopen.

Chrome 88 wordt gelanceerd met een Origin-proefversie op Android die de integratie van Trusted Web-activiteiten met de Payment Request API en de Digital Goods API mogelijk maakt om aankoopstromen via Google Play Billing te implementeren. We verwachten dat deze Origin Trial vanaf versie 89 ook beschikbaar zal zijn voor ChromeOS.

Om de integratie met de Android-app te vergemakkelijken, introduceert het Trusted Web Activity-team een ​​extensiebibliotheek voor Android-browser-helper . Deze handleiding laat u de wijzigingen zien die nodig zijn om deze bibliotheek in een bestaande applicatie te integreren.

Opmerking: dit artikel behandelt de integratie voor de Android-app. Als u Bubblewrap gebruikt om uw applicatie te bouwen, kunt u de tool gebruiken om uw app bij te werken. In dit nummer wordt de implementatie van Bubblewrap bijgehouden. Deze handleiding is bedoeld voor degenen die Bubblewrap niet gebruiken om hun app bij te werken.

bouw.gradle

De bibliotheek met factureringsextensies zelf is afhankelijk van versie 2.1.0 van android-browser-helper . Zorg ervoor dat uw toepassing een versie gebruikt die gelijk is aan of groter is dan deze.

U moet ook een implementatieverklaring voor de factureringsextensiebibliotheek toevoegen:

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

DelegationService.java

android-browser-helper wordt geleverd met een standaard DelegationService die rechtstreeks door apps kan worden gebruikt. Wanneer u de factureringsextensie gebruikt, heeft u een enigszins aangepaste versie van de DelegationService nodig.

Om dat te doen, moet u uw eigen DelegationService -klasse maken die de oorspronkelijke klasse uitbreidt en onCreate() overschrijft. Binnen onCreate() moet u een enkele methodeaanroep toevoegen die de toepassing registreert als handler voor de 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

Op het Android-manifest moet u de verwijzing naar de delegatiebibliotheek van uw eigen implementatie wijzigen. Vervang com.google.androidbrowserhelper.trusted.DelegationService in de bijbehorende service door uw nieuw gemaakte 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>

De factureringsbibliotheek introduceert ook twee nieuwe componenten die aan uw Android Manifest moeten worden toegevoegd: een service waarmee de browser verbinding kan maken en kan controleren of de applicatie de betaling ondersteunt, en een activiteit die de betalingsstroom zelf afhandelt:

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

Meer informatie over de Digital Goods API en Google Play Billing

In dit artikel worden de stappen besproken die specifiek nodig zijn voor de Android-applicatie die gebruikmaakt van vertrouwde webactiviteit, maar de Google Play Billing API heeft zijn eigen terminologie en bevat client- en backend-componenten. We raden u ten zeerste aan de documentatie van Google Play Billing en de Digital Goods API te lezen en de concepten ervan te begrijpen voordat u deze in een productietoepassing integreert.