Utiliser Play Billing dans votre activité Web fiable

André Cipani Bandarra
André Cipriani Bandarra

En plus de permettre à votre application de vendre des produits numériques et des abonnements sur le Play Store, Google Play Billing propose des outils pour gérer votre catalogue, vos prix et vos abonnements, des rapports utiles et un processus de paiement optimisé par le Play Store, que vos utilisateurs connaissent déjà. Il s'agit également d'une exigence pour les applications publiées sur le Play Store qui vendent des produits numériques.

Chrome 88 est lancé avec une phase d'évaluation sur Android qui permet d'intégrer les activités Web fiables avec l'API Payment Request et l'API Digital Goods pour implémenter les parcours d'achat via Google Play Billing. Cette phase d'évaluation devrait être également disponible pour ChromeOS sur la version 89.

Afin de faciliter l'intégration à l'application Android, l'équipe Trusted Web Activity propose une bibliothèque d'extensions à android-browser-helper. Ce guide vous présente les modifications requises pour intégrer cette bibliothèque à une application existante.

Remarque:Cet article porte sur l'intégration pour l'application Android. Si vous utilisez Bubblewrap pour créer votre application, vous pourrez la mettre à jour à l'aide de l'outil. L'implémentation de Bubblewrap est suivie dans ce problème. Ce guide est destiné aux personnes qui n'utilisent pas Bubblewrap pour mettre à jour leur application.

build.gradle

La bibliothèque d'extensions de facturation proprement dite dépend de la version 2.1.0 de android-browser-helper. Assurez-vous que votre application utilise une version supérieure ou égale à cette version.

Vous devez également ajouter une déclaration d'implémentation pour la bibliothèque d'extensions de facturation:

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

DelegationService.java

android-browser-helper est fourni avec un DelegationService par défaut qui peut être utilisé directement par les applications. Lorsque vous utilisez l'extension de facturation, vous avez besoin d'une version légèrement personnalisée de DelegationService.

Pour ce faire, vous devez créer votre propre classe DelegationService qui étend la classe d'origine et remplace onCreate(). Dans onCreate(), vous devez ajouter un seul appel de méthode qui enregistre l'application en tant que gestionnaire pour 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

Dans le fichier manifeste Android, vous devez modifier la référence à la bibliothèque de délégation pour votre propre implémentation. Dans la déclaration service correspondante, remplacez com.google.androidbrowserhelper.trusted.DelegationService par la classe que vous venez de créer.

<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 bibliothèque Billing introduit également deux nouveaux composants qui devront être ajoutés à votre fichier manifeste Android: un Service auquel le navigateur peut se connecter pour vérifier si l'application accepte le paiement, et une Activity qui gère le flux de paiement lui-même:

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

En savoir plus sur l'API Digital Goods et Google Play Billing

Cet article décrit les étapes nécessaires spécifiquement pour l'application Android qui utilise l'activité Web fiable. Cependant, l'API Google Play Billing possède sa propre terminologie et inclut des composants client et backend. Nous vous recommandons vivement de lire la documentation de Google Play Billing et de l'API Digital Goods, et de comprendre ses concepts avant de les intégrer à une application en production.