Z tego przewodnika dowiesz się, jak zintegrować interfejsy API, aby zaoferować rozliczenia alternatywne wybór użytkownika w Twojej aplikacji.
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 5.2 lub nowszej. W razie potrzeby przeprowadź migrację z wcześniejszej wersji, postępuj zgodnie z instrukcjami w sekcji Migracja .
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:
- Musisz wywołać nową metodę, aby wskazać, że chcesz zaoferować użytkownikowi
opcja płatności do wyboru:
enableUserChoiceBilling
. - Aby obsługiwać zgłoszenia, musisz zarejestrować domenę
UserChoiceBillingListener
. w którym użytkownik wybiera alternatywny system rozliczeniowy.
Poniższy przykład pokazuje inicjowanie BillingClient
z tymi
modyfikacje:
Kotlin
val purchasesUpdatedListener =
PurchasesUpdatedListener { billingResult, purchases ->
// Handle new Google Play purchase.
}
val userChoiceBillingListener =
UserChoiceBillingListener { userChoiceDetails ->
// Handle alternative billing choice.
}
var billingClient = BillingClient.newBuilder(context)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.enableUserChoiceBilling(userChoiceBillingListener)
.build()
Java
private PurchasesUpdatedListener purchasesUpdatedListener = new PurchasesUpdatedListener() {
@Override
public void onPurchasesUpdated(BillingResult billingResult, List<Purchase> purchases) {
// Handle new Google Play purchase.
}
};
private UserChoiceBillingListener userChoiceBillingListener = new UserChoiceBillingListener() {
@Override
public void userSelectedAlternativeBilling(
UserChoiceDetails userChoiceDetails) {
// Handle new Google Play purchase.
}
};
private BillingClient billingClient = BillingClient.newBuilder(context)
.setListener(purchasesUpdatedListener)
.enablePendingPurchases()
.enableUserChoiceBilling(userChoiceBillingListener)
.build();
Po zainicjowaniu BillingClient
musisz nawiązać połączenie z
Google Play zgodnie z opisem w przewodniku po integracji.
Wyświetl dostępne produkty
Możesz wyświetlać dostępne produkty użytkownikowi w taki sam sposób jak w Integracja z systemem rozliczeniowym Google Play. Gdy użytkownik wyświetlił produkty dostępnych do zakupu i wybrania klienta do zakupu, uruchomienie systemu rozliczeniowego opartego na wyborze użytkownika jak opisano w następnej sekcji.
Uruchom proces systemu rozliczeniowego opartego na wyborze użytkownika
Aby uruchomić system rozliczeniowy oparty na wyborze użytkownika, zadzwoń pod numer launchBillingFlow()
. Działa
to samo co uruchamianie procesu zakupu w systemie rozliczeniowym Google Play.
integracja: podajesz instancję ProductDetails
oraz offerToken
odpowiadające produktowi i ofercie, którą użytkownik chce pozyskać. Jeśli
użytkownik wybierze system rozliczeniowy Google Play, informacje te posłużą do tego,
i kontynuować proces zakupu.
Gdy deweloper wywołuje funkcję launchBillingFlow()
, system rozliczeniowy Google Play
wykonuje tę kontrolę:
- System sprawdza, czy kraj użytkownika w Google Play to
kraj obsługujący alternatywne systemy rozliczeniowe z opcją wyboru przez użytkownika
kraj). Jeśli kraj użytkownika w Google Play jest obsługiwany, Google Play sprawdza,
czy włączono rozliczenia alternatywne na podstawie konfiguracji
BillingClient
.- Jeśli włączono rozliczenia alternatywne z opcją wyboru przez użytkownika, zakup pokazuje UX.
- Jeśli rozliczenia alternatywne z opcją wyboru przez użytkownika nie są włączone, zakup proces przedstawia standardowy UX systemu rozliczeniowego Google Play, bez użytkownika. wyboru.
- Jeśli kraj użytkownika w Google Play nie jest obsługiwany, wartość proces zakupu przedstawia standardowy sposób korzystania z systemu rozliczeniowego Google Play, bez użytkownika wyboru.
Kraj ustawiony w Google Play jest obsługiwany |
Kraj użytkownika w Google Play nie jest obsługiwany |
|
---|---|---|
Wywołano metodę allowUserChoiceBilling podczas konfiguracji BillingClient |
Użytkownik widzi UX wyboru użytkownika |
Użytkownik widzi standardowy system rozliczeniowy Google Play. |
Metoda allowUserChoiceBilling nie została wywołana podczas konfiguracji BillingClient |
Użytkownik widzi standardowy system rozliczeniowy Google Play. |
Użytkownik widzi standardowy system rozliczeniowy Google Play. |
Obsługa wyboru użytkownika
Sposób obsługi pozostałej części procesu zakupu różni się w zależności od tego, użytkownik wybrał system rozliczeniowy Google Play lub alternatywny system.
Gdy użytkownik wybierze alternatywny system rozliczeniowy
Jeśli użytkownik wybierze alternatywny system rozliczeniowy, Google Play wywołuje metodę
UserChoiceBillingListener
, aby powiadomić aplikację o konieczności uruchomienia
w alternatywnym systemie rozliczeniowym. W szczególności
Wywoływana jest metoda userSelectedAlternativeBilling()
.
Zewnętrzny token transakcji udostępniony w obiekcie UserChoiceDetails
reprezentuje podpis użytkownika wyboru alternatywnego systemu rozliczeniowego
przepływu danych. Użyj tego tokena, aby zgłosić dowolną transakcję wynikającą z tego wyboru jako
omówiono w przewodniku po integracji backendu.
Element UserChoiceBillingListener
powinien wykonywać te czynności:
- Uzyskaj produkty zakupione przez użytkownika, aby można było je kupić widoczne w procesie zakupu w alternatywnym systemie rozliczeniowym.
- Zbierz ciąg znaków otrzymany jako zewnętrzny token transakcji i wyślij go do z backendu, aby go utrwalić. Będzie ona później używana do zgłaszania zewnętrznego transakcji do Google Play, jeśli użytkownik dokona tego konkretnego zakupu.
- Uruchom alternatywny proces zakupu utworzony przez dewelopera.
Jeśli użytkownik dokona zakupu przy użyciu alternatywnego systemu rozliczeniowego, Ty
musi zgłosić transakcję do Google Play, kontaktując się z deweloperem w Google Play
z backendu w ciągu 24 godzin, zapewniając
externalTransactionToken
i dodatkowe szczegóły transakcji. Zobacz
przewodnik po integracji backendu.
Poniższy przykład pokazuje, jak wdrożyć
UserChoiceBillingListener
:
Kotlin
private val userChoiceBillingListener =
UserChoiceBillingListener { userChoiceDetails ->
// Get the products being purchased by the user.
val products = userChoiceDetails.products
// Send external transaction token to developer backend server
// this devBackend object is for demonstration purposes,
// developers can implement this step however best fits their
// app to backend communication.
devBackend.sendExternalTransactionStarted(
userChoiceDetails.externalTransactionToken,
user
)
// Launch alternative billing
// ...
// The developer backend handles reporting the transaction
// to Google Play's backend once the alternative billing
// purchase is completed.
}
Java
private userChoiceBillingListener userChoiceBillingListener = new UserChoiceBillingListener() {
@Override
public void userSelectedAlternativeBilling(
UserChoiceDetails userChoiceDetails) {
// Get the products being purchased by the user.
List<Product> products =
userChoiceDetails.getProducts();
// Send external transaction token to developer backend server
// this devBackend object is for demonstration purposes,
// developers can implement this step however best fits their
// app to backend communication.
devBackend.sendExternalTransactionStarted(
userChoiceDetails.getExternalTransactionToken(),
user
);
// Launch alternative billing
// ...
// The developer backend handles reporting the transaction
// to Google Play's backend once the alternative billing
// purchase is completed.
}
};
Gdy użytkownik wybierze system rozliczeniowy Google Play
Jeśli użytkownik wybierze system rozliczeniowy Google Play, w Google Play.
- Więcej informacji znajdziesz w sekcji Przetwarzanie zakupów w przewodniku po integracji z biblioteką. o tym, jak postępować w przypadku nowych zakupów w aplikacji za pomocą do systemu rozliczeniowego.
- Zobacz Nowe subskrypcje w przewodniku po zarządzaniu subskrypcjami dla dodatkowych wskazówek dotyczących kupowania subskrypcji.
Obsługa zmian w subskrypcji
Deweloperzy używający rozliczeń alternatywnych z opcją wyboru przez użytkownika muszą
przetwarzane przez system rozliczeniowy Google Play lub zgłoszone za pomocą
externalTransactionId
w zależności od wyboru użytkownika. Zmiany w dotychczasowych
subskrypcje przetworzone w ramach procesu wyboru użytkownika mogą
korzystać z tego samego systemu rozliczeniowego do momentu wygaśnięcia.
W tej sekcji opisujemy, jak postępować w przypadku niektórych typowych zmian subskrypcji.
Procesy przechodzenia na wyższą i niższą wersję usługi
Zmiany w abonamentach, w tym proces przejścia na wyższą lub niższą wersję, powinny jest obsługiwane różnie w zależności od tego, czy subskrypcja została kupiona za pomocą systemu rozliczeniowego Google Play lub systemu alternatywnego.
dodatki zależne od dotychczasowej subskrypcji korzystają z tej samej formy płatności;
i wyrównanie opłat cyklicznych
są traktowane jak uaktualnienia. W przypadku innych dodatków użytkownicy
powinni mieć możliwość wyboru systemu rozliczeniowego, którego chcą używać Rozpocznij nowy proces
zakupów za pomocą launchBillingFlow()
, zgodnie z opisem w sekcji Uruchamianie
systemu rozliczeniowego opartego na wyborze użytkownika.
Subskrypcje kupione przy użyciu alternatywnego systemu rozliczeniowego
W przypadku subskrypcji kupionych u dewelopera alternatywny system rozliczeniowy po dokonaniu wyboru przez użytkownika, użytkownicy proszący o aktualizację przejście na niższą wersję powinno przejść przez alternatywny system rozliczeniowy dewelopera bez konieczności ponownego przechodzenia przez proces wyboru użytkownika.
W tym celu wywołaj launchBillingFlow()
, gdy użytkownik poprosi o zmianę
przejść na niższą wersję. Zamiast określać obiekt SubscriptionUpdateParams
w parametrze
użyj parametru setOriginalExternalTransactionId
, udostępniając parametr zewnętrzny
identyfikator pierwotnej transakcji. Nie wyświetla się użytkownik
ekran wyboru, ponieważ wybór użytkownika dotyczący pierwotnego zakupu jest zachowywany
w celu przejścia na wyższą lub niższą wersję usługi. W tym przypadku połączenie z numerem launchBillingFlow()
generuje nowy zewnętrzny token transakcji,
pobrane z wywołania zwrotnego.
Kotlin
// The external transaction ID from the current
// alternative billing subscription.
val externalTransactionId = //... ;
val billingFlowParams = BillingFlowParams.newBuilder()
.setProductDetailsParamsList(
listOf(
BillingFlowParams.ProductDetailsParams.newBuilder()
// Fetched via queryProductDetailsAsync.
.setProductDetails(productDetailsNewPlan)
// offerIdToken can be found in
// ProductDetails=>SubscriptionOfferDetails.
.setOfferToken(offerTokenNewPlan)
.build()
)
)
.setSubscriptionUpdateParams(
BillingFlowParams.SubscriptionUpdateParams.newBuilder()
.setOriginalExternalTransactionId(externalTransactionId)
.build()
val billingResult = billingClient.launchBillingFlow(activity, billingFlowParams)
// When the user selects the alternative billing flow,
// the UserChoiceBillingListener is triggered.
Java
// The external transaction ID from the current
// alternative billing subscription.
String externalTransactionId = //... ;
BillingFlowParams billingFlowParams =
BillingFlowParams.newBuilder()
.setProductDetailsParamsList(
ImmutableList.of(
ProductDetailsParams.newBuilder()
// Fetched via queryProductDetailsAsync.
.setProductDetails(productDetailsNewPlan)
// offerIdToken can be found in
// ProductDetails=>SubscriptionOfferDetails
.setOfferToken(offerTokenNewPlan)
.build()
)
)
.setSubscriptionUpdateParams(
SubscriptionUpdateParams.newBuilder()
.setOriginalExternalTransactionId(externalTransactionId)
.build()
)
.build();
BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
// When the user selects the alternative billing flow,
// the UserChoiceBillingListener is triggered.
Po przejściu na wyższą lub niższą wersję systemu rozliczeniowego musisz zgłosić nową transakcję przy użyciu zewnętrznego tokena transakcji. uzyskane w ramach poprzedniego wywołania związanego z zakupem nowej subskrypcji.
Subskrypcje kupione przy użyciu systemu rozliczeniowego Google Play
Podobnie jest w przypadku użytkowników, którzy kupili bieżącą subskrypcję w witrynie Google Play systemu rozliczeniowego po wyborze użytkownika powinien być wyświetlany proces przejścia na wyższą lub niższą wersję usługi. w systemie rozliczeniowym Google Play. Poniżej znajdziesz instrukcje, jak to zrobić musisz rozpocząć proces zakupu przejścia na wyższą lub niższą wersję w Google. System rozliczeniowy Google Play:
- Wskaż
offerToken
wybranej oferty w ramach nowego abonamentu:
val offerTokenNewPlan = productDetailsNewPlan
.getSubscriptionOfferDetails(selectedOfferIndex)
.getOfferToken()
String offerTokenNewPlan = productDetailsNewPlan
.getSubscriptionOfferDetails(selectedOfferIndex)
.getOfferToken();
- Wyślij prawidłowe informacje do systemu rozliczeniowego Google Play, aby przetworzyć nowy zakup, w tym token zakupu istniejącej subskrypcji:
val billingFlowParams =
BillingFlowParams.newBuilder().setProductDetailsParamsList(
listOf(
BillingFlowParams.ProductDetailsParams.newBuilder()
.setProductDetails(productDetailsNewPlan)
.setOfferToken(offerTokenNewPlan)
.build()
)
)
.setSubscriptionUpdateParams(
BillingFlowParams.SubscriptionUpdateParams.newBuilder()
.setOldPurchaseToken(oldToken)
.setReplaceProrationMode(BillingFlowParams.ProrationMode.IMMEDIATE_AND_CHARGE_FULL_PRICE)
.build()
)
.build()
BillingClient.launchBillingFlow(activity, billingFlowParams)
BillingFlowParams billingFlowParams =
BillingFlowParams.newBuilder()
.setProductDetailsParamsList(
ImmutableList.of(
ProductDetailsParams.newBuilder()
// Fetched via queryProductDetailsAsync
.setProductDetails(productDetailsNewPlan)
// offerIdToken can be found in
// ProductDetails=>SubscriptionOfferDetails.
.setOfferToken(offerTokenNewPlan)
.build()
)
)
.setSubscriptionUpdateParams(
SubscriptionUpdateParams.newBuilder()
// purchaseToken can be found in
// Purchase#getPurchaseToken
.setOldPurchaseToken("old_purchase_token")
.setReplaceProrationMode(ProrationMode.IMMEDIATE_AND_CHARGE_FULL_PRICE)
.build()
)
.build();
BillingResult billingResult = billingClient.launchBillingFlow(activity, billingFlowParams);
Ten zakup jest rozliczany w systemie rozliczeniowym Google Play, a aplikacja otrzymuje
wywołanie PurchasesUpdatedListener.onPurchaseUpdated
z wynikiem funkcji
zakup. Jeśli zakup się udał, metoda onPurchaseUpdated()
również
otrzymuje nowe informacje o zakupie, a system zaplecza otrzymuje
SUBSCRIPTION_PURCHASED
Powiadomienie dla deweloperów w czasie rzeczywistym. Podczas przeciągania
dla nowego zakupu, atrybut linkedPurchaseToken
łączy się ze starym
przez wykupienie subskrypcji, aby można było ją wycofać
zalecamy.
Anulowanie i przywracanie subskrypcji
Użytkownicy powinni mieć możliwość anulowania subskrypcji w każdej chwili. Gdy użytkownik anuluje subskrypcję, wypowiedzenie uprawnienia może zostać odroczone do kończy się okres płatności. Na przykład jeśli użytkownik anuluje miesięczną subskrypcję w połowie miesiąca mogą nadal korzystać z usługi przez dostęp zostanie usunięty za około 2 tygodnie. W tym okresie bo subskrypcja jest nadal aktywna, więc użytkownik może korzystać z tej usługi.
Nierzadko użytkownicy decydują się na cofnięcie anulowania w tym czasie. okresu aktywności. W tym przewodniku nazywamy to przywróceniem. Poniżej w sekcjach opisano, jak postępować w przypadku scenariuszy przywracania alternatywnej integrację interfejsu API rozliczeń.
Subskrypcje kupione przy użyciu alternatywnego systemu rozliczeniowego
Jeśli masz zewnętrzny identyfikator transakcji anulowanej subskrypcji, nie jest to
konieczne jest wywołanie funkcji launchBillingFlow()
w celu przywrócenia subskrypcji, więc to
nie należy używać do tego typu aktywacji. Jeśli użytkownik przywróci
subskrypcji w trakcie aktywnego okresu anulowanej subskrypcji, nie
transakcja ma miejsce w momencie, możesz kontynuować raportowanie odnowień, gdy
wygaśnie bieżący cykl i nastąpi następne odnowienie. Obejmuje to przypadki, gdy
użytkownik otrzymuje środki lub specjalną cenę za odnowienie w ramach przywracania
Może to być na przykład promocja, która ma zachęcić użytkownika do kontynuowania subskrypcji.
Subskrypcje kupione przy użyciu systemu rozliczeniowego Google Play
Ogólnie rzecz biorąc, użytkownicy mogą przywrócić subskrypcje w systemie rozliczeniowym Google Play. Dla:
anulowane subskrypcje, które zostały pierwotnie kupione w ramach płatności w Google Play.
system, użytkownik może cofnąć anulowanie subskrypcji,
aktywny dzięki funkcji Odnów subskrypcję w Google Play. W takim przypadku
otrzymasz powiadomienie dla deweloperów w czasie rzeczywistym SUBSCRIPTION_RESTARTED
na swoim
i nie został wydany nowy token zakupu – używany jest token oryginalny.
aby kontynuować subskrypcję. Aby dowiedzieć się, jak zarządzać przywracaniem w Google
System rozliczeniowy Google Play: zobacz Przywracanie w zarządzaniu subskrypcjami.
Google.
Możesz też przywrócić system rozliczeniowy Google Play z poziomu aplikacji
dzwoniąc pod numer launchBillingFlow()
. Zobacz sekcję Przed wygaśnięciem subskrypcji –
w aplikacji. W przypadku użytkowników, którzy
zakupu zgodnie z wyborem użytkownika (który został anulowany, ale
jest nadal aktywny), system automatycznie wykryje wybór i wyświetli
do ich przywrócenia. Są proszeni o potwierdzenie,
ponownie wykupili subskrypcję w Google Play, ale nie musieli rezygnować
przez proces wyboru użytkownika. Użytkownikowi zostanie wystawiony nowy token zakupu.
w tej sprawie. Twój backend otrzymuje SUBSCRIPTION_PURCHASED
w czasie rzeczywistym
Powiadomienie dla dewelopera oraz wartość linkedPurchaseToken
dla nowego zakupu
stan jest ustawiony na taką samą jak w przypadku przejścia na wyższą lub niższą wersję usługi
dla anulowanej subskrypcji.
Ponowne subskrypcje
po całkowitym wygaśnięciu subskrypcji, niezależnie od tego, czy jest to spowodowane jej anulowaniem, odrzucenie płatności bez odzyskania konta (wygasła blokada konta), użytkownik musi ponownie wykupić subskrypcję, jeśli chcą oni ponownie aktywować uprawnienie.
Ponowne subskrybowanie można również włączyć w aplikacji, przetwarzając je podobnie jak
w przypadku standardowej rejestracji. Użytkownicy powinni mieć możliwość wyboru systemu rozliczeniowego
których użyć. W tym przypadku funkcja launchBillingFlow()
może zostać wywołana, jak opisano w
Uruchom proces systemu rozliczeniowego opartego na wyborze użytkownika.
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ć .