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

Oprócz umożliwienia w aplikacji sprzedaży produktów cyfrowych i subskrypcji w Sklepie Play Płatności w Google Play zapewniają narzędzia do zarządzania katalogiem, cenami i subskrypcjami, przydatnymi raportami oraz procesem płatności opartym na Sklepie Play. Jest to również wymagane w przypadku aplikacji opublikowanych w Sklepie Play, które sprzedają produkty cyfrowe.

Chrome 88 jest dostępny w wersji Origin Trial na Androida, która umożliwia integrację Trusted Web ActivitiesPayment Request APIDigital Goods API w celu wdrożenia procesów zakupu za pomocą Rozliczeń w Google Play. Spodziewamy się, że ta wersja próbna będzie dostępna również na ChromeOS w wersji 89.

Aby ułatwić integrację z aplikacją na Androida, zespół zaufanej aktywności w internecie wprowadza bibliotekę rozszerzeń android-browser-helper. Z tego przewodnika dowiesz się, jakie zmiany musisz wprowadzić, aby zintegrować tę bibliotekę z dotychczasową aplikacją.

Uwaga: ten artykuł dotyczy integracji z aplikacją na Androida. Jeśli do kompilowania aplikacji używasz Bubblewrap, możesz zaktualizować aplikację za pomocą tego narzędzia. Wdrożenie Bubblewrap jest śledzone w tym zgłoszeniu. Ten przewodnik jest przeznaczony dla osób, które nie używają Bubblewrap do aktualizowania aplikacji.

build.gradle

Biblioteka rozszerzenia płatności zależy od wersji 2.1.0 biblioteki android-browser-helper. Upewnij się, że aplikacja używa wersji co najmniej tej wersji.

Musisz też dodać deklarację implementacji 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 jest dostarczany z domyślnym DelegationService, którego aplikacje mogą używać bezpośrednio. Jeśli korzystasz z rozszerzenia do płatności, musisz użyć nieco zmodyfikowanej wersji DelegationService.

Aby to zrobić, musisz utworzyć własną klasę DelegationService, która rozszerza oryginalną klasę i zastępuje metodę onCreate(). W funkcji onCreate() musisz 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ć odwołanie do biblioteki delegowania, którą sam zaimplementujesz. 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>

Biblioteka płatności wprowadza 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ć i sprawdzić, czy aplikacja obsługuje płatności, oraz aktywność, która obsługuje sam 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 opisaliśmy czynności, które należy wykonać w przypadku aplikacji na Androida korzystającej z działania Trusted Web Activity, ale interfejs Google Play Billing API ma własną terminologię i obsługuje komponenty klienta i back-endu. Zdecydowanie zalecamy zapoznanie się z dokumentacją Płatności w Google Play i interfejsem Digital Goods API oraz zapoznanie się z tymi zasadami, zanim zaimplementujesz je w aplikacji w środowisku produkcyjnym.