Wskazówki dotyczące integracji w aplikacji na potrzeby programu ofert zewnętrznych

Z tego przewodnika dowiesz się, jak przeprowadzić integrację z interfejsami API, aby obsługiwać oferty zewnętrzne w odpowiednich aplikacjach i regionach. Aby dowiedzieć się więcej o programie ofert zewnętrznych w tym wymagania i zasięg geograficzny, wymaganiami programu.

Konfigurowanie Biblioteki płatności w Play

Aby korzystać z interfejsów API ofert zewnętrznych: dodaj wersję 6.2.1 lub nowszą zależność Biblioteki płatności w Play do aplikacji na Androida. Jeśli musisz przeprowadzić migrację z wcześniejszej wersji, wykonaj następujące czynności: wykonaj instrukcje podane w przewodniku po migracji, zanim podejmiesz próbę wdrożenia ofert zewnętrznych.

Połącz z Google Play

Pierwsze kroki procesu integracji są takie same jak opisane w przewodnik po integracji płatności z kilkoma zmianami, inicjuję BillingClient:

  • Aby wskazać, że chcesz używać parametru zewnętrznego, musisz wywołać nową metodę oferty: enableExternalOffer.

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

Kotlin

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

Java

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

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

Sprawdź dostępność

Aplikacja powinna potwierdzić dostępność ofert zewnętrznych przez połączenie telefoniczne isExternalOfferAvailableAsync

Jeśli dostępne są oferty zewnętrzne, ten interfejs API zwraca wartość BillingResponseCode.OK. Szczegółowe informacje o tym, jak aplikacja powinna działać, znajdziesz w artykule o obsłudze odpowiedzi. odpowiadać na inne kody odpowiedzi.

Kotlin


billingClient.isExternalOfferAvailableAsync(
  object : ExternalOfferAvailabilityListener {
    override fun onExternalOfferAvailabilityResponse(
      billingResult: BillingResult) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors,
            // handling external offers unavailable, etc.
            return
        }

        // External offers are available. Continue with steps in the
        // guide.
})

Java


billingClient.isExternalOfferAvailableAsync(
  new ExternalOfferAvailabilityListener() {
    @Override
    public void onExternalOfferAvailabilityResponse(
      BillingResult billingResult) {
        if (billingResult.getResponseCode() != BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors,
            // handling external offers being unavailable, etc.
            return;
        }
        // External offers are available. Continue with steps in the
        // guide.
      }

});

Przygotowywanie zewnętrznego tokena transakcji

Aby zgłosić transakcję zewnętrzną w Google Play, musisz mieć token transakcji wygenerowany z Biblioteki płatności w Play. Nowy raport zewnętrzny token transakcji musi być generowany przy każdej wizycie użytkownika na stronie za pomocą zewnętrznego interfejsu API ofert. Można to zrobić, wywołując metodę createExternalOfferReportingDetailsAsync API. Ten token powinien być generowane bezpośrednio przed przekierowaniem użytkownika poza aplikację. Powinna nigdy nie mogą być przechowywane w pamięci podręcznej i przy każdym przekierowaniu użytkownika powinien być generowany nowy identyfikator. poza aplikacją.

Kotlin


billingClient.createExternalOfferReportingDetailsAsync(
  object : ExternalOfferReportingDetailsListener {
    override fun onExternalOfferReportingDetailsResponse(
      billingResult: BillingResult,
      externalOfferReportingDetails: ExternalOfferReportingDetails?) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors.
            return
        }
        val externalTransactionToken =
            externalOfferReportingDetails?.externalTransactionToken
        // Persist the transaction token locally. Pass it to the external
        // website when showExternalOfferInformationDialog is called.
    }
})

Java


billingClient.createExternalOfferReportingDetailsAsync(
  new ExternalOfferReportingDetailsListener() {
    @Override
    public void onExternalOfferReportingDetailsResponse(
      BillingResult billingResult,
      @Nullable ExternalOfferReportingDetails
        externalOfferReportingDetails) {
        if (billingResult.getResponseCode() != BillingResponseCode.OK) {
            // Handle failures such as retrying due to network errors.
            return;
        }

        String transactionToken =
          externalOfferReportingDetails.getExternalTransactionToken();

        // Persist the external transaction token locally. Pass it to the
        // external website when showExternalOfferInformationDialog is
        // called.
      }
});

