Android Billing V3 Subscriptions Issue – подписка застряла в состоянии, которое нельзя отменить

ОБНОВИТЬ

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

сообщение об ошибке

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

У меня есть в общей сложности три элемента подписки. Я могу легко подписаться и отменить другие два без проблем, как на тестовых, так и на обычных счетах. Однако, этот конкретный, который старше года, я не могу отменить. В результате возникают все ошибки в запросе IabHelper.

Как я могу отменить его? К сожалению, из-за некоторых таинственных причин Google также не позволяет удалять элементы подписки.


Моя единственная покупка работает нормально, но не подписки. За последние несколько дней я застрял в этой проблеме, когда я не могу получить информацию о подписке для своего приложения, и она не работает:

if (result.isFailure()) { Log.v(Constants.TAG, "Failed to query inventory: " + result); return; } 

Я прочитал все связанные с приложением приложения, связанные с биллингом, и попробовал все, что можно было сделать, на нескольких устройствах, версиях Alpha и Production, в нескольких версиях моего приложения, но не смог избавиться от этой ошибки:

 Failed to query inventory: IabResult: Error refreshing inventory (querying owned subscriptions). (response: -1003:Purchase signature verification failed) 

Я понимаю проблему с пустой подписью, но теперь, когда приложение опубликовано на производстве, я все равно получаю ту же ошибку в своих журналах, когда устанавливаю ее на своих устройствах. Таким образом, у меня теперь есть производственное приложение в Play Маркете, и подписка не работает. Это был последний отчаянный шаг, который я получил в надежде получить подпись. Очень жаль, что нет реального простого способа отладки кода in-app.

Код не работает в Security.java (который, кажется, является обычным местом, где он терпит неудачу для многих) в verifyPurchases в:

 if (TextUtils.isEmpty(signedData) || TextUtils.isEmpty(base64PublicKey) || TextUtils.isEmpty(signature)) { Log.e(TAG, "Purchase verification failed: missing data."); return false; } 

К сожалению, онлайн-помощь для подписки очень мало. Я пробовал другие коды, которые люди предлагали, но безрезультатно. Нет учебника или примера, который посвящен конкретно подпискам. Все ответы, которые я мог найти, касались только отдельных покупок.

Мой ключ base64 в порядке. Нет проблем с новой инициализацией IabHelper. Но когда он вводит запрос подписок, он терпит неудачу. Вот журнал:

 Querying owned items, item type: subs 10-25 13:52:16.957 7850-7915/com.lifelog24.main D/IabHelper: Package name: com.lifelog24.main 10-25 13:52:16.957 7850-7915/com.lifelog24.main D/IabHelper: Calling getPurchases with continuation token: null 10-25 13:52:16.962 7850-7915/com.lifelog24.main D/IabHelper: Owned items response: 0 10-25 13:52:16.965 7850-7915/com.lifelog24.main E/IABUtil/Security: Purchase verification failed: missing data. 10-25 13:52:16.966 7850-7915/com.lifelog24.main W/IabHelper: In-app billing warning: Purchase signature verification **FAILED**. Not adding item. 10-25 13:52:16.966 7850-7915/com.lifelog24.main D/IabHelper: Purchase data: 10-25 13:52:16.966 7850-7915/com.lifelog24.main D/IabHelper: Signature: 10-25 13:52:16.984 7850-7915/com.lifelog24.main D/IabHelper: Sku is owned: bus04 10-25 13:52:16.985 7850-7915/com.lifelog24.main D/IabHelper: Continuation token: null 10-25 13:52:16.985 7850-7915/com.lifelog24.main D/IabHelper: Ending async operation: refresh inventory 10-25 13:52:16.993 7850-7850/com.lifelog24.main D/LL24: Query inventory finished. 10-25 13:52:16.993 7850-7850/com.lifelog24.main V/LL24: Failed to query inventory: IabResult: Error refreshing inventory (querying owned subscriptions). (response: -1003:Purchase signature verification failed) 

На данный момент у меня нет вариантов, и я высоко оценил бы любую помощь, которая могла бы решить эту проблему.

ОБНОВЛЕНИЕ 23 мая 2016 г.

Я открыл билет с Google. Имели недели назад и вперед по электронной почте и перескакивали с одного представителя на другой, но эта проблема не могла быть решена. Одна из моих учетных записей застряла в состоянии, которое нельзя удалить из подписки. Последний представитель признал это, и в круглых словах упоминалось, что биллинг Google In-App – сложная система, и такие проблемы трудно решить. Я попытаюсь связаться с ними позже, через год или два, я думаю. Мое развитие серьезно повлияло на эту проблему, поскольку я не получаю правильные сообщения JSON от их конца, чтобы выполнить мое тестирование и отладку.

Solutions Collecting From Web of "Android Billing V3 Subscriptions Issue – подписка застряла в состоянии, которое нельзя отменить"

Я нашел этот ответ здесь. В биллинге App не работает после обновления – Google Store

По его словам, новый код verifyPurchase () прослушивается. Возможно, использование старого кода, который они используют, поможет вам.

 public static boolean verifyPurchase(String base64PublicKey, String signedData, String signature) { if (TextUtils.isEmpty(signedData) || TextUtils.isEmpty(base64PublicKey) || TextUtils.isEmpty(signature)) { Log.e(TAG, "Purchase verification failed: missing data."); return false; } PublicKey key = Security.generatePublicKey(base64PublicKey); return Security.verify(key, signedData, signature);} 

Отвечая на мой собственный вопрос, я выяснил, что что-то нарушено в конце Google для моей основной учетной записи. Я подписался на свою подписку в качестве тестировщика более года назад, и почему-то эта подписка застряла в состоянии, которое я не могу отписаться от него. Это вызывает все проблемы. Вход в систему из любой другой учетной записи работает очень хорошо, и мой код ведет себя точно так же, как я хочу, чтобы он себя вел.

Единственным решением в этом случае является удаление приложения и установка его из другой учетной записи. И ждите, пока Google не исправит свою сломанную функцию подписки на приложение.