Este guia descreve como fazer a integração com as APIs para dar suporte a promoções externas em apps e regiões qualificados. Para saber mais sobre o programa de promoções externas incluindo os requisitos de qualificação e o escopo geográfico, consulte requisitos do programa.
Configuração da Biblioteca Play Faturamento
Para usar as APIs de promoções externas, adicionar a versão 6.2.1 ou mais recente da dependência da Biblioteca Play Faturamento ao seu app Android. Se precisar migrar de uma versão anterior, siga siga as instruções do guia de migração antes de tentar implementar promoções externas.
Conectar ao Google Play
As primeiras etapas do processo de integração são as mesmas descritas no
o guia de integração de faturamento, com algumas modificações na
inicializando o BillingClient
:
- É necessário chamar um novo método para indicar que você quer usar o
ofertas:
enableExternalOffer
.
O exemplo abaixo demonstra a inicialização de um BillingClient
com estas
modificações:
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableExternalOffer()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableExternalOffer()
.build();
Depois de inicializar o BillingClient
, você precisa estabelecer uma conexão com o Google Play,
conforme descrito no guia de integração.
Ver disponibilidade
Seu app precisa confirmar se as promoções externas estão disponíveis ligando para
isExternalOfferAvailableAsync
Essa API vai retornar BillingResponseCode.OK
se promoções externas estiverem disponíveis.
Consulte o processamento de respostas para detalhes sobre como o app deve
responder a outros códigos de resposta.
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.
}
});
Preparar um token de transação externa
Para denunciar uma transação externa ao Google Play, você precisa ter um
token de transação gerado na Biblioteca Play Faturamento. Um novo link externo
token de transação deverá ser gerado sempre que o usuário acessar uma
do site pela API de promoções externas. Para isso, chame o método
API createExternalOfferReportingDetailsAsync
. Esse token deve ser
gerados imediatamente antes de o usuário ser direcionado para fora do aplicativo. Ele deveria
nunca serão armazenados em cache, e um novo deverá ser gerado sempre que o usuário for direcionado
fora do app.
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.
}
});
Caixa de diálogo de informações para os usuários
Para integração com promoções externas, seu app qualificado precisa mostrar uma informação
que ajuda os usuários a entender que estão prestes a ser direcionados para fora
o app a um site externo. A tela de informações precisa ser mostrada aos usuários
chamar a API showExternalOfferInformationDialog
antes de vincular a um
oferta externa.
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);
Se o método retornar BillingResponseCode.OK
, o app poderá prosseguir para
direcionar o usuário para um site externo. Se o método retornar
BillingResponseCode.USER_CANCELED
, o app não pode continuar abrindo o
site.
Informar transações ao Google Play
Todas as transações externas precisam ser informadas ao Google Play
chame a API Google Play Developer do back-end. Transações externas
precisa ser informada, fornecendo uma
externalTransactionToken
recebido usando o
API createExternalOfferReportingDetailsAsync
. Se um usuário fizer vários
é possível usar a mesma
externalTransactionToken
para registrar cada compra. Para saber como denunciar um
transação, consulte o guia de integração de back-end.
Processamento de respostas
Quando ocorre um erro, os métodos isExternalOfferAvailableAsync
,
createExternalOfferReportingDetailsAsync
e
showExternalOfferInformationDialog
pode retornar respostas diferentes de
BillingResponseCode.OK
. Considere processar esses códigos de resposta da seguinte maneira:
ERROR
: este é um erro interno. não prossiga com a transação; abrir o site externo. Tente de novo chamandoshowExternalOfferInformationDialog()
para mostrar as informações. para o usuário na próxima vez que tentar direcioná-lo para fora da app.FEATURE_NOT_SUPPORTED
: as APIs de promoções externas não são compatíveis com Play Store no dispositivo atual. não prossiga com a transação; abrir o site externo.USER_CANCELED
: não continua abrindo o site externo. LigaçãoshowExternalOfferInformationDialog()
novamente para mostrar as informações para o usuário na próxima vez que tentar direcioná-lo para fora do o app.BILLING_UNAVAILABLE
: a transação não está qualificada para promoções externas e, portanto, não devem continuar neste programa. Isso ocorre porque o usuário não está em um país qualificado para este programa ou sua conta tem não foi inscrito no programa. Se for o último caso, verifique seu status de inscrição no 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 que devem ser tratados com uma política de nova tentativa apropriada. No caso deSERVICE_DISCONNECTED
, restabeleça uma conexão com Google Play antes de tentar novamente.
Testar promoções externas
Os testadores de licença precisam ser usados para testar a integração de promoções externas. 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.