Usa Fatturazione Play nell'attività web attendibile

André Cipriani Bandarra
André Cipriani Bandarra

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

Chrome 88 viene lanciato con una prova dell'origine su Android che consente l'integrazione delle attività web attendibili con l'API Payment Request e con l'API Digital Goods per implementare i flussi di acquisto tramite Fatturazione Google Play. Prevediamo che questa prova dell'origine sarà disponibile anche per ChromeOS nella versione 89.

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

Nota: questo articolo illustra l'integrazione per l'app per Android. Se utilizzi Bubblewrap per creare la tua applicazione, puoi utilizzare lo strumento per aggiornare l'app. L'implementazione su Bubblewrap è in fase di monitoraggio in questo problema. Questa guida è rivolta a chi non utilizza Bubble wrap per aggiornare l'app.

build.gradle

La libreria dell'estensione di fatturazione dipende dalla versione 2.1.0 di android-browser-helper. Assicurati che la tua applicazione utilizzi una versione uguale o superiore.

Devi anche aggiungere una dichiarazione di implementazione per la libreria delle estensioni 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. Se utilizzi l'estensione di fatturazione, ti serve una versione leggermente personalizzata di DelegationService.

A tale scopo, devi creare la tua classe DelegationService che estenda quella originale e sostituisca onCreate(). All'interno di onCreate(), devi aggiungere una chiamata a un singolo metodo che registri 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

Nel file manifest Android dovrai modificare il riferimento alla libreria delle deleghe nella 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 manifest Android: un servizio a cui il browser può connettersi per 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 su Fatturazione Google Play

Questo articolo illustra i passaggi necessari nello specifico sull'applicazione Android che utilizza Attività web attendibile, ma l'API Billing di Google Play ha una propria terminologia e include componenti client e backend. Ti consigliamo vivamente di leggere la documentazione relativa alla fatturazione Google Play e l'API Digital Goods e di comprendere i relativi concetti prima di integrarla in un'applicazione di produzione.