Versi aplikasi ini tidak dikonfigurasikan untuk penagihan melalui Google Play

269

Ketika saya mencoba menjalankan aplikasi saya dengan tagihan dalam aplikasi, saya mendapatkan kesalahan: "Versi aplikasi ini tidak dikonfigurasi untuk penagihan melalui Google Play. Periksa pusat bantuan untuk informasi lebih lanjut".

Saya sudah memiliki izin penagihan di file Manifest dan saya memiliki .apk ditandatangani yang diunggah sebagai konsep ke Google Play dan saya juga telah menginstal apk yang ditandatangani itu ke ponsel saya.

Adakah bantuan tentang cara mengatasi masalah ini?

Penjaga gerbang
sumber

Jawaban:

339

Kesalahan ini dapat disebabkan oleh beberapa alasan.

Berikut adalah daftar persyaratan untuk pengujian IAB Google.

Prasyarat:

  1. AndroidManifest harus menyertakan izin "com.android.vending.BILLING" .
  2. APK dibangun dalam mode rilis .
  3. APK ditandatangani dengan sertifikat rilis . (Penting: dengan "Penandatanganan Aplikasi oleh Google Play" ini hanya berfungsi jika Anda mengunduh langsung dari GooglePlayStore!)
  4. APK diunggah ke saluran distribusi alfa / beta (sebelumnya - sebagai konsep) ke konsol pengembang setidaknya satu kali. (membutuhkan waktu ~ 2 jam-24 jam ).
  5. Produk IAB diterbitkan dan statusnya diatur ke aktif .
  6. Akun uji ditambahkan di konsol pengembang.

Persyaratan pengujian:

  1. Test APK memiliki versi yang sama dengan kode yang diunggah ke konsol pengembang.
  2. Test APK ditandatangani dengan sertifikat yang sama dengan yang diunggah ke dev.console.
  3. Akun uji (bukan pengembang) - adalah akun utama pada perangkat. (Akun utama mungkin tidak perlu - menurut komentar @MinosL )
  4. Akun uji diikutkan sebagai penguji dan tertaut ke metode pembayaran yang valid . ( @Kyone )

PS: Debugging dengan sertifikat rilis : https://stackoverflow.com/a/15754187/1321401 (Thnx @dipp untuk tautan)

PPS: Sudah lama ingin membuat daftar ini.

Thnx @zlgdev , @Kyone , @MinosL untuk pembaruan

Luten
sumber
5
Jangan lupa untuk memastikan akun yang Anda gunakan untuk menguji IAB diikutkan sebagai penguji menggunakan "opt-in URL" yang dihasilkan setelah Anda mengunggah bangunan; DAN bahwa itu terkait dengan metode pembayaran yang valid .
Kyone
3
Bukankah lebih mudah untuk hanya menguji IAP? Atau untuk menguji hal-hal secara umum ..
Juan
1
juga perlu diperhatikan; akun uji tidak boleh ditautkan ke akun pengembang (seharusnya tidak memiliki akses untuk mengunggah APK)
guness
2
juga perlu diperhatikan; jika "Sertifikat penandatanganan aplikasi" diaktifkan, maka kami tidak dapat menggunakan APK lokal kami untuk menguji dengan pembelian nyata karena kami tidak dapat menandatangani dengan sertifikat penandatanganan. (Butuh saya seperti 3 jam untuk mencari tahu)
guness
1
Saya telah berhasil menguji dengan 1) aplikasi debug yang ditandatangani yaitu 2) bukan akun utama pada perangkat , sehingga proses untuk pengujian IAB Google tampaknya tidak seketat yang disebutkan di atas.
MinosL
194

