Questa guida descrive come integrare le API per offrire solo la fatturazione alternativa (ovvero senza scelta dell'utente) nelle app idonee. Per scoprire di più su questi programmi inclusi i requisiti di idoneità e l'ambito geografico, consulta la sezione Informazioni sulle Fatturazione.
Configurazione della Libreria Fatturazione Play
Aggiungi la dipendenza Libreria Fatturazione Play all'app per Android. Per utilizzare le API di fatturazione alternativa devi usare la versione 6.1 o successive.
Connettersi a Google Play
I primi passaggi del processo di integrazione sono gli stessi descritti in la guida all'integrazione di Fatturazione Google Play, apportando alcune modifiche quando inizializzazione di BillingClient:
- Devi chiamare un nuovo metodo per indicare che la tua app utilizza solo un
sistema di fatturazione alternativo:
enableAlternativeBillingOnly
.
L'esempio seguente mostra l'inizializzazione di un BillingClient
con questi
modifiche:
Kotlin
var billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build()
Java
private BillingClient billingClient = BillingClient.newBuilder(context)
.enableAlternativeBillingOnly()
.build();
Dopo aver inizializzato BillingClient
, devi stabilire una connessione con
Google Play come descritto nella guida all'integrazione.
Verifica della disponibilità in corso...
La tua app dovrebbe confermare che è disponibile solo la fatturazione alternativa chiamando
isAlternativeBillingOnlyAvailableAsync
Questa API restituirà BillingResponseCode.OK se solo la fatturazione alternativa è disponibili. Fai riferimento alla gestione delle risposte per i dettagli su come la tua app dovrebbe rispondere ad altri codici di risposta.
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.
}
});
Finestra di dialogo di informazioni per gli utenti
Per l'integrazione solo con la fatturazione alternativa, la tua app idonea deve mostrare un
schermata informativa che aiuta gli utenti a capire che la fatturazione non verrà gestita
da Google Play. La schermata delle informazioni deve essere mostrata agli utenti chiamando il
showAlternativeBillingOnlyInformationDialog
prima di avviare
un flusso di fatturazione alternativo. Se l'utente ha già confermato
di dialogo, l'utilizzo di questa API in genere non comporta la visualizzazione della finestra di dialogo
di nuovo. A volte la finestra di dialogo potrebbe essere mostrata di nuovo a un utente in situazioni
ad esempio se l'utente svuota la cache del proprio 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 questo metodo restituisce BillingResponseCode.OK, la tua app può procedere con la transazione. Nel caso di BillingResponseCode.USER_CANCELED l'app deve chiamare showAlternativeBillingOnlyInformationDialog per mostrare di nuovo all'utente. Per altri codici di risposta, consulta la documentazione sulla gestione .
Segnalare le transazioni a Google Play
Tutte le transazioni effettuate tramite un sistema di fatturazione alternativo devono essere registrate
a Google Play chiamando l'API Google Play Developer dal tuo backend
24 ore, fornendo un valore externalTransactionToken
ottenuto utilizzando
all'API descritta di seguito. È necessario generare un nuovo externalTransactionToken per ogni
acquisto una tantum, per ogni nuovo abbonamento e per eventuali upgrade/downgrade a un
abbonamento esistente. Per scoprire come segnalare una transazione una volta
Hai ottenuto il risultato externalTransactionToken
. Consulta la guida all'integrazione del backend.
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.
}
});
Gestione della risposta
I metodi precedenti isAlternativeBillingOnlyAvailableAsync(),
showAlternativeBillingOnlyInformationDialog()
e
createAlternativeBillingOnlyReportingDetailsAsync()
potrebbe tornare
risposte non-BillingResponseCode.OK in caso di errori. Il tipo di
la gestione degli errori è descritta di seguito:
ERROR
: questo è un errore interno. Non procedere con la transazione. Riprova chiamandoshowAlternativeBillingOnlyInformationDialog()
per visualizzare le informazioni la finestra di dialogo all'utente tenta di effettuare un acquisto.FEATURE_NOT_SUPPORTED
: le API di fatturazione alternativa non sono supportate da dal Play Store sul dispositivo corrente. Non procedere con la transazione.USER_CANCELED
: non procedere con la transazione. ChiamashowAlternativeBillingOnlyInformationDialog()
per visualizzare finestra di dialogo di informazioni all'utente la volta successiva che acquisto.BILLING_UNAVAILABLE
: la transazione non è idonea per un'alternativa fatturazione e pertanto non dovrebbe procedere nell'ambito di questo programma. Questo è perché l'utente non si trova in un paese idoneo per questo programma oppure il tuo account non è stato registrato correttamente al programma. Se si tratta del in un secondo momento, controlla lo stato della tua registrazione in Play Console.DEVELOPER_ERROR
: si è verificato un errore nella richiesta. Utilizzare il messaggio di debug per identificare e correggere l'errore prima di procedere.NETWORK_ERROR, SERVICE_DISCONNECTED, SERVICE_UNAVAILABLE
: si tratta di errori temporanei che è necessario riprovare. Nel caso diSERVICE_DISCONNECTED
ristabilisce una connessione con Google Play prima del giorno nuovo tentativo in corso.
Testa la fatturazione alternativa
I tester delle licenze devono essere usati per testare l'integrazione della fatturazione alternativa. Tu non verranno addebitate le transazioni avviate dal tester delle licenze . Per saperne di più, consulta l'articolo Testare la fatturazione in-app con le licenze dell'applicazione. informazioni sulla configurazione dei tester delle licenze.
Passaggi successivi
Al termine dell'integrazione in-app, puoi integrare le tue di backend.