Usa Fatturazione Play nell'attività web attendibile

Oltre a consentire alla tua app di vendere prodotti digitali e abbonamenti sul Play Store, Fatturazione Google Play offre strumenti per gestire il tuo catalogo, i prezzi e gli abbonamenti, report utili e un flusso di pagamento basato sul Play Store che è già familiare ai tuoi utenti. È inoltre un requisito per le applicazioni pubblicate sul Play Store che vendono prodotti digitali.

Chrome 88 viene lanciato con un'Origin Trial su Android che consente l'integrazione di Attività web attendibili con l'API Payment Request e l'API Digital Goods per implementare i flussi di acquisto tramite la fatturazione di Google Play. Prevediamo che questa prova di Origin sarà disponibile anche per ChromeOS 89.

Per semplificare l'integrazione nell'app per Android, il team di Attività web attendibile sta introducendo una libreria di estensioni in android-browser-helper. Questa guida illustra le modifiche necessarie per integrare questa libreria in un'applicazione esistente.

Nota: questo articolo riguarda l'integrazione per l'app per Android. Se utilizzi Bubblewrap per creare la tua applicazione, potrai utilizzare lo strumento per aggiornarla. L'implementazione su Bubblewrap è monitorata in questo problema. Questa guida è rivolta a coloro che non utilizzano Bubblewrap per aggiornare la propria app.

build.gradle

La libreria delle estensioni di fatturazione stessa dipende dalla versione 2.1.0 di android-browser-helper. Assicurati che la tua applicazione utilizzi una versione uguale o successiva.

Dovrai anche aggiungere una dichiarazione di implementazione per la libreria dell'estensione di fatturazione:

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

DelegationService.java

android-browser-helper viene fornito con un DelegationService predefinito che può essere utilizzato direttamente dalle app. Quando utilizzi l'estensione di fatturazione, hai bisogno di una versione leggermente personalizzata del DelegationService.

Per farlo, devi creare la tua classe DelegationService che espanda quella originale e sostituisca onCreate(). All'interno di onCreate(), dovrai aggiungere una singola chiamata al metodo che registra l'applicazione come gestore per l'API Digital Goods:

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

In Android Manifest, dovrai modificare il riferimento alla libreria di delega della tua implementazione. Nella dichiarazione service corrispondente, sostituisci com.google.androidbrowserhelper.trusted.DelegationService con la classe appena creata.

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

La libreria di fatturazione introduce anche due nuovi componenti che devono essere aggiunti al file Android Manifest: un servizio a cui il browser può connettersi e verificare se l'applicazione supporta il pagamento e un'attività che gestisce il flusso di pagamento stesso:

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

Scopri di più sull'API Digital Goods e sulla fatturazione di Google Play

Questo articolo illustra i passaggi necessari specificamente nell'applicazione per Android che utilizza l'attività web attendibile, ma l'API Google Play Billing ha una propria terminologia e include componenti client e di backend. Ti consigliamo vivamente di leggere la documentazione di Fatturazione Google Play e dell'API Digital Goods e di comprendere i relativi concetti prima di integrarla in un'applicazione in produzione.