Usar o Play Faturamento na sua Atividade confiável na Web

André Cipriani Bandarra
André Cipriani Bandarra

Além de permitir que seu app venda produtos e assinaturas digitais na Play Store, o Google Play Faturamento oferece ferramentas para gerenciar seu catálogo, preços e assinaturas, relatórios úteis e um fluxo de finalização de compra com a Play Store que já conhece seus usuários. Ele também é um requisito para apps publicados na Play Store que vendem produtos e softwares digitais.

O Chrome 88 está sendo lançado com um teste de origem no Android que permite a integração de atividades confiáveis na Web com a API Payment Request e a API Digital Goods para implementar fluxos de compra pelo Google Play Faturamento. Esperamos que esse teste de origem também esteja disponível para o ChromeOS na versão 89.

Para facilitar a integração com o app Android, a equipe do programa Trusted Web Activity está introduzindo uma biblioteca de extensões para android-browser-helper. Este guia mostra as mudanças necessárias para integrar essa biblioteca a um aplicativo existente.

Observação:este artigo aborda a integração com o app Android. Se você estiver usando o Bubblewrap para criar o aplicativo, poderá usar a ferramenta para atualizá-lo. A implementação no Bubblewrap está sendo acompanhada neste problema. Este guia é destinado a quem não usam o Bubblewrap para atualizar o app.

build.gradle

A biblioteca de extensões de faturamento depende da versão 2.1.0 de android-browser-helper. Verifique se o aplicativo está usando uma versão igual ou maior que essa.

Também é necessário adicionar uma declaração de implementação para a biblioteca de extensões de faturamento:

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

DelegationService.java

O android-browser-helper é enviado com um DelegationService padrão que pode ser usado diretamente pelos apps. Ao usar a extensão de faturamento, você precisa de uma versão ligeiramente personalizada do DelegationService.

Para fazer isso, você precisará criar sua própria classe DelegationService que estenda a original e modifique onCreate(). Dentro de onCreate(), será necessário adicionar uma única chamada de método que registre o aplicativo como um gerenciador para a 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

No manifesto do Android, será necessário mudar a referência para a Delegation Library sua própria implementação. Na declaração service correspondente, substitua com.google.androidbrowserhelper.trusted.DelegationService pela classe recém-criada.

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

A biblioteca de faturamento também apresenta dois novos componentes que precisarão ser adicionados ao manifesto do Android: um Service ao qual o navegador pode se conectar e verificar se o aplicativo é compatível com o pagamento, e uma Activity que gerencia o próprio fluxo de pagamento:

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

Saiba mais sobre a API Digital Goods e o Google Play Faturamento

Este artigo abordou as etapas necessárias especificamente no aplicativo Android que usa a Atividade na Web Confiável, mas a API Google Play Billing tem a própria terminologia e inclui componentes de cliente e back-end. É altamente recomendável ler a documentação do Google Play Faturamento e da API Digital Goods e entender os conceitos antes de integrá-la a um aplicativo em produção.