Ошибка IAP Google: требуется аутентификация

В моем приложении, когда я пытаюсь приобрести подписку, я получаю сообщение об ошибке:

Authentication is required. You need to sign into your Google Account 

Этот диалог не отображается, когда я делаю обычную покупку (в приложении, а не в подписке).

Существует некоторая полезная информация:

  1. Apk публикуется на производстве. Подписки и приложения в приложении работали в течение длительного периода времени.

  2. В альфа-бета-тестировании нет апк

  3. Учетная запись верна. Я тестировал с другим приложением, которое предлагает подписки.

  4. Биллинг в приложении реализован с помощью https://code.google.com/p/marketbilling/ с некоторыми исправлениями, которые были сделаны для предотвращения сбоя / неподдерживаемой функции [реализация не была изменена в течение длительного периода времени, поэтому я не делаю Не думайте, что это так)

  5. Идентификаторы продуктов подписки также верны.

  6. Я пробовал несколько учетных записей google на нескольких устройствах differents. Результат тот же – этот диалог.

Я вижу ошибку в Google IabV3Activity.class, но не могу понять, что является основной причиной этого:

  BasicNetwork.performRequest: Unexpected response code 403 for https://android.clients.google.com/fdfe/preparePurchase 

Есть идеи?

Обновлено: сегодня подписки начали работать. Все еще неясно, в чем причина. Мы обновили описание журнала в Google Play в выходные дни. Это была причина? – Нет идей …

    У меня была симулятивная проблема. Все приложения в приложении работают, кроме подписки.

    Требуется аутентификация. Вам нужно войти в свою учетную запись Google

    Был на экране, и в моих журналах были представлены такие записи:

    Код ответа 403 для https://android.clients.google.com/fdfe/preparePurchase

    а также

    RESPONSE_CODE = 2

    Что означает, что «Сетевое подключение отключено» в соответствии с ссылкой на биллинг Android .

    Вся эта информация была бесполезной. Причина заключалась в том, что подписка не была активирована в консоли разработчика.

    Просто прошел этот вопрос самостоятельно, и для нас это был неправильный идентификатор IAP. У нас в основном есть две игры в Google Play, одна из которых закончится в прямом эфире, «GameName» и одна, которая будет только для тестирования «GameName Test». Идентификатор пакета также отличается, com.sixminute.gamename и com.sixminute.gamename.test

    Чтобы воспроизвести, как все работает на iOS (что IAP не могут иметь одинаковое имя для разных приложений в вашей учетной записи), мы также используем разные SKU для каждого приложения, com.sixminute.gamename.coinpack1 и com.sixminute.gamename.test.coinpack1. Во время выполнения мы получаем доступные элементы для продукта, но для нашей тестовой игры мы получаем неправильные SKU.

    Итак, мы хотели купить «com.sixminute.gamename.test.coinpack1», но мы ошибочно запрашиваем «com.sixminute.gamename.coinpack1», которого не было в пакете «GameName Test».

    Таким образом, для нас, когда говорилось «Требуется аутентификация», это абсолютно неверный обмен сообщениями, и это выполняется с помощью кода ответа, 403 означает «Запрещено», но иногда это может действительно означать 404 «Ресурс не найден» и Я думаю, что это правильно в этом случае.

    Поэтому для вас, если вы проверили все остальное, сделайте 100% уверенным, что вы передаете правильный SKU при попытке покупки, и, если вы уверены, что вы, возможно, сделаете запрос http://developer.android.com /training/in-app-billing/list-iab-products.html#QueryПодробнее, чтобы убедиться, что SKU, который вы пытаетесь приобрести, на 100% активен, и все остальное.

    Все еще была та же проблема, я получил эти ошибки:

      E/Parcel: Class not found when unmarshalling: com.google.android.finsky.billing.lightpurchase.PurchaseParams java.lang.ClassNotFoundException: com.google.android.finsky.billing.lightpurchase.PurchaseParams at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:204) at java.lang.Class.forName(Class.java:169) at android.os.Parcel.readParcelableCreator(Parcel.java:2091) at android.os.Parcel.readParcelable(Parcel.java:2055) at android.os.Parcel.readValue(Parcel.java:1971) at android.os.Parcel.readMapInternal(Parcel.java:2255) at android.os.Bundle.unparcel(Bundle.java:223) at android.os.Bundle.getString(Bundle.java:1082) at android.content.Intent.getStringExtra(Intent.java:4961) at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3761) at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:4977) at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3391) at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:254) at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:3283) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:258) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2125) at android.os.Binder.execTransact(Binder.java:388) at dalvik.system.NativeStart.run(Native Method) Caused by: java.lang.NoClassDefFoundError: com/google/android/finsky/billing/lightpurchase/PurchaseParams at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:204) at java.lang.Class.forName(Class.java:169) at android.os.Parcel.readParcelableCreator(Parcel.java:2091) at android.os.Parcel.readParcelable(Parcel.java:2055) at android.os.Parcel.readValue(Parcel.java:1971) at android.os.Parcel.readMapInternal(Parcel.java:2255) at android.os.Bundle.unparcel(Bundle.java:223) at android.os.Bundle.getString(Bundle.java:1082) at android.content.Intent.getStringExtra(Intent.java:4961) at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3761) at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:4977) at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3391) at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:254) at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:3283) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:258) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2125) at android.os.Binder.execTransact(Binder.java:388) at dalvik.system.NativeStart.run(Native Method) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.finsky.billing.lightpurchase.PurchaseParams" on path: . at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64) at java.lang.ClassLoader.loadClass(ClassLoader.java:501) at java.lang.ClassLoader.loadClass(ClassLoader.java:461) at java.lang.Class.classForName(Native Method) at java.lang.Class.forName(Class.java:204) at java.lang.Class.forName(Class.java:169) at android.os.Parcel.readParcelableCreator(Parcel.java:2091) at android.os.Parcel.readParcelable(Parcel.java:2055) at android.os.Parcel.readValue(Parcel.java:1971) at android.os.Parcel.readMapInternal(Parcel.java:2255) at android.os.Bundle.unparcel(Bundle.java:223) at android.os.Bundle.getString(Bundle.java:1082) at android.content.Intent.getStringExtra(Intent.java:4961) at com.android.server.am.ActivityStack.startActivityLocked(ActivityStack.java:3761) at com.android.server.am.ActivityStack.startActivityMayWait(ActivityStack.java:4977) at com.android.server.am.ActivityManagerService.startActivityInPackage(ActivityManagerService.java:3391) at com.android.server.am.PendingIntentRecord.sendInner(PendingIntentRecord.java:254) at com.android.server.am.ActivityManagerService.startActivityIntentSender(ActivityManagerService.java:3283) at android.app.ActivityManagerNative.onTransact(ActivityManagerNative.java:258) at com.android.server.am.ActivityManagerService.onTransact(ActivityManagerService.java:2125) at android.os.Binder.execTransact(Binder.java:388) at dalvik.system.NativeStart.run(Native Method) 

    Я тоже получил это:

     E/Volley: [40089] ca: Unexpected response code 403 for https://android.clients.google.com/fdfe/ees/preparePurchase 

    Это было немного странно, потому что некоторые другие тесты-покупки прошли абсолютно правильно. После некоторых поисков я узнал, что в этой строке sku было пустое место:

     public static final String SKU_ALL = " com.xxx.xxx.all "; -> ERROR public static final String SKU_ALL = " com.xxx.xxx.all"; -> WORKS PERFECT! 

    Надеюсь, это поможет кому-то!