Эта версия приложения не настроена для выставления счетов через Google Play

269

Когда я пытаюсь запустить приложение с биллингом в приложении, я получаю сообщение об ошибке: «Эта версия приложения не настроена для биллинга через Google Play. Обратитесь в справочный центр за дополнительной информацией».

У меня есть разрешение на выставление счета уже в файле манифеста, и я подписал .apk, загруженный как черновик в Google Play, и я также установил тот же подписанный apk на свой телефон.

Любая помощь о том, как решить эту проблему?

привратник
источник

Ответы:

339

Эта ошибка может быть вызвана несколькими причинами.

Вот список требований для тестирования Google IAB.

Предпосылки:

  1. AndroidManifest должен включать разрешение «com.android.vending.BILLING» .
  2. APK построен в режиме релиза .
  3. APK подписан с сертификатом (ами) выпуска . (Важно: с «Подписыванием приложений в Google Play» это работает, только если вы загружаете напрямую из GooglePlayStore!)
  4. APK загружается в альфа / бета канал распространения (ранее - как черновик) на консоль разработчика хотя бы один раз (занимает некоторое время ~ 2-24 часа ).
  5. Продукты IAB опубликованы, и их статус установлен как активный .
  6. Тестовые аккаунты добавлены в консоль разработчика.

Требования к тестированию:

  1. Test APK имеет тот же код версии, что и загруженный на консоль разработчика.
  2. Test APK подписан тем же сертификатом (ами), что и сертификат, загруженный на dev.console.
  3. Тестовый аккаунт (не разработчик) - это основной аккаунт на устройстве. (Основной аккаунт может быть не нужен - согласно комментарию @MinosL )
  4. Тестовый аккаунт включен в качестве тестера и привязан к действительному способу оплаты . ( @Kyone )

PS: отладка с использованием сертификата выпуска : https://stackoverflow.com/a/15754187/1321401 ( Thnx @dipp для ссылки)

PPS: хотел сделать этот список уже давно.

Thnx @zlgdev , @Kyone , @MinosL обновлений

Лютен
источник
5
Не забудьте убедиться, что учетная запись, которую вы используете для тестирования IAB, включена в качестве тестера с использованием «opt-in URL», сгенерированного после загрузки сборки; И что это связано с действительным методом оплаты .
Kyone
3
Разве не должно быть проще просто проверить IAP? Или чтобы проверить вещи в целом ..
Хуан
1
также стоит отметить; тестовый аккаунт не должен быть связан с аккаунтом разработчика (не должен иметь доступа к загрузке APK)
guness
2
также стоит отметить; Если включен «Сертификат подписи приложения», то мы не можем использовать наш локальный APK для тестирования с реальными покупками, так как мы не можем подписать сертификат подписи. (у меня ушло 3 часа, чтобы выяснить это)
стрельба
1
Я успешно тестировал с 1) подписанным отладочным приложением , которое 2) не является основной учетной записью на устройстве , поэтому процесс тестирования Google IAB, кажется, не такой строгий, как отмечалось выше.
MinosL
194

Ааа нашел решение после попытки в течение нескольких часов.

  1. Google занимает некоторое время, чтобы обрабатывать приложения и обновлять их на своих серверах, для меня это занимает около половины дня. Поэтому после сохранения apk в виде черновика в Google Play необходимо подождать несколько часов, прежде чем продукты в приложении будут нормально реагировать и позволять совершать регулярные покупки.
  2. Экспорт и подпись APK. Неподписанный APK, пытающийся сделать покупки, получит ошибку.
привратник
источник
71
Вау, это серьезно? Просто столкнулся с той же проблемой. Сделал все, что Google попросил меня сделать, чтобы проверить биллинг в приложении, но все равно получил то же уклончивое сообщение об ошибке. Я думаю, мне придется подождать и посмотреть. Но действительно ли Google ожидает, что мы, разработчики, будем ждать часы каждый раз, когда нам нужно будет обновить наше приложение для реализации биллинга в приложении? Это кажется мне совершенно неуместным, если не сказать больше.
Саймон
6
Можно ли выполнить тестирование, когда вы подключены к Android Studio / работаете, когда подключены к отладчику? Или вам нужно установить релиз apk через USB?
Альфи Хансен
3
Есть ли более простой способ проверить процесс покупки, кроме как, Инструменты Android> Экспортировать подписанный проект ... и т. Д., А затем вручную скопировать APK на устройство, Тестировать .... повторить? Я должен что-то упустить?
wired00
4
Серьезно, я не могу использовать приложение с отладочным сертификатом и проверить биллинг в приложении?
TacB0sS
8
Обратите внимание, что вы МОЖЕТЕ использовать отладочные сборки прямо из вашей IDE во время работы. Вам просто нужно изменить хранилище ключей отладки на то, которое соответствует вашему хранилищу релизов. См. Этот пост для получения дополнительной информации о том, как: stackoverflow.com/questions/10886814/…
cottonBallPaws
137

