Questa versione dell'applicazione non è configurata per la fatturazione tramite Google Play


269

Quando provo a eseguire la mia applicazione con la fatturazione in-app, visualizzo l'errore: "Questa versione dell'applicazione non è configurata per la fatturazione tramite Google Play. Consulta il centro assistenza per ulteriori informazioni".

Ho già l'autorizzazione di fatturazione nel file Manifest e ho un .apk firmato caricato come bozza su Google Play e ho anche installato lo stesso apk firmato sul mio telefono.

Qualche aiuto su come risolvere questo problema?

Risposte:


339

Questo errore può essere causato da diversi motivi.

Ecco l'elenco dei requisiti per il test IAB di Google.

Prerequisiti:

  1. AndroidManifest deve includere l' autorizzazione "com.android.vending.BILLING" .
  2. APK è integrato in modalità di rilascio .
  3. APK è firmato con i certificati di rilascio . (Importante: con "App Signing by Google Play" funziona solo se scarichi direttamente da GooglePlayStore!)
  4. L'APK viene caricato sul canale di distribuzione alfa / beta (precedentemente - come bozza) nella console per gli sviluppatori almeno una volta. (richiede un po 'di tempo ~ 2h-24h ).
  5. I prodotti IAB vengono pubblicati e il loro stato impostato su attivo .
  6. Gli account di prova sono stati aggiunti nella console per gli sviluppatori.

Requisiti di prova:

  1. L'APK di prova ha lo stesso VersionCode di quello caricato sulla console per sviluppatori.
  2. L'APK di prova è firmato con gli stessi certificati di quello caricato su dev.console.
  3. Account di prova (non sviluppatore): è l' account principale sul dispositivo. (L'account principale potrebbe non essere necessario - secondo il commento di @MinosL )
  4. L'account di prova è attivato come tester ed è collegato a un metodo di pagamento valido . ( @Kyone )

PS: debug con certificato di rilascio : https://stackoverflow.com/a/15754187/1321401 (Thnx @dipp per il collegamento)

PPS: Volevo fare questo elenco già da molto tempo.

Thnx @zlgdev , @Kyone , @MinosL per gli aggiornamenti


5
Non dimenticare di assicurarti che l'account che stai utilizzando per testare IAB sia attivato come tester utilizzando l'URL di opt-in generato dopo aver caricato una build; E che è collegato a un metodo di pagamento valido .
Kyone,

3
Non dovrebbe essere più semplice testare IAP? O per testare le cose in generale ..
Juan

1
anche degno di nota; l'account di prova non deve essere collegato all'account sviluppatore (non dovrebbe avere accesso al caricamento
dell'APK

2
anche degno di nota; se il "Certificato di firma app" è abilitato, non possiamo utilizzare il nostro APK locale per testare con acquisti reali poiché non possiamo firmare con il certificato di firma. (Mi ci vollero circa 3 ore per scoprirlo)
armate il

1
Ho testato con successo con 1) un'app di debug firmata che è 2) non l'account principale sul dispositivo , quindi il processo per i test IAB di Google sembra non essere rigoroso come indicato sopra.
MinosL

194

Ahh ha trovato la soluzione dopo aver provato per un paio d'ore.

  1. Google impiega un po 'di tempo per elaborare le applicazioni e aggiornarle sui loro server, per me ci vuole circa mezza giornata. Quindi, dopo aver salvato l'apk come bozza su Google Play, devi attendere alcune ore prima che i prodotti in-app rispondano normalmente e consentano acquisti regolari.
  2. Esporta e firma APK. L'APK non firmato che tenta di effettuare acquisti riceverà un errore.

71
Wow, è serio? Ho appena incontrato lo stesso problema. Ha fatto tutto ciò che Google mi ha chiesto di fare per testare la fatturazione in-app, ma ottenendo sempre lo stesso messaggio di errore evasivo. Immagino che dovrò aspettare e vedere. Google si aspetta davvero che noi sviluppatori aspettiamo ore ogni volta che dobbiamo aggiornare la nostra app per implementare la fatturazione in-app? Mi sembra abbastanza inappropriato, per non dire altro.
Simon,

6
Puoi provare mentre sei connesso ad Android Studio / mentre sei connesso al debugger? O è necessario installare l'apk di rilascio tramite USB?
Alfie Hanssen,

3
Esiste un modo più semplice per testare il processo di acquisto diverso da Strumenti Android> Esporta progetto firmato ... ecc., Quindi copiare manualmente l'APK sul dispositivo, Test, .... ripetere? Mi manca qualcosa?
cablato il

