Cómo usar la Facturación Play en tu Actividad web de confianza

Además de permitir que la app venda artículos digitales y suscripciones en Play Store, La Facturación Google Play ofrece herramientas útiles para administrar el catálogo, los precios y las suscripciones, y un flujo de confirmación de la compra con la tecnología de Play Store que los usuarios ya conocen. Integra también es un requisito para las aplicaciones publicadas en Play Store que venden artículos digitales.

Chrome 88 se lanzará con una prueba de origen en Android que permite la integración de Trusted Web Activities con la Payment Request API y la Digital Goods API para implementar flujos de compra a través de la Facturación Google Play Esperamos que esta prueba de origen también esté disponible para ChromeOS en la versión 89.

Para facilitar la integración en la aplicación para Android, el equipo de Trusted Web Activity presenta Una biblioteca de extensiones para android-browser-helper. En esta guía, se indican los cambios necesarios para integrar esta biblioteca en una aplicación existente.

Nota: En este artículo, se describe la integración de la app para Android. Si utilizas Bubblewrap para compilar tu aplicación, podrás usar la herramienta para actualizar tu app. El implementación en Bubblewrap con este problema. Esta guía está pensada para aquellos que no usan Bubblewrap para actualizar su app.

build.gradle

La biblioteca de extensiones de facturación depende de la versión 2.1.0 de android-browser-helper. Asegúrate de que si tu aplicación usa una versión igual o superior a esta.

También deberás agregar una declaración de implementación para la biblioteca de extensiones de facturación:

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

DelegationService.java

android-browser-helper se envía con un DelegationService predeterminado que las apps pueden usar directamente. Si desea utilizar la extensión de facturación, necesita una versión ligeramente personalizada de la DelegationService

Para ello, deberás crear tu propia clase DelegationService que extienda el original y anula onCreate(). Dentro de onCreate(), deberás agregar un solo llamada de método que registre la aplicación como un controlador para la API de 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

En el manifiesto de Android, deberás cambiar la referencia a la biblioteca de delegación que quieras para implementarlos. En la declaración service correspondiente, reemplaza com.google.androidbrowserhelper.trusted.DelegationService por la clase que acabas de crear.

<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 biblioteca de facturación también presenta dos componentes nuevos que deberás agregar a tu dispositivo Android Manifiesto: Es un servicio al que se puede conectar el navegador y verificar si la aplicación es compatible con pago, y una actividad que administre el flujo de pago:

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

Más información sobre la API de Digital Goods y la Facturación Google Play

En este artículo, se describen los pasos necesarios específicamente en la aplicación para Android que utiliza Trusted Web Actividad, pero la API de Facturación Google Play tiene su propia terminología e incluye cliente y backend o los componentes de la solución. Te recomendamos que leas el artículo sobre Facturación Google Play y el Digital Goods API y la comprensión de sus conceptos antes de integrarla en una aplicación en producción.