Ahh menemukan solusinya setelah mencoba selama beberapa jam.

  1. Google membutuhkan waktu untuk memproses aplikasi dan memperbaruinya ke server mereka, bagi saya dibutuhkan sekitar setengah hari. Jadi setelah menyimpan apk sebagai konsep di Google Play, Anda harus menunggu beberapa jam sebelum produk dalam aplikasi merespons secara normal dan memungkinkan pembelian rutin.
  2. Ekspor dan tandatangani APK. APK yang tidak ditandatangani yang mencoba melakukan pembelian akan mendapatkan kesalahan.
Penjaga gerbang
sumber
71
Wow, ini serius? Hanya mengalami masalah yang sama. Melakukan semua yang diminta oleh Google untuk menguji penagihan dalam aplikasi, tetapi masih mendapatkan pesan kesalahan yang sama. Saya kira saya harus menunggu dan melihat. Tetapi apakah Google benar-benar mengharapkan kami pengembang menunggu selama berjam-jam setiap kali kami perlu memperbarui aplikasi untuk menerapkan penagihan dalam aplikasi? Sepertinya tidak pantas bagi saya, untuk sedikitnya.
Simon
6
Bisakah Anda menguji saat terhubung ke Android Studio / menjalankan saat terhubung ke debugger? Atau apakah Anda perlu menginstal apk rilis melalui USB?
Alfie Hanssen
3
Apakah ada cara yang lebih mudah untuk menguji proses pembelian selain dari, Alat Android> Proyek yang ditandatangani ekspor ... dll, lalu menyalin secara manual APK ke perangkat, Uji, .... ulangi? Saya harus kehilangan sesuatu?
wired00
4
Serius, saya tidak bisa menggunakan aplikasi dengan sertifikat debug dan menguji Penagihan dalam Aplikasi?
TacB0sS
8
Perhatikan bahwa Anda BISA menggunakan build debug, langsung dari IDE saat Anda bekerja. Anda hanya perlu mengubah keystore debug ke yang cocok dengan toko rilis Anda. Lihat posting ini untuk informasi lebih lanjut tentang caranya: stackoverflow.com/questions/10886814/…
cottonBallPaws
137

Hal yang sama akan terjadi jika versi yang Anda publikasikan tidak sama dengan versi yang Anda uji pada ponsel Anda.

Misalnya, versi yang diunggah adalah android:versionCode="1", dan versi yang Anda uji pada ponsel Andaandroid:versionCode="2"

cendana
sumber
3
dapatkah Anda memberi tahu saya bagaimana jika versi yang diunggah adalah android:versionCode="1"dan telepon sudah android:versionCode="2"cukup atau saya harus mengubah apk google play?
Youddh
1
Yang perlu Anda lakukan adalah menaikkan versi lokal ke "1" sehingga cocok dengan versi live saat ini, setidaknya untuk sementara waktu untuk pengujian.
Romain
2
Sepertinya ada 2 perbaikan umum untuk kesalahan ini tergantung pada situasi Anda. Dalam kasus saya ini yang ini.
Matt
Terima kasih, ini masalahnya. Apakah debugging baik-baik saja dengan apk rilis bertanda pada perangkat terlampir saya. Kemudian, ubah kode versinya dan mulai mendapatkan error 1005. Wah!
Anna Billstrom
@Anna ketahuilah bahwa -1005 juga USER_CANCELLED jika Anda menggunakan iabHelper
JacksOnF1re
47

Anda harus menandatangani APK dengan sertifikat langsung Anda. Kemudian instal itu ke perangkat uji Anda. Anda kemudian dapat menguji InAppBilling. Jika Anda menguji aplikasi Anda dengan menjalankan langsung melalui gerhana ke perangkat (Dalam mode debug) maka Anda akan mendapatkan kesalahan ini.

Jika Anda menggunakan android.test.purchasedsebagai SKU, itu akan berfungsi sepanjang jalan, tetapi Anda tidak akan memiliki developerPayload dalam respons akhir Anda.

Jika Anda menggunakan konsep sendiri dalam item aplikasi, Anda dapat menguji sepenuhnya tetapi Anda akan dikenai biaya dan harus mengembalikannya sendiri setelahnya.

