Indicazioni per l'integrazione in-app solo per la fatturazione alternativa

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 chiamando showAlternativeBillingOnlyInformationDialog() 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. Chiama showAlternativeBillingOnlyInformationDialog() 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 di SERVICE_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.