Korzystanie z Płatności w Google Play w zaufanej aktywności w internecie

André Cipriani Bandarra
André Cipriani Bandarra

Płatności w Google Play pozwalają Twojej aplikacji sprzedawać produkty cyfrowe i subskrypcje nie tylko w Sklepie Play, lecz także do zarządzania katalogiem, cenami i subskrypcjami, przydatnymi raportami i procesem płatności w Sklepie Play. Jest on też wymagany w przypadku aplikacji sprzedających produkty cyfrowe, publikowane w Sklepie Play.

Wprowadzamy Chrome 88 z okresem próbnym źródła na Androidzie, który umożliwia integrację Trusted Web Activities z interfejsami Payment Request API i Digital Goods API w celu wdrożenia procesu zakupu za pomocą Płatności w Google Play. Spodziewamy się, że ta wersja próbna Origin będzie również dostępna w ChromeOS w wersji 89.

Aby ułatwić integrację z aplikacją na Androida, zespół Zaufanej aktywności w internecie wprowadza bibliotekę rozszerzeń android-browser-helper. W tym przewodniku omawiamy zmiany wymagane do integracji tej biblioteki z dotychczasową aplikacją.

Uwaga: te artykuły dotyczą integracji z aplikacją na Androida. Jeśli tworzysz aplikację, korzystając z Bubblewrap, możesz aktualizować aplikację za pomocą tego narzędzia. Implementacja bąbelkowej folii jest śledzona w ramach tego problemu. Ten przewodnik jest przeznaczony dla osób, które nie korzystają z tej funkcji do aktualizowania aplikacji.

build.gradle

Sama biblioteka rozszerzeń płatności jest zależna od wersji 2.1.0 android-browser-helper. Upewnij się, że Twoja aplikacja korzysta z wersji o wyższej lub wyższej wersji.

Musisz też dodać deklarację implementacji dla biblioteki rozszerzeń płatności:

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

DelegationService.java

android-browser-helper ma domyślną wartość DelegationService, której mogą używać bezpośrednio aplikacje. Jeśli korzystasz z rozszerzenia płatności, potrzebujesz nieco dostosowanej wersji komponentu DelegationService.

Aby to zrobić, musisz utworzyć własną klasę DelegationService, która rozszerza dotychczasową i zastępuje onCreate(). W pliku onCreate() należy dodać jedno wywołanie metody, które rejestruje aplikację jako moduł obsługi interfejsu Digital Goods API:

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

W pliku manifestu Androida musisz zmienić odniesienie do Biblioteki delegacji we własnej implementacji. W odpowiedniej deklaracji service zastąp com.google.androidbrowserhelper.trusted.DelegationService nowo utworzoną klasą.

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

W bibliotece płatności pojawiły się też 2 nowe komponenty, które należy dodać do pliku manifestu Androida: usługę, z którą przeglądarka może się połączyć, aby sprawdzić, czy aplikacja obsługuje płatność, oraz aktywność, która sama obsługuje proces płatności:

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

Więcej informacji o interfejsie Digital Goods API i Płatnościach w Google Play

W tym artykule omówiliśmy czynności wymagane w przypadku aplikacji na Androida, która korzysta z zaufanej aktywności internetowej, ale interfejs Google Play Billing API ma własną terminologię i obejmuje klientów oraz komponenty backendu. Zdecydowanie zalecamy zapoznanie się z dokumentacją Płatności w Google Play i interfejsu Digital Goods API oraz zrozumieniem pojęć przed zintegrowaniem ich z aplikacją w środowisku produkcyjnym.