4
Seriamente, non riesco a utilizzare l'applicazione con certificato di debug e testare la fatturazione in-app?
TacB0sS,

8
Nota che puoi usare build di debug, direttamente dal tuo IDE mentre lavori. Hai solo bisogno di cambiare il keystore di debug in uno che corrisponda al tuo negozio di rilascio. Vedi questo post per maggiori informazioni su come: stackoverflow.com/questions/10886814/...
cottonBallPaws

137

Lo stesso accadrà se la tua versione pubblicata non è la stessa della versione che stai testando sul tuo telefono.

Ad esempio, la versione caricata è android:versionCode="1"e la versione che stai testando sul tuo telefono èandroid:versionCode="2"


3
puoi dirmi per favore cosa succede se la versione caricata è android:versionCode="1"e il telefono è android:versionCode="2"dose ok o devo cambiare il mio apk google play?
Youddh,

1
Quello che devi fare è ridurre la versione locale a "1" in modo che corrisponda alla versione live corrente, almeno temporaneamente per i test.
Romain,

2
Sembra che ci siano 2 correzioni comuni a questo errore a seconda della situazione. Nel mio caso è stato questo.
Matt,

Grazie, questo era il problema. Il debug andava bene con la versione firmata apk sul mio dispositivo collegato. Quindi, ha modificato il codice versione e ha iniziato a ricevere l'errore 1005. wow!
Anna Billstrom,

@Anna tieni presente che -1005 è USER_CANCELLED anche se usi iabHelper
JacksOnF1re

47

Devi firmare il tuo APK con il tuo certificato live. Quindi installalo sul tuo dispositivo di prova. È quindi possibile testare InAppBilling. Se stai testando la tua applicazione eseguendo direttamente tramite eclipse sul dispositivo (in modalità debug), otterrai questo errore.

Se stai usando android.test.purchasedcome SKU, funzionerà fino in fondo, ma non avrai sviluppatoriPayload nella tua risposta finale.

Se stai utilizzando la tua bozza nell'articolo dell'app, puoi testarla fino in fondo, ma ti verrà addebitato un importo e dovrai rimborsarla tu stesso in seguito.

Non puoi acquistare articoli con lo stesso account Gmail che utilizzi per la console di sviluppo di Google Play.


1
+1 L'esecuzione dal debugger utilizza il certificato di debug. Dopo aver esportato l'app e aver creato una nuova chiave pubblica (e averla installata nella console dello sviluppatore), invia un'email all'apk e installala dalla posta in arrivo di Gmail.
cdavidyoung,

Se voglio provare "android.test.purchased", allora cambierò lo SKU sia nel mio codice che nella console per gli sviluppatori?
Rocologo,

26

Nella console per gli sviluppatori:

Settings-> Account details-> License Testing-> Account Gmail con accesso di prova

e digita qui i tuoi account


Funziona come un fascino.
Giordania,

17

Se sei qui dal 2018, devi scaricare l'APK direttamente dal Play Store e installare l'APK "derivato". Forse a causa del Play Store di Google ha una funzione "App Signing by Google Play".


1
Quale APK? Sto usando AIDL, devo ancora farlo?
Zhen Liu,

@ZhenLiu Immagino non sia necessario
Legge Gimenez l'

Inoltre, l'app non può essere già installata sul dispositivo in modo diverso (ad es. Android Studio). L'installazione / aggiornamento dal Play Store funzionerà, ma lo IAP non funzionerà: visualizzerai l'errore OP.
JDune,

Come possiamo eseguire il debug di questo?
Oliver Dixon,

3

Questo accadrà se usi una versione dell'apk diversa da quella di Google Play.


3

Vorrei solo aggiungere quello che è successo con me, può aiutare qualcuno.

Era principalmente dovuto alla firma.

Da quando ho aggiunto i dettagli della firma nella struttura del Progetto, stavo pensando che ogni volta che eseguivo, l'apk firmato previsto veniva installato. Ma è stato selezionato il tipo di build "debug".

Di seguito la correzione ha risolto il problema per me.

  • Apk firmato generato del tipo di build 'release'.
  • Ho installato manualmente l'apk.

2

Nel mio caso ho visto lo stesso messaggio a causa delle diverse firme dell'apk installato e di un apk caricato nell'apk di mercato.


2

