Wskazówki dotyczące integracji backendu w przypadku zarabiania poza Płatnościami w Google Play

Interfejs Google Play Developer API zawiera teraz dodatkowe do raportowania transakcji pochodzących z płatności alternatywnych; oferty zewnętrznej. W tym przewodniku opisano, jak zgłaszać alternatywne wersje rozliczeń czy ofert zewnętrznych.

Występuje kilka komponentów, które mogą być niezbędne do obsługi z Twojego backendu. Aby je utworzyć, musisz skonfigurować backend integrację zgodnie z instrukcjami podanymi w artykule Konfigurowanie interfejsu Google Play Developer API. Dla: wszystkie funkcje backendu dla deweloperów, które nie dotyczą rozliczeń alternatywnych. lub interfejsów API ofert zewnętrznych, instrukcje z Obowiązują dokumentacja dotycząca systemu rozliczeniowego Google Play.

Zgłaszanie nowych transakcji zewnętrznych do Google Play

Integracja z Externaltransactions APIs aby zgłaszać transakcje realizowane poza systemem rozliczeniowym Google Play w obsługiwanych krajach, w tym transakcji na kwotę 0 USD w przypadku bezpłatnego okresu próbnego. zakupów. transakcje w alternatywnych rozliczeniach lub systemach ofert zewnętrznych. należy rozpocząć i raportować tylko w krajach, w których jest to dozwolone, mogą być objęte płatnościami alternatywnymi lub programami z ofertami zewnętrznymi. W przeciwnym razie wywołanie interfejsu API będzie odrzucono. Dotyczy to wszystkich transakcji, w tym nowych zakupów, odnowień, doładowania, przejście na wyższą wersję, przejście na niższą wersję itd.

Zewnętrzne raportowanie transakcji

Aby zgłosić transakcję zewnętrzną, musisz wywołać funkcję Externaltransactions API po autoryzacji płatności za pomocą alternatywnego systemu rozliczeniowego lub zewnętrznego systemu ofert. Dotyczy to wszystkich transakcji, w tym transakcji początkowych obciążenia, odnowienia, zwroty środków i inne. Wszystkie transakcje muszą: są zgłaszane w ciągu 24 godzin od zrealizowania transakcji.