То же самое произойдет, если ваша опубликованная версия не совпадает с версией, которую вы тестируете на своем телефоне.

Например, загруженная версия есть android:versionCode="1", а версия, которую вы тестируете на своем телефоне,android:versionCode="2"

sandalone
источник
3
Можете ли вы сказать мне, что, если загруженная версия android:versionCode="1"и телефон в android:versionCode="2"порядке, или я должен изменить мой apk google play?
Youddh
1
Вам нужно уменьшить локальную версию до «1», чтобы она соответствовала текущей активной версии, как минимум, временно для тестирования.
Romain
2
Похоже, есть 2 распространенных исправления этой ошибки в зависимости от вашей ситуации. В моем случае это был этот.
Мэтт
Спасибо, это была проблема. Отлаживал нормально с выпуском подписанного apk на моем подключенном устройстве. Затем изменил код версии, и он начал получать ошибку 1005. гмм!
Анна Биллстрем
@ Анна знает, что -1005 также USER_CANCELLED, если вы используете iabHelper
JacksOnF1re
47

Вы должны подписать свой APK с вашим действующим сертификатом. Затем установите это на своем тестовом устройстве. Затем вы можете проверить InAppBilling. Если вы тестируете свое приложение путем прямого запуска через eclipse на устройство (в режиме отладки), вы получите эту ошибку.

Если вы используете android.test.purchasedSKU, он будет работать полностью, но в окончательном ответе у вас не будет developerPayload.

Если вы используете свой собственный черновик в элементе приложения, вы можете протестировать его полностью, но с вас будет взиматься плата, поэтому впоследствии вам придется возвращать его самостоятельно.

Вы не можете покупать товары с той же учетной записью Gmail, которую используете для консоли разработки Google Play.

Чираг Патель
источник
1
+1 Запуск из отладчика использует отладочный сертификат. После экспорта приложения и создания нового открытого ключа (и установки его в консоли разработчика) просто отправьте апк по электронной почте и установите его из папки входящих сообщений gmail.
cdavidyoung
Если я хочу попробовать «android.test.purchased», то собираюсь ли я изменить SKU как в своем коде, так и в консоли разработчика?
Роколог
26

В консоли разработчика:

Settings-> Account details-> License Testing-> Аккаунты Gmail с тестовым доступом

и введите здесь свои учетные записи

Пабло Чегарра
источник
Работает как шарм.
Иордания
17

Если вы находитесь здесь с 2018 года, вам нужно скачать APK прямо из Play Store и установить «производный» APK. Возможно, это связано с тем, что в Google Play Store есть функция «Подписание приложения в Google Play».

Лоу Хименес
источник
1
Какой APK? Я использую AIDL, мне все еще нужно это сделать?
Чжень Лю
@ZhenLiu Я думаю, не нужно
Закон Гименеса
Кроме того, приложение не может быть установлено на устройстве другим способом (например, Android Studio). Установка / обновление из Play Store будет работать, но IAP не будет - вы получите ошибку OP.
JDune
Как мы отлаживаем это?
Оливер Диксон
3

Это произойдет, если вы используете другую версию apk, чем та, что в Google Play.

Amálka
источник
3

Позвольте мне просто добавить, что случилось со мной, может помочь кому-то.

Это было главным образом из-за подписания.

Поскольку я добавил детали подписи в структуру проекта, я думал, что каждый раз, когда я запускаю, устанавливается ожидаемый подписанный apk. Но тип сборки «отладка» был выбран.

Ниже исправление решило проблему для меня.

  • Сгенерированный подписанный apk типа сборки 'release'.
  • Вручную установлен апк.
Шри Харша С
источник
2

В моем случае я видел одно и то же сообщение из-за разных подписей установленного apk и загруженного в market apk.

Горгона
источник
2

Вопреки многочисленным ответам и комментариям на SO и других сайтах, вам НЕ нужно выполнять предварительные тесты с альфа / бета-версией вашего продукта, которая была загружена из Google Play на ваше тестовое устройство (процесс публикации альфа / бета часто истощается пол дня). Также вам не нужно загружать и повторно загружать подписанный APK-релиз из вашей студии разработчиков на тестовое устройство.