Contrariamente a molte risposte e commenti su SO e altri siti, NON è necessario eseguire test preliminari con una versione alfa / beta del prodotto che è stata scaricata da Google Play sul dispositivo di test (il processo di pubblicazione alfa / beta spesso si interrompe mezza giornata). Né devi caricare e ricaricare un apk di rilascio firmato dal tuo studio di sviluppo sul tuo dispositivo di test.

È possibile eseguire il debug di Google Play preliminare nei servizi di fatturazione delle app utilizzando l'app di debug caricata dal proprio studio di sviluppo direttamente sul dispositivo di test tramite ADB. Se riscontri errori che impediscono ciò, probabilmente hai fatto qualcosa di sbagliato nel tuo codice. Presta particolare attenzione al CASO degli SKU (ID prodotto) e al loro formato (ad esempio, se carichi l'APK come com.mydomain.my_product_id, assicurati di provare ad acquistarlo in questo modo - fornendo lo stesso caso e dominio) . Inoltre, presta particolare attenzione al tipo di elemento: questo dovrebbe essere "inapp" o "abbonamenti" per gli acquisti o gli abbonamenti gestiti / non gestiti, rispettivamente.

Come suggerito da Chirag Patel, a condizione che il codice di fatturazione sia stato stabilito correttamente, eseguire tutti i test utilizzando android.test.purchased Sku (ID prodotto) durante i test preliminari. Controlla questo ID durante le tue operazioni di fatturazione per passarlo attraverso i controlli di firma, token e payload, poiché questi dati non sono forniti dal sistema di test di Google. Inoltre, assegna a uno dei tuoi prodotti di prova questo ID per testare il suo acquisto, sblocco / caricamento e presentazione attraverso lo schema. Per CANCELLARE l'acquisto, basta consumarlo, passando la stessa Sku E una stringa di token formattata in questo modo - nessun altro campo è rilevante:

    "inapp:"+appContext.getAppContext().getPackageName()+":android.test.purchased";

Una volta completata questa fase di test, passa ai test semi-live con il tuo prodotto alfa / beta. Crea un gruppo Google (essenzialmente una mailing list), aggiungi i messaggi di posta elettronica degli utenti di prova e aggiungi / invita questo gruppo per testare il tuo dispositivo in questa fase (eseguito nella parte "APK" della scheda per sviluppatori Google della tua app). Gli acquisti verranno simulati ma non effettivamente addebitati; tuttavia, per cancellare e testare nuovamente gli acquisti, Google indica che è necessario rimborsarli dal proprio portafoglio Google. QUESTA è l'unica fase di test che richiede il lungo processo di utilizzo dei carichi alpha / beta e test degli utenti.



1

Ho avuto lo stesso problema e non è stato risolto prima di leggere il post di DZDomi. Improvvisamente si è verificato che è presente un'impostazione nella Console per gli sviluppatori di Google che è necessario abilitare. Nella sezione "Acquisti in app", c'è una linea per il tuo prodotto e all'estrema destra c'è uno stato per esso. Dovrebbe essere ATTIVO!


0

il mio problema era che ho provato a controllarlo con il debug.keystore, intendo eseguirlo tramite eclipse, l'ho esportato con il keystore con cui ho pubblicato in modalità alfa (deve essere pubblicato prima di poterlo testare). Installato in il mio telefono e poi ho potuto testarlo normalmente.


0

Il problema si verifica anche quando hai aggiunto un acquisto in-app dopo aver caricato l'apk, ma non hai pubblicato l'applicazione nel Play Store (alfa, beta e produzione).

Il che significa sostanzialmente che devi aggiungere l'acquisto in-app DOPO aver pubblicato l'apk nel Play Store (alfa, beta e produzione). Altrimenti non sarai in grado di acquistare o eseguire query per l'acquisto in-app.


0

Un altro motivo non menzionato qui è che è necessario eseguire i test su un dispositivo reale. Con l'emulatore che sta diventando davvero buono, è un errore facile da fare.


0

Recentemente google ha implementato una modifica sui propri sistemi e poiché hai caricato almeno un APK sulla tua console, puoi testare le tue richieste in-app con la tua app con qualsiasi codice / numero di versione.

Riferimento incrociato LINK

Configurare gradleper firmare la build di debug per il debug.

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            ...
        }
    }
}

0

SOLUZIONE

Aspetta un po 'dopo aver caricato l'app sul Play Store perché Google impiega un po' di tempo per aggiornare le versioni dell'app. Funzionerà!


0

Ho lo stesso problema in moto c2 + nel mio caso è un problema con il dispositivo una volta riavviato quindi funzionerà perfettamente ...

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.