Każda transakcja zewnętrzna jest raportowana z zewnętrznym identyfikatorem transakcji. Dla: zakupy cykliczne (np. subskrypcje odnawiane automatycznie), musisz przesyłać zewnętrzny identyfikator transakcji powiązany z pierwszą transakcją w cyklu purchase jako parametr przy kolejnych transakcjach, w tym zwrotach środków. Ten rejestruje serię transakcji związanych z danym zakupem. Wysyłasz nowy plik zewnętrzny identyfikator transakcji w przypadku zakupów po zmianie produktu (np. uaktualnienie lub lub jeśli transakcja cykliczna została anulowana lub wygasła i jeśli ten produkt zostanie kupiony później. Nie możesz zawrzeć żadnych danych umożliwiających identyfikację osób informacji, zastrzeżonych lub poufnych informacji w ramach tego zewnętrznego identyfikator transakcji.

Zgłaszanie nowego zakupu

Za każdym razem, gdy nowy zakup zakończy się powodzeniem w ramach rozliczeń alternatywnych lub systemu ofert zewnętrznych wywołanie interfejsu API Externaltransactions to W przypadku nowych zakupów musisz podać unikalny Element externalTransactionId powiązany z zakupem w Twoim backendzie jako zapytanie . externalTransactionId nie może być ponownie użyty w tej samej aplikacji identyfikator pakietu.

Wartość externalTransactionToken otrzymana przez aplikację za pomocą UserChoiceBillingListener, AlternativeBillingOnlyReportingDetailsListener lub ExternalOfferReportingDetailsListener wywołań zwrotnych są również wymagane w ramach treści żądania dotyczącego jednorazowych zakupów i pierwszych transakcji zakup cykliczny (np. subskrypcja). W obu przypadkach jest to tzw. transakcji początkowej. Po pierwszej transakcji Opcja externalTransactionToken nie jest już potrzebna, a kolejne zgłoszone w zgłoszeniu transakcji (takich jak odnowienie subskrypcji) przez podanie nowego, unikalnego identyfikatora externalTransactionId Przeczytaj sekcję Raportowanie kolejnych transakcji zakupu. .

Przykład:

  1. Deweloper konfiguruje i włącza rozliczenia alternatywne w swojej aplikacji.
  2. Użytkownik 1 znajduje się w obsługiwanym kraju w Korei Południowej i próbuje dokonać zakupu product1 za 12634,10 KRW miesięcznie z ofertą bezpłatnego okresu próbnego na miesiąc.
  3. Aplikacja uruchamia proces zakupu za pomocą ProductDetails w aplikacji product1 i wybraną przez użytkownika ofertę.
  4. Użytkownik 1 wybiera alternatywny system rozliczeniowy dewelopera.
  5. UserChoiceBillingListener otrzymuje wartość my_token jako externalTransactionToken
  6. Następnie deweloper wysyła odpowiednie informacje do swojego backendu. (wartość externalTransactionToken i kupowane produkty). Następnie uruchomić proces zakupu usługi product1 w alternatywnym systemie rozliczeniowym. Do tej transakcji przypisywany jest unikalny identyfikator transakcji po stronie dewelopera który służy do zgłaszania jej do Google Play: 123-456-789. Identyfikator transakcji jest wymagane, mimo że użytkownik korzysta z bezpłatnej wersji próbnej.
  7. Po dokonaniu transakcji zakupu w ramach rozliczeń alternatywnych deweloper zgłasza transakcję do Google Play, przesyłając z poniższej prośby. Na początku jest uwzględniana jako transakcja bez dolara bo użytkownik otrzymuje miesiąc bezpłatnie.
POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789

Body
 {
"originalPreTaxAmount" : {
   "priceMicros": "0",
   "currency": "KRW"
 },
 "originalTaxAmount" : {
   "priceMicros": "0",
   "currency": "KRW"
 },
"transactionTime" : "2022-02-22T12:45:00Z",
 "recurringTransaction" : {
   "externalTransactionToken": "my_token",
   "externalSubscription" {
     "subscriptionType": "RECURRING"
   }
 },
 "userTaxAddress" : {
   "regionCode": "KR"
 }
}

w przypadku transakcji z użytkownikiem mieszkającym w Indiach, w których podatki różnią się zależnie od tego, (np. stan lub województwo), uwzględnij w sekcji userTaxAddress. Zobacz listę wstępnie zdefiniowanych ciągów w sekcji Przewodnik po interfejsach API dotyczący odpowiednich regionów.

POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=123-456-789

Body
 {
"originalPreTaxAmount" : {
   "priceMicros": "0",
   "currency": "INR"
 },
 "originalTaxAmount" : {
   "priceMicros": "0",
   "currency": "INR"
 },
"transactionTime" : "2023-11-01T12:45:00Z",
 "recurringTransaction" : {
   "externalTransactionToken": "my_token",
   "externalSubscription" {
     "subscriptionType": "RECURRING"
   }
 },
 "userTaxAddress" : {
   # Tax varies in India based on state, so include that information in
   # administrativeArea
   "regionCode": "IN"
   "administrativeArea": "KERALA"
 }
}

Raportowanie kolejnych transakcji zakupu

W niektórych przypadkach z tą samą płatnością powiązana jest więcej niż jedna płatność dla użytkownika zakup zewnętrzny (np. odnowienie subskrypcji lub doładowanie przedpłaconego abonamentu). Możesz zgłosić te kolejne transakcje, używając tego samego interfejsu API w Externaltransactions Jak opisano w sekcji Zgłaszanie nowego zakupu, Wartość externalTransactionToken nie jest wymagana do kolejnych transakcji. Zamiast tego: dla każdego z nich zostanie wysłany nowy unikalny parametr externalTransactionId transakcję odnowienia lub doładowania z identyfikatorem transakcji początkowej w polu initialExternalTransactionId.

Zgodnie z poprzednim przykładem:

  1. Pierwsze odnowienie użytkownika 1 ma miejsce w alternatywnym systemie rozliczeniowym. Początkowa wartość identyfikator transakcji to 123-456-789.
  2. Deweloper zgłasza powtarzanie transakcji w parametrze zapytania adresu URL. jako zewnętrzny identyfikator tej nowej transakcji, a także identyfikator zewnętrzny pierwotnej transakcji w initialExternalTransactionId.

Przykładowe żądanie:

POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=abc-def-ghi

Body
 {
"originalPreTaxAmount" : {
   "priceMicros": "12634000000",
   "currency": "KRW"
 },
 "originalTaxAmount" : {
   "priceMicros": "1263000000",
   "currency": "KRW"
 },
"transactionTime" : "2022-02-22T12:45:00Z",
 "recurringTransaction" : {
   "initialExternalTransactionId": "123-456-789",

   "externalSubscription" {
     "subscriptionType": "RECURRING"
   }
 },
 "userTaxAddress" : {
   "regionCode": "KR"
 }
}

Zgłaszanie przejścia na wyższą lub niższą wersję usługi

Aby zgłosić przejście na wyższą lub niższą wersję, gdy użytkownik ma subskrypcję w alternatywnego systemu rozliczeniowego i używasz tego samego punktu końcowego i funkcji Externaltransactions wysyłającym externalTransactionToken, który był przekazanych aplikacji w ramach transakcji przejścia na wyższą lub niższą wersję usługi. Działa podobnie jak zgłaszanie nowego zakupu.

Przejście z ręcznego raportowania transakcji rozliczeń alternatywnych

Aby przenieść aktywne subskrypcje, które rozpoczęły się w czasie, gdy oferowano alternatywny płatności bez automatycznego raportowania, utwórz nową transakcję bez kosztów za pomocą pole migratedTransactionProgram, zamiast initialExternalTransactionId lub externalTransactionToken. Ustaw parametr transactionTime do momentu pierwszej rejestracji każdego aktywnego konta subskrypcji. Następnie zgłaszaj każdą kolejną transakcję dotyczącą tych do subskrypcji za pomocą interfejsów API, initialExternalTransactionId użyte powyżej do utworzenia transakcji odnowienia. Po przeniesieniu subskrypcji nie będzie już trzeba ręcznie generować raportów kolejnych transakcji subskrypcji, o ile są one zgłaszane za pomocą automatycznych metod opisanych na tej stronie.

Podczas przenoszenia subskrypcji pamiętaj o limitach obowiązujących w przypadku aby zapewnić, że migracja nie spowoduje przerw w działaniu limitu. Jeśli wiele subskrypcji wymaga poddane migracji, rozłóż je na kilka dni lub poproś o zwiększenie limitu w limicie ,

Pola migratedTransactionProgram można używać tylko podczas migracji z: ręcznego raportowania. Zostanie ona wycofana, gdy przestanie być raportowanie ręczne obsługiwane.

Przykładowe żądanie:

# Note that the externalTransactionId specified here will used to report subsequent
# transactions.

POST /androidpublisher/v3/applications/com.myapp.android/externalTransactions?externalTransactionId=abc-def-ghi

Body
 {
 # Be sure to set the price to 0 for this transaction since it does not reflect
 # an actual subscription renewal.
 "originalPreTaxAmount" : {
   "priceMicros": "0",
   "currency": "KRW"
 },
 "originalTaxAmount" : {
   "priceMicros": "0",
   "currency": "KRW"
 },

 # The transaction time should be set to when the user signed up for this
 # subscription.
 "transactionTime" : "2022-02-22T12:45:00Z",
  "recurringTransaction" : {
    "migratedTransactionProgram": "USER_CHOICE_BILLING",

    "externalSubscription" {
      "subscriptionType": "RECURRING"
    }
  },
 "userTaxAddress" : {
   "regionCode": "KR"
 }
}

Zgłaszanie programów partnerskich Google Play

Deweloperzy uczestniczący w programach partnerskich, takich jak Program Play Media Experience musi zawierać: transaction_program_code podczas raportowania transakcji zewnętrznych. Jeśli jesteś kwalifikujących się deweloperów, skontaktuj się ze swoim menedżerem ds. rozwoju działalności, aby dowiedzieć się więcej jak ustawić to pole.

Zgłaszanie zwrotów środków za zakupy do Google Play

Przeprowadź integrację z interfejsem API Externaltransactions, aby raportować transakcje, na które zwrócono środki poza systemem rozliczeniowym Google Play. Aby usługa Google Play poprawnie zidentyfikowała transakcja została zwrócona, podaj w pliku externalTransactionId za wcześniej zgłoszonej transakcji w ramach Parametry adresu URL.

Zgłaszając zwroty środków za zakup subskrypcji, zapoznaj się z externalTransactionId określonej kwoty cyklicznej subskrypcji, która jest .

Przykład: załóżmy, że subskrypcja zawiera takie transakcje:

  • Początkowa transakcja z zewnętrznym identyfikatorem transakcji ABC.1234-5678-9012-34567
  • Pierwsza transakcja cykliczna z zewnętrznym identyfikatorem transakcji ABC.1234-5678-9012-34567..0
  • Druga transakcja cykliczna z zewnętrznym identyfikatorem transakcji ABC.1234-5678-9012-34567..1

Aby zgłosić zwrot wszystkich transakcji związanych z subskrypcją, musisz: trzy osobne prośby o zwrot środków: jedną za początkową transakcję, a drugą za kolejnych transakcji.

W przypadku tej metody akceptowane są zarówno pełne zwroty środków. (gdzie kwota jest taka sama, jak kwota, którą użytkownik zapłacił w oryginalnej formie transakcji) i częściowe zwroty środków. (jeśli kwota jest mniejsza niż kwota, którą użytkownik zapłacił w oryginalnej formie zewnętrznej transakcji). W przypadku częściowych zwrotów środków należy podać kwotę przed naliczeniem podatku, zwrócono środki.

Limity interfejsu API

Interfejs API Externaltransactions podlega dziennym limitom interfejsu API dla wszystkich wywołań, tak jak w przypadku każdego innego punktu końcowego w interfejsie Google Play Developer API.

Dodatkowo interfejs API Externaltransactions umożliwia uzyskanie 1200 zapytań na minutę. limit (QPM) wywołań funkcji Externaltransactions.createexternaltransaction lub Externaltransactions.refundexternaltransaction Połączenia z Externaltransactions.getexternaltransaction nie wliczają się do tego 1200 QPM .