Вы можете отладить предварительную версию Google Play в сервисах биллинга приложений, используя приложение отладки, загруженное из вашей студии разработчиков непосредственно на тестовое устройство через ADB. Если вы столкнулись с ошибками, которые мешают этому, скорее всего, вы сделали что-то не так в своем коде. Обратите особое внимание на CASE ваших SKU (идентификаторов продуктов) и их формат (например, если вы загружаете свой APK как com.mydomain.my_product_id, убедитесь, что вы пытаетесь приобрести его таким образом, предоставляя тот же регистр и домен) , Кроме того, обратите особое внимание на ваш itemType - это должно быть «inapp» или «subs» для управляемых / неуправляемых покупок приложений или подписок, соответственно.

В соответствии с предложением Chirag Patel, при условии, что вы правильно установили свой код оплаты, проведите все тестирование с помощью android.test.purchased Sku (идентификатор продукта) во время предварительных тестов. Проверяйте этот идентификатор на протяжении всех операций выставления счетов, чтобы пройти через проверку подписи, токена и полезной нагрузки, поскольку эти данные не предоставляются тестовой системой Google. Кроме того, присвойте одному из своих тестовых продуктов этот идентификатор, чтобы проверить его покупку, разблокировку / загрузку и презентацию на протяжении всей схемы. Чтобы ОЧИСТИТЬ покупку, просто потребьте ее, передавая тот же Sku И строку токена, отформатированную таким образом - никакие другие поля не имеют значения:

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

После завершения этого этапа тестирования перейдите к полуживому тестированию с вашим альфа / бета-продуктом. Создайте группу Google (по сути список рассылки), добавьте в нее электронные письма своих тестовых пользователей и добавьте / пригласите эту группу для тестирования вашего устройства на этом этапе (выполняется в разделе «APK» в списке разработчиков Google вашего приложения). Покупки будут смоделированы, но фактически не оплачиваются - однако, чтобы очистить и повторно протестировать покупки, Google указывает, что вы должны вернуть их из своего кошелька Google. Это единственный этап тестирования, который требует трудоемкого процесса использования альфа / бета-загрузок и тестирования пользователей.

Epsilon3
источник
1

Если вы хотите отладить IAB, вам нужно сделать следующее:

  1. Отправьте в Google Play версию своего приложения с разрешением IAB в манифесте:

  2. Добавьте продукт в свое приложение в Google Play: Администрирование биллинга в приложении

  3. Установите пользовательское отладочное хранилище ключей со знаком: Настройте Eclipse для использования подписанного хранилища ключей

Pablo
источник
1

Была такая же проблема, и она не была решена, прежде чем я прочитал пост от DZDomi. Неожиданно оказалось, что в консоли разработчика Google есть параметр, который необходимо включить. В разделе «Покупки внутри приложения» есть строка для вашего продукта, а справа - статус для него. Это должно быть АКТИВНО!

Серен
источник
0

Моя проблема заключалась в том, что я пытался проверить это с помощью debug.keystore, я имею в виду запуск его через eclipse. Я экспортировал его с хранилищем ключей, с которым я опубликовал в альфа-режиме (его необходимо опубликовать, прежде чем вы сможете его проверить). мой телефон и чем я мог проверить это нормально.

Гал Ром
источник
0

Проблема также возникает, когда вы добавили покупку в приложении после загрузки APK, но не опубликовали приложение в игровом магазине (альфа, бета и производство).

Что в основном означает, что вы должны добавить покупку в приложении ПОСЛЕ того, как вы опубликовали apk в магазине Play (альфа, бета и продакшн). В противном случае вы не сможете приобрести или запросить покупку в приложении.

DZDomi
источник
0

Другая причина, не упомянутая здесь, заключается в том, что вам нужно тестировать на реальном устройстве. С эмулятором становится действительно хорошо, это легко сделать ошибку.

JDenais
источник
0

Недавно Google внедрил изменения в своих системах, и, поскольку вы загрузили хотя бы один APK-файл на свою консоль, вы можете проверить свои внутриигровые запросы в приложении с любым кодом / номером версии.

Перекрестная ссылка ССЫЛКА

Настройте, gradleчтобы подписать вашу отладочную сборку для отладки.

android {
    ...
    defaultConfig { ... }
    signingConfigs {
        release {
            storeFile file("my-release-key.jks")
            storePassword "password"
            keyAlias "my-alias"
            keyPassword "password"
        }
    }
    buildTypes {
        debug {
            signingConfig signingConfigs.release
            ...
        }
    }
}
Anoop M
источник
0

РЕШЕНИЕ

Просто подождите некоторое время после загрузки приложения в игровой магазин, потому что Google занимает некоторое время, чтобы обновить версии приложения. Это будет работать!

Али Акрам
источник
0

У меня такая же проблема в moto c2 +, в моем случае это проблема устройства, как только я перезагружаюсь, тогда он будет работать идеально ...

Сагар Пития
источник