Este guia é para apps da Web empacotados como uma Atividade Confiável na Web. Para apps Android escritos em Kotlin ou Java, consulte a documentação do Google Play Faturamento.
Os apps no Google Play que vendem produtos e softwares digitais ou assinaturas precisam usar o Google Play Faturamento. Em uma Atividade Confiável na Web, você faz a integração usando as seguintes APIs da Web, disponíveis no Chrome 101 e versões mais recentes no Android e no ChromeOS:
- API de produtos e softwares digitais:recupera detalhes do produto e as compras do usuário.
- API Payment Request:inicia o fluxo de compra.
Requisitos
Para configurar o Google Play Faturamento, você precisa do seguinte:
- Uma conta de desenvolvedor do Google Play e uma conta do comerciante do Google Payments vinculadas uma à outra.
- Uma página "Detalhes do app" na Play Store com uma versão na faixa de teste público, fechado ou interno.
- Os produtos e as assinaturas do app configurados no Play Console.
- Um projeto de Atividade Confiável na Web com uma configuração do Digital Asset Links em funcionamento.
Não cobre os usuários pelo download do seu app na Google Play Store. Seu PWA ainda está disponível na Web, então um download pago não restringe o acesso. Em vez disso, venda recursos ou conteúdo com compras no app ou assinaturas.
Ativar o Google Play Faturamento no projeto do Android
Se você criar o app com o Bubblewrap, ative o recurso playBilling em
twa-manifest.json na raiz do projeto:
"features": {
"playBilling": {
"enabled": true
}
}
Em seguida, execute bubblewrap update seguido por bubblewrap build e faça upload do novo
pacote do Android para a Google Play Store.
Se você criar o app no Android Studio, adicione a
biblioteca Android Browser Helper Play Billing. Para as mudanças necessárias em
DelegationService e AndroidManifest.xml, consulte a
demonstração do twa-play-billing.
Verificar se há suporte para o Google Play Faturamento
Chame getDigitalGoodsService() com o identificador da Google Play Store,
https://play.google.com/billing. Se o método estiver ausente ou a chamada falhar,
use outro fluxo de pagamento:
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.
}
}
Mostrar detalhes do produto
Use getDetails() para recuperar o título, a descrição e o preço dos
IDs de produto, para que os preços exibidos correspondam à Play Store:
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);
}
A API Digital Goods não pode listar os IDs dos seus produtos. Para consultá-los no seu back-end, use a API Google Play Developer.
Fazer uma compra
Crie um PaymentRequest com https://play.google.com/billing como forma de pagamento
e o ID do produto como sku em data. O Google Play Faturamento usa o preço
do Play Console. Portanto, total é obrigatório, mas ignorado.
Depois que show() for resolvido, envie o token de compra ao back-end para
verificar e confirmar a compra. Se você não confirmar uma compra
em até três dias, o Google Play vai reembolsar o usuário e
revogar a compra.
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.
}
}
Verificar as compras de um usuário
Use listPurchases() para encontrar itens que pertencem ao usuário, como assinaturas
ativas, compras não consumidas ou códigos promocionais resgatados. Verifique cada
compra no back-end e confirme as que ainda não foram confirmadas:
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.
}
Testar sua integração
Para testar em um dispositivo Android antes de publicar na Google Play Store, siga estas etapas:
- Use o Android 9 ou mais recente com as opções do desenvolvedor ativadas.
- No Chrome, acesse
chrome://flagse ative#enable-debug-for-store-billing. - Exiba seu site por HTTPS. A API Digital Goods não está disponível por HTTP.
Quando o app é instalado pela Google Play Store, você não precisa da flag. Para testar com contas e produtos de teste, consulte Testar a integração da Biblioteca Google Play Faturamento.
Próximas etapas
- Verifique as compras no back-end com uma biblioteca de cliente da API Google Play Developer.
- Saiba como vender assinaturas.
- Configure as Notificações do desenvolvedor em tempo real para acompanhar as mudanças nas assinaturas.