Anda tidak dapat membeli item dengan akun gmail yang sama yang Anda gunakan untuk konsol pengembangan google play.

Chirag Patel
sumber
1
+1 Menjalankan dari debugger menggunakan sertifikat debug. Setelah mengekspor aplikasi dan membuat kunci publik baru (dan memasangnya di konsol pengembang), cukup kirimkan sendiri apk APK dan instal dari kotak masuk gmail Anda.
cdavidyoung
Jika saya ingin mencoba "android.test.purchased" apakah saya kemudian akan mengubah SKU di kode saya dan di konsol pengembang?
Rocologo
26

Di konsol pengembang:

Settings-> Account details-> License Testing-> Akun Gmail dengan akses pengujian

dan ketik di sini akun Anda

Pablo Cegarra
sumber
Bekerja seperti pesona.
Jordan
17

Jika Anda di sini mulai tahun 2018, Anda harus mengunduh APK langsung dari Play Store dan menginstal APK "turunan". Mungkin itu karena Google Play Store memiliki fitur "Penandatanganan Aplikasi oleh Google Play".

Hukum Gimenez
sumber
1
APK yang mana? Saya menggunakan AIDL apakah saya masih perlu melakukan itu?
Zhen Liu
@ZhenLiu Saya kira tidak diperlukan
Law Gimenez
Selain itu, aplikasi tidak dapat diinstal pada perangkat dengan cara yang berbeda (mis. Android Studio). Instalasi / pembaruan dari Play Store akan berfungsi, tetapi IAP tidak akan - Anda akan mendapatkan kesalahan OP.
JDune
Bagaimana kita men-debug ini?
Oliver Dixon
3

Ini akan terjadi jika Anda menggunakan versi apk yang berbeda dari yang ada di google play.

Amalka
sumber
3

Biarkan saya menambahkan apa yang terjadi dengan saya, semoga membantu seseorang.

Itu terutama karena penandatanganan.

Karena saya telah menambahkan detail penandatanganan dalam struktur Project, saya berpikir bahwa setiap kali saya menjalankan, diharapkan apk yang ditandatangani semakin terinstal. Tapi tipe build 'debug' dipilih.

Perbaikan di bawah ini memecahkan masalah bagi saya.

  • Dihasilkan apk ditandatangani dari tipe bangunan 'rilis'.
  • Menginstal apk secara manual.
Shree Harsha S
sumber
2

Dalam kasus saya, saya melihat pesan yang sama karena tanda tangan yang berbeda dari apk yang diinstal dan diunggah ke apk pasar.

GoRGon
sumber
2

Berlawanan dengan banyak jawaban dan komentar di SO dan situs lain, Anda TIDAK harus melakukan tes pendahuluan dengan versi alpha / beta dari produk Anda yang telah diunduh dari Google Play ke perangkat pengujian Anda (proses publikasi alpha / beta sering memakan setengah hari). Anda juga tidak harus memuat dan memuat ulang apk rilis yang ditandatangani dari studio pengembang Anda ke perangkat pengujian Anda.

Anda BISA men-debug Google Play awal dalam layanan penagihan aplikasi menggunakan aplikasi debug yang dimuat dari studio pengembang Anda langsung ke perangkat uji Anda melalui ADB. Jika Anda mengalami kesalahan yang mencegah hal ini, kemungkinan Anda telah melakukan kesalahan pada kode Anda. Perhatikan KASUS SKU Anda (id produk) dan formatnya (misalnya, jika Anda memuat APK sebagai com.mydomain.my_product_id, pastikan Anda mencoba membelinya dengan cara ini - dengan menyediakan case dan domain yang sama) . Juga, perhatikan dengan seksama itemType Anda - ini harus berupa "tidak" atau "subs" untuk dikelola / tidak dikelola dalam pembelian aplikasi atau berlangganan, masing-masing.

