Utiliser Play Billing dans votre activité Web fiable

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 parcours de paiement optimisé par le Play Store, qui est déjà familier à vos utilisateurs. Il est également obligatoire pour les applications publiées sur le Play Store qui vendent des produits numériques.

Chrome 88 est lancé avec une phase d'évaluation de l'origine sur Android, qui permet d'intégrer les activités Web fiables à l'API Payment Request et à l'API Digital Goods pour implémenter des flux d'achat via Google Play Billing. Nous prévoyons que cette phase de test Origin sera également disponible pour ChromeOS version 89.

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

Remarque:Cet article aborde l'intégration de l'application Android. Si vous utilisez Bubblewrap pour créer votre application, vous pourrez l'utiliser pour la mettre à jour. L'implémentation de Bubblewrap fait l'objet d'un suivi dans ce problème. Ce guide est destiné à ceux qui n'utilisent pas Bubblewrap pour mettre à jour leur application.

build.gradle

La bibliothèque d'extension de facturation elle-même dépend de la version 2.1.0 de android-browser-helper. Assurez-vous que votre application utilise une version supérieure ou égale à celle-ci.

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 de 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 vous-même la référence à la bibliothèque de délégation. 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 de facturation introduit également deux nouveaux composants qui doivent être ajoutés à votre fichier manifeste Android: un service auquel le navigateur peut se connecter et vérifier si l'application est compatible avec le paiement, et une activité 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 sur l'application Android qui utilise l'activité Web sécurisée, mais l'API Google Play Billing a sa propre terminologie et inclut des composants client et backend. Nous vous recommandons vivement de lire la documentation sur Google Play Billing et sur l'API Digital Goods, et de comprendre ses concepts avant de l'intégrer à une application en production.