Okno z informacjami dla użytkowników

Aby przeprowadzić integrację z ofertami zewnętrznymi, kwalifikująca się aplikacja musi wyświetlać informacje ekran, który pomaga użytkownikom zrozumieć, że zostaną przekierowani na zewnątrz do zewnętrznej witryny. Ekran z informacjami musi zostać wyświetlony użytkownikom przez wywołanie interfejsu API showExternalOfferInformationDialog przed połączeniem z oferty zewnętrznej.

Kotlin


// An activity reference from which the external offers information dialog
// will be launched.
val activity : Activity = ...;

val listener : ExternalOfferInformationDialogListener =
  ExternalOfferInformationDialogListener {
      override fun onExternalOfferInformationDialogResponse(
        billingResult: BillingResult){
        // Check billingResult
    }
}

val billingResult = billingClient.showExternalOfferInformationDialog(
  activity, listener)

Java


// An activity reference from which the external offers information dialog
// will be launched.
Activity activity = ...;

ExternalOfferInformationDialogListener listener =
  new ExternalOfferInformationDialogListener() {
    @Override
    public void onExternalOfferInformationDialogResponse(
      BillingResult billingResult) {
        if (billingResult.responseCode !=  BillingResponseCode.OK) {
          // Handle failures such as retrying due to network errors.
        }
        // Open the external website, passing along the external transaction
        // token as a URL parameter. If the user purchases an item, be sure
        // to report the transaction to Google Play.
      }
}

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

Jeśli ta metoda zwraca wartość BillingResponseCode.OK, aplikacja może przejść do kierować użytkownika na stronę zewnętrzną. Jeśli metoda zwraca BillingResponseCode.USER_CANCELED, aplikacja nie może dalej otwierać witryny.

Zgłaszanie transakcji do Google Play

Wszystkie transakcje zewnętrzne muszą być zgłaszane do Google Play przez wywołanie interfejsu Google Play Developer API z backendu. Transakcje zewnętrzne musi być zgłaszane podczas przesyłania externalTransactionToken uzyskano przy użyciu createExternalOfferReportingDetailsAsync API. Jeśli użytkownik utworzy wiele możesz użyć tego samego adresu e-mail, externalTransactionToken, aby zgłosić każdy zakup. Aby dowiedzieć się, jak zgłosić można znaleźć w przewodniku po integracji backendu.

Obsługa odpowiedzi

Gdy wystąpi błąd, metody isExternalOfferAvailableAsync, createExternalOfferReportingDetailsAsync i showExternalOfferInformationDialog może zwrócić odpowiedzi inne niż BillingResponseCode.OK Rozważ obsługę tych kodów odpowiedzi w ten sposób:

  • ERROR: to jest błąd wewnętrzny. nie kontynuuj transakcji lub otwierając zewnętrzną witrynę. Zadzwoń i spróbuj jeszcze raz showExternalOfferInformationDialog(), aby wyświetlić informacje wyświetli się okno użytkownikowi przy następnej próbie przekierowania go poza .
  • FEATURE_NOT_SUPPORTED: interfejsy API ofert zewnętrznych nie są obsługiwane przez Sklepu Play na bieżącym urządzeniu. nie kontynuuj transakcji lub otwierając zewnętrzną witrynę.
  • USER_CANCELED: nie otwieraj zewnętrznej witryny. Zadzwoń do nas showExternalOfferInformationDialog() ponownie, aby wyświetlić te informacje wyświetli się okno użytkownikowi przy następnej próbie przekierowania go poza aplikację.
  • BILLING_UNAVAILABLE: transakcja nie kwalifikuje się do skorzystania z ofert zewnętrznych dlatego nie należy brać udziału w tym programie. Dzieje się tak dlatego, że: użytkownik nie znajduje się w kraju, w którym można wziąć udział w tym programie, lub na Twoim koncie nie udało się zarejestrować w programie. Jeśli chodzi o ten drugi, sprawdź, swojego stanu 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 błędy, które należy obsługiwać za pomocą odpowiedniej zasady ponawiania. W przypadku zgłoszenia SERVICE_DISCONNECTED ponownie nawiąż połączenie z Google Play, zanim spróbujesz ponownie.

Przetestuj oferty zewnętrzne

Do testowania integracji ofert zewnętrznych 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ć .