Seperti yang disarankan oleh Chirag Patel, asalkan Anda memiliki kode penagihan yang ditetapkan dengan benar, lakukan semua pengujian menggunakan Sku (ID produk) android.test.purchased selama tes pendahuluan Anda. Periksa ID ini di seluruh operasi penagihan Anda untuk memberikannya melalui tanda tangan, token, dan cek muatan, karena data ini tidak disediakan oleh sistem pengujian Google. Selain itu, berikan salah satu produk uji Anda ID ini untuk menguji pembeliannya, membuka / memuat, dan presentasi sepanjang jalan melalui skema Anda. Untuk menghapus pembelian, cukup mengkonsumsinya, melewati Sku yang sama DAN string token diformat dengan cara ini - tidak ada bidang lain yang relevan:

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

Setelah Anda menyelesaikan fase pengujian ini, lanjutkan ke pengujian semi-live dengan produk alfa / beta Anda. Buat grup Google (dasarnya mailing list), tambahkan email pengguna tes Anda ke dalamnya, dan tambahkan / undang grup ini untuk menguji perangkat Anda dalam fase ini (dilakukan di bagian "APK" dari daftar pengembang Google aplikasi Anda). Pembelian akan disimulasikan tetapi tidak benar-benar dibebankan - namun untuk menghapus dan menguji kembali pembelian, Google menunjukkan bahwa Anda harus mengembalikannya dari dompet Google Anda. INI adalah satu-satunya fase pengujian yang membutuhkan proses yang memakan waktu menggunakan alpha / beta load dan pengguna tes.

Epsilon3
sumber
1

Punya masalah yang sama, dan itu tidak diselesaikan sebelum saya membaca posting dari DZDomi. Tiba-tiba terjadi bahwa ada pengaturan di Google Developer Console yang perlu Anda aktifkan. Di bagian "Pembelian dalam aplikasi", ada garis untuk produk Anda dan di ujung kanan ada status untuk itu. Itu harus AKTIF!

Søren
sumber
0

masalah saya adalah bahwa saya mencoba untuk memeriksanya dengan debug.keystore, maksud saya menjalankannya melalui eclipse. Saya mengekspornya dengan keystore yang saya terbitkan dalam mode alfa (harus diterbitkan sebelum Anda dapat mengujinya). telepon saya dan kemudian saya bisa mengujinya secara normal.

Gal Rom
sumber
0

Masalahnya juga terjadi, ketika Anda telah menambahkan pembelian dalam aplikasi setelah Anda mengunggah apk, tetapi Anda belum menerbitkan aplikasi di play store (alfa, beta, dan produksi).

Yang pada dasarnya berarti, bahwa Anda harus menambahkan pembelian dalam Aplikasi SETELAH Anda telah menerbitkan apk di Play Store (alfa, beta, dan produksi). Kalau tidak, Anda tidak akan dapat membeli atau meminta pembelian dalam Aplikasi.

DZDomi
sumber
0

Alasan lain yang tidak disebutkan di sini adalah bahwa Anda perlu menguji pada perangkat nyata. Dengan emulator menjadi sangat bagus, itu adalah kesalahan yang mudah dibuat.

JDenais
sumber
0

Baru-baru ini Google telah menerapkan perubahan pada sistem mereka, dan karena Anda telah mengunggah setidaknya satu APK ke konsol Anda, Anda dapat menguji permintaan dalam aplikasi Anda dengan aplikasi Anda dengan kode / nomor versi apa pun.

LINK referensi silang

Konfigurasikan gradleuntuk menandatangani build debug Anda untuk debugging.

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

LARUTAN

Tunggu sebentar setelah mengunggah aplikasi Anda di play store karena google membutuhkan waktu untuk memperbarui versi aplikasi. Ini akan berhasil!

Ali Akram
sumber
0

Saya memiliki masalah yang sama di moto c2 + dalam kasus saya ini adalah masalah perangkat setelah saya restart maka akan berjalan dengan sempurna ...

Sagar Pithiya
sumber