Ten przewodnik dotyczy aplikacji internetowych spakowanych jako zaufana aktywność internetowa. W przypadku aplikacji na Androida napisanych w języku Kotlin lub Java zapoznaj się z dokumentacją Płatności w Google Play.
Aplikacje w Google Play, które sprzedają produkty cyfrowe lub subskrypcje, muszą korzystać z Płatności w Google Play. W zaufanej aktywności internetowej możesz zintegrować się z nią za pomocą tych interfejsów API dostępnych w Chrome 101 i nowszych wersjach na Androidzie i ChromeOS:
- Digital Goods API: pobiera szczegóły produktu i zakupy użytkownika.
- Payment Request API: rozpoczyna proces zakupu.
Wymagania
Aby skonfigurować Płatności w Google Play, musisz mieć:
- Konto dewelopera w Google Play i konto sprzedawcy w Centrum płatności Google, które są ze sobą połączone.
- Informacje o aplikacji w Sklepie Play z wersją na ścieżce publicznej, ścieżce testów zamkniętych lub ścieżce testów wewnętrznych.
- produkty i subskrypcje aplikacji skonfigurowane w Konsoli Play.
- Projekt zaufanej aktywności internetowej z działającą konfiguracją Digital Asset Links.
Nie naliczaj opłat za pobieranie aplikacji ze Sklepu Play. Twoja aplikacja PWA jest nadal dostępna w internecie, więc płatne pobieranie nie ogranicza dostępu. Zamiast tego sprzedawaj funkcje lub treści za pomocą zakupów w aplikacji lub subskrypcji.
Włączanie Płatności w Play w projekcie aplikacji na Androida
Jeśli tworzysz aplikację za pomocą Bubblewrap, włącz funkcję playBilling w pliku twa-manifest.json w katalogu głównym projektu:
"features": {
"playBilling": {
"enabled": true
}
}
Następnie uruchom bubblewrap update, a potem bubblewrap build i prześlij nowy pakiet Androida do Sklepu Play.
Jeśli tworzysz aplikację w Android Studio, dodaj bibliotekę płatności w Google Play w Android Browser Helper. Wymagane zmiany w DelegationService i AndroidManifest.xml znajdziesz w filmie demonstracyjnym twa-play-billing.
Sprawdzanie obsługi Płatności w Google Play
Wywołaj getDigitalGoodsService() z identyfikatorem Sklepu Play https://play.google.com/billing. Jeśli brakuje metody lub wywołanie się nie powiedzie, użyj innego procesu płatności:
if ('getDigitalGoodsService' in window) {
try {
const service =
await window.getDigitalGoodsService('https://play.google.com/billing');
// Google Play Billing is available.
} catch (error) {
// Google Play Billing isn't available. Use another payment flow.
}
}
wyświetlania szczegółów produktu;
Użyj getDetails(), aby pobrać tytuł, opis i cenę dla identyfikatorów produktów, dzięki czemu wyświetlane ceny będą zgodne ze Sklepem Play:
const details = await service.getDetails(['shiny_sword', 'gem']);
for (const item of details) {
const localizedPrice = new Intl.NumberFormat(
navigator.language,
{style: 'currency', currency: item.price.currency}
).format(item.price.value);
renderProductDetails(
item.itemId, item.title, localizedPrice, item.description);
}
Interfejs Digital Goods API nie może wyświetlić listy identyfikatorów produktów cyfrowych. Aby wysłać zapytanie z backendu, użyj Google Play Developer API.
Kupowanie
Utwórz PaymentRequest z https://play.google.com/billing jako formą płatności i identyfikatorem produktu sku w data. Płatności w Google Play używają ceny z Konsoli Play, więc parametr total jest wymagany, ale ignorowany.
Gdy show() zostanie rozwiązany, wyślij token zakupu do backendu, aby zweryfikować i potwierdzić zakup. Jeśli nie potwierdzisz zakupu w ciągu 3 dni, Google Play zwróci użytkownikowi środki i unieważni zakup.
async function makePurchase(service, sku) {
const paymentMethods = [{
supportedMethods: 'https://play.google.com/billing',
data: {sku},
}];
// Required by the Payment Request API, but ignored by Google Play Billing.
const paymentDetails = {
total: {label: 'Total', amount: {currency: 'USD', value: '0'}},
};
const request = new PaymentRequest(paymentMethods, paymentDetails);
try {
const response = await request.show();
const {purchaseToken} = response.details;
if (await acknowledgePurchaseOnBackend(purchaseToken, sku)) {
// Optional: consume the purchase so the user can buy the item again.
await service.consume(purchaseToken);
await response.complete('success');
} else {
await response.complete('fail');
}
} catch (error) {
// An AbortError usually means the user canceled the purchase.
}
}
Sprawdzanie zakupów użytkownika
Użyj listPurchases(), aby znaleźć produkty, które użytkownik posiada, takie jak aktywne subskrypcje, niewykorzystane zakupy lub wykorzystane kody promocyjne. Sprawdź każdy zakup w backendzie i potwierdź te, które nie zostały jeszcze potwierdzone:
const purchases = await service.listPurchases();
for (const p of purchases) {
await verifyOrAcknowledgePurchaseOnBackend(p.purchaseToken, p.itemId);
// Update the UI with items the user is entitled to.
}
Testowanie integracji
Aby przetestować aplikację na urządzeniu z Androidem przed opublikowaniem jej w Sklepie Play, wykonaj te czynności:
- mieć Androida 9 lub nowszego z włączonymi opcjami programisty,
- W Chrome otwórz
chrome://flagsi włącz#enable-debug-for-store-billing. - Wyświetlaj witrynę przez HTTPS. Interfejs Digital Goods API nie jest dostępny przez HTTP.
Jeśli aplikacja jest zainstalowana ze Sklepu Play, flaga nie jest potrzebna. Aby przeprowadzić testy za pomocą kont i produktów testowych, zapoznaj się z artykułem Testowanie integracji Biblioteki płatności w Google Play.
Dalsze kroki
- Weryfikuj zakupy w backendzie za pomocą biblioteki klienta interfejsu Google Play Developer API.
- Dowiedz się, jak sprzedawać subskrypcje.
- Skonfiguruj powiadomienia w czasie rzeczywistym dla deweloperów, aby śledzić zmiany w subskrypcjach.