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 razshowExternalOfferInformationDialog()
, 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 nasshowExternalOfferInformationDialog()
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łoszeniaSERVICE_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ć .