Wskazówki dotyczące integracji w aplikacji tylko w przypadku rozliczeń alternatywnych

Z tego przewodnika dowiesz się, jak zintegrować interfejsy API, aby oferować tylko rozliczenia alternatywne (tj. bez opcji wyboru przez użytkownika) w odpowiednich aplikacjach. Aby dowiedzieć się więcej o tych programach w tym wymagania i zasięg geograficzny, można znaleźć w sekcji Informacje o alternatywach Płatności.

Konfigurowanie Biblioteki płatności w Play

Dodaj zależność Biblioteki płatności w Play do aplikacji na Androida. Aby użyć funkcji interfejsów API rozliczeń alternatywnych musisz używać wersji 6.1 lub nowszej.

Połącz z Google Play

Pierwsze kroki procesu integracji są takie same jak opisane w przewodnik po integracji rozliczeń w Google Play z kilkoma zmianami, zainicjowanie klienta BillingClient:

Poniższy przykład pokazuje inicjowanie BillingClient z tymi modyfikacje:

Kotlin


var billingClient = BillingClient.newBuilder(context)
    .enableAlternativeBillingOnly()
    .build()

Java

private BillingClient billingClient = BillingClient.newBuilder(context)
    .enableAlternativeBillingOnly()
    .build();

Po zainicjowaniu BillingClient musisz nawiązać połączenie z Google Play zgodnie z opisem w przewodniku po integracji.

Sprawdzam dostępność

Aplikacja powinna potwierdzić, że dostępny jest tylko alternatywny system rozliczeniowy, kontaktując się z nim przez telefon isAlternativeBillingOnlyAvailableAsync

Ten interfejs API zwróci wartość BillingResponseCode.OK, jeśli tylko rozliczenia alternatywne są i dostępności informacji. Szczegółowe informacje o tym, jak aplikacja powinna działać, znajdziesz w artykule o obsłudze odpowiedzi. odpowiadać na inne kody odpowiedzi.

Kotlin


billingClient.isAlternativeBillingOnlyAvailableAsync(object:
    AlternativeBillingOnlyAvailabilityListener {
        override fun onAlternativeBillingOnlyAvailabilityResponse(
            billingResult: BillingResult) {
            if (billingResult.responseCode !=  BillingResponseCode.OK) {
                // Handle failures such as retrying due to network errors,
                // handling alternative billing only being unavailable, etc.
                return
            }

            // Alternative billing only is available. Continue with steps in
            // the guide.
        }
    });

Java


billingClient.isAlternativeBillingOnlyAvailable(
    new AlternativeBillingOnlyAvailabilityListener() {
        @Override
        public void onAlternativeBillingOnlyAvailabilityResponse(
            BillingResult billingResult) {
            if (billingResult.getResponseCode() != BillingResponseCode.OK) {
                 // Handle failures such as retrying due to network errors,
                 // handling alternative billing only being unavailable,
                 // etc.
                return;
            }

            // Alternative billing only is available. Continue with steps in
            // the guide.
        }
    });

Okno z informacjami dla użytkowników

.

Aby przeprowadzić integrację tylko z rozliczeniami alternatywnymi, odpowiednia aplikacja musi wyświetlać ekran z informacjami, który pomaga użytkownikom zrozumieć, że płatności nie będą zarządzane przez Google Play. Aby wyświetlić ekran z informacjami, należy wywołać showAlternativeBillingOnlyInformationDialog API przed rozpoczęciem alternatywnego systemu rozliczeniowego. Jeśli użytkownik potwierdził już używanie tego interfejsu API zwykle nie powoduje wyświetlenia tego okna. ponownie. Może się zdarzyć, że okno zostanie ponownie wyświetlone użytkownikowi w określonych sytuacjach. np. czy użytkownik wyczyści pamięć podręczną urządzenia.

Kotlin


// An activity reference from which the alternative billing only information
// dialog will be launched.
val activity : Activity = ...;

val listener : AlternativeBillingOnlyInformationDialogListener =
    AlternativeBillingOnlyInformationDialogListener { 
        override fun onAlternativeBillingOnlyInformationDialogResponse(
            billingResult: BillingResult) {
            // check billingResult
        }
}

val billingResult =
    billingClient.showAlternativeBillingOnlyInformationDialog(activity,
        listener)

Java


// An activity reference from which the alternative billing only information
// dialog will be launched.
Activity activity = ...;

AlternativeBillingOnlyInformationDialogListener listener =
    new AlternativeBillingOnlyInformationDialogListener() {
        @Override
        public void onAlternativeBillingOnlyInformationDialogResponse(
            BillingResult billingResult) {
                // check billingResult
            }
    };

BillingResult billingResult =
    billingClient.showAlternativeBillingOnlyInformationDialog(activity,
        listener);

Jeśli ta metoda zwraca BillingResponseCode.OK, aplikacja może kontynuować z transakcją. W przypadku kodu BillingResponseCode.USER_CANCELED aplikacja powinna wywołać metodę showAlternativeBillingOnlyInformationDialog, aby wyświetlać kolejne okno. Aby poznać inne kody odpowiedzi, zapoznaj się z informacjami o obsłudze odpowiedzi .

Zgłaszanie transakcji do Google Play

Wszystkie transakcje dokonane przy użyciu alternatywnego systemu rozliczeniowego muszą być zgłaszane do Google Play przez wywołanie interfejsu Google Play Developer API z backendu 24 godziny, co daje externalTransactionToken, który jest uzyskiwany przy użyciu Interfejs API został opisany poniżej. Dla każdego obiektu externalTransactionToken należy wygenerować nowy token zewnętrzny jednorazowy zakup, każdą nową subskrypcję oraz przejście na istniejącej subskrypcji. Aby dowiedzieć się, jak zgłosić transakcję raz Można uzyskać externalTransactionToken, postępując zgodnie z przewodnikiem po integracji backendu.

Kotlin

billingClient.createAlternativeBillingOnlyReportingDetailsAsync(object:
    AlternativeBillingOnlyReportingDetailsListener {
        override fun onAlternativeBillingOnlyTokenResponse(
            billingResult: BillingResult,
            alternativeBillingOnlyReportingDetails:
                AlternativeBillingOnlyReportingDetails?) {
            if (billingResult.responseCode !=  BillingResponseCode.OK) {
                // Handle failures such as retrying due to network errors.
                return
            }

            val externalTransactionToken =
                alternativeBillingOnlyReportingDetails?
                    .externalTransactionToken

            // Send transaction token to backend and report to Google Play.
        }
    });

Java


billingClient.createAlternativeBillingOnlyReportingDetailsAsync(
    new AlternativeBillingOnlyReportingDetailsListener() {
        @Override
        public void onAlternativeBillingOnlyTokenResponse(
            BillingResult billingResult,
            @Nullable AlternativeBillingOnlyReportingDetails
                alternativeBillingOnlyReportingDetails) {
            if (billingResult.getResponseCode() != BillingResponseCode.OK) {
                // Handle failures such as retrying due to network errors.
                return;
            }

            String transactionToken =
                alternativeBillingOnlyReportingDetails
                .getExternalTransactionToken();

            // Send transaction token to backend and report to Google Play.
        }
    });

Obsługa odpowiedzi

Powyższe metody isAlternativeBillingOnlyAvailableAsync(), showAlternativeBillingOnlyInformationDialog() i createAlternativeBillingOnlyReportingDetailsAsync() może wrócić non-BillingResponseCode.OK w przypadku błędów. Zalecane obsługa błędów jest opisana poniżej:

  • ERROR: to jest błąd wewnętrzny. Nie dokonuj transakcji. Zadzwoń i spróbuj jeszcze raz showAlternativeBillingOnlyInformationDialog(), aby wyświetlić informacje wyświetli się użytkownikowi, gdy następnym razem spróbuje dokonać zakupu.
  • FEATURE_NOT_SUPPORTED: interfejsy API do rozliczeń alternatywnych nie są obsługiwane przez Sklepu Play na bieżącym urządzeniu. Nie dokonuj transakcji.
  • USER_CANCELED: nie kontynuuj transakcji. Zadzwoń do nas showAlternativeBillingOnlyInformationDialog(), aby wyświetlić okno dialogowe z informacjami, gdy użytkownik spróbuje ponownie zakup.
  • BILLING_UNAVAILABLE: w ramach transakcji nie można użyć alternatywnego płatności i dlatego nie należy brać udziału w tym programie. To jest ponieważ użytkownik nie znajduje się w kraju, w którym można wziąć udział w programie, albo Twoje konto nie zostało prawidłowo zarejestrowane w programie. Jeśli jest sprawdź stan rejestracji w Konsoli Play.
  • DEVELOPER_ERROR: wystąpił błąd w żądaniu. Korzystanie z komunikatu debugowania zidentyfikować i naprawić błąd, zanim przejdziesz dalej.
  • NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE: to są przejściowe, które należy ponowić. W przypadku SERVICE_DISCONNECTED ponownie nawiąż połączenie z Google Play przed ponawiam próbę.

Testowanie alternatywnego systemu rozliczeniowego

Do testowania integracji rozliczeń alternatywnych należy korzystać z testerów licencji. Ty nie otrzymasz faktury za transakcje zainicjowane przez testera licencji kont. Więcej informacji znajdziesz w artykule Testowanie rozliczeń w aplikacji za pomocą licencjonowania aplikacji. informacje na temat konfigurowania testerów licencji.

Dalsze kroki

Po zakończeniu integracji w aplikacji możesz zintegrować .