Este guia descreve como integrar as APIs para oferecer o faturamento alternativo exclusivo (ou seja, sem escolha do usuário) em apps qualificados. Para saber mais sobre esses programas, incluindo os requisitos de qualificação e o escopo geográfico, consulte Sobre o faturamento alternativo.
Configuração da Biblioteca Play Faturamento
Adicione a dependência da Biblioteca Play Faturamento ao seu app Android. Para aproveitar as APIs de faturamento alternativo, você precisa usar a versão 6.1 ou mais recente.
Conectar ao Google Play
As primeiras etapas do processo de integração são as mesmas descritas no Guia de integração do Google Play Faturamento, com algumas modificações ao inicializar o BillingClient:
- É necessário chamar um novo método para indicar que seu app usa apenas o
sistema alternativo de faturamento:
enableAlternativeBillingOnly
.
O exemplo abaixo demonstra a inicialização de um BillingClient
com estas
modificações:
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build();
Depois de inicializar o BillingClient
, você precisa estabelecer uma conexão com o Google Play,
conforme descrito no guia de integração.
Como verificar a disponibilidade
Seu app precisa confirmar se apenas o faturamento alternativo está disponível chamando
isAlternativeBillingOnlyAvailableAsync
.
Essa API retornará BillingResponseCode.OK se apenas o faturamento alternativo estiver disponível. Consulte o processamento de respostas para mais detalhes sobre como seu app precisa responder a outros códigos de resposta.
Kotlin
billingClient.isAlternativeBillingOnlyAvailableAsync(object:
AlternativeBillingOnlyAvailabilityListener {
override fun onAlternativeBillingOnlyAvailabilityResponse(
billingResult: BillingResult) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable, etc.
return
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
Java
billingClient.isAlternativeBillingOnlyAvailable(
new AlternativeBillingOnlyAvailabilityListener() {
@Override
public void onAlternativeBillingOnlyAvailabilityResponse(
BillingResult billingResult) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors,
// handling alternative billing only being unavailable,
// etc.
return;
}
// Alternative billing only is available. Continue with steps in
// the guide.
}
});
Caixa de diálogo de informações para os usuários
Para integrar apenas o faturamento alternativo, o app qualificado precisa mostrar uma
tela de informações que ajude os usuários a entender que o faturamento não será gerenciado
pelo Google Play. A tela de informações precisa ser mostrada aos usuários chamando a
API showAlternativeBillingOnlyInformationDialog
antes de iniciar o
fluxo de faturamento alternativo toda vez. Se o usuário já tiver confirmado a
caixa de diálogo, o uso dessa API normalmente não fará com que ela seja mostrada
de novo. Pode haver momentos em que a caixa de diálogo é mostrada de novo para um usuário em algumas situações,
por exemplo, quando o usuário limpa os caches no dispositivo.
Kotlin
// An activity reference from which the alternative billing only information
// dialog will be launched.
val activity : Activity = ...;
val listener : AlternativeBillingOnlyInformationDialogListener =
AlternativeBillingOnlyInformationDialogListener {
override fun onAlternativeBillingOnlyInformationDialogResponse(
billingResult: BillingResult) {
// check billingResult
}
}
val billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener)
Java
// An activity reference from which the alternative billing only information
// dialog will be launched.
Activity activity = ...;
AlternativeBillingOnlyInformationDialogListener listener =
new AlternativeBillingOnlyInformationDialogListener() {
@Override
public void onAlternativeBillingOnlyInformationDialogResponse(
BillingResult billingResult) {
// check billingResult
}
};
BillingResult billingResult =
billingClient.showAlternativeBillingOnlyInformationDialog(activity,
listener);
Se esse método retornar BillingResponseCode.OK, seu app poderá prosseguir com a transação. No caso de BillingResponseCode.USER_CANCELED, seu app precisa chamar showAlternativeBillingOnlyInformationDialog para mostrar a caixa de diálogo ao usuário de novo. Para outros códigos de resposta, consulte a seção Processamento de respostas.
Como informar transações ao Google Play
Todas as transações feitas por um sistema alternativo de faturamento precisam ser informadas
ao Google Play chamando a API Google Play Developer pelo back-end em até
24 horas, fornecendo um externalTransactionToken
que é recebido usando a API descrita abaixo. Um novo externalTransactionToken precisa ser gerado para cada
compra única, cada nova assinatura e para qualquer upgrade/downgrade para uma
assinatura existente. Para saber como informar uma transação depois que um
externalTransactionToken
for recebido, consulte o guia de integração de back-end.
Kotlin
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(object:
AlternativeBillingOnlyReportingDetailsListener {
override fun onAlternativeBillingOnlyTokenResponse(
billingResult: BillingResult,
alternativeBillingOnlyReportingDetails:
AlternativeBillingOnlyReportingDetails?) {
if (billingResult.responseCode != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return
}
val externalTransactionToken =
alternativeBillingOnlyReportingDetails?
.externalTransactionToken
// Send transaction token to backend and report to Google Play.
}
});
Java
billingClient.createAlternativeBillingOnlyReportingDetailsAsync(
new AlternativeBillingOnlyReportingDetailsListener() {
@Override
public void onAlternativeBillingOnlyTokenResponse(
BillingResult billingResult,
@Nullable AlternativeBillingOnlyReportingDetails
alternativeBillingOnlyReportingDetails) {
if (billingResult.getResponseCode() != BillingResponseCode.OK) {
// Handle failures such as retrying due to network errors.
return;
}
String transactionToken =
alternativeBillingOnlyReportingDetails
.getExternalTransactionToken();
// Send transaction token to backend and report to Google Play.
}
});
Processamento de respostas
Os métodos acima, isAlternativeBillingOnlyAvailableAsync(),
showAlternativeBillingOnlyInformationDialog()
e
createAlternativeBillingOnlyReportingDetailsAsync()
, podem retornar
respostas que não são de BillingResponseCode.OK em caso de erros. O processamento
recomendado dos erros é descrito abaixo:
ERROR
: este é um erro interno. Não prossiga com a transação. Tente de novo chamandoshowAlternativeBillingOnlyInformationDialog()
para mostrar as informações. caixa de diálogo para o usuário na próxima vez que tenta fazer uma compra.FEATURE_NOT_SUPPORTED
: as APIs de faturamento alternativo não oferecem suporte à Play Store no dispositivo atual. Não prossiga com a transação.USER_CANCELED
: não continua a transação. LigaçãoshowAlternativeBillingOnlyInformationDialog()
novamente para mostrar de informações para o usuário na próxima vez que ele tentar fazer uma compra.BILLING_UNAVAILABLE
: a transação não está qualificada para faturamento alternativo exclusivo e, portanto, não pode continuar neste programa. Isso ocorre porque o usuário não está em um país qualificado para o programa ou sua conta não foi inscrita no programa. No último caso, verifique o status de registro no Google Play Console.DEVELOPER_ERROR
: há um erro na solicitação. Use a mensagem de depuração para identificar e corrigir o erro antes de continuar.NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE
: são erros temporários. É preciso tentar fazer a solicitação novamente. No caso deSERVICE_DISCONNECTED
, restabeleça uma conexão com o Google Play antes de tentar de novo.
Testar o faturamento alternativo
Os testadores de licença precisam ser usados para testar sua integração de faturamento alternativo. Você não serão faturadas por transações iniciadas pelo testador de licença contas de serviço. Consulte Testar o faturamento no app com o licenciamento de apps para mais informações. informações sobre como configurar testadores de licença.
Próximas etapas
Depois de concluir a integração no app, estará tudo pronto para integrar seu back-end.