В результате покупки в приложении используется неправильная учетная запись после обновления

Типичный сценарий, пользователь имеет две учетные записи, [email protected] и [email protected], как на своем Android-устройстве. Пользователь покупает мое премиальное обновление в версии 1.0 с помощью учетной записи [email protected], затем они обновляются до версии 1.1, а код (код покупки в приложении) теперь считает, что они используют аккаунт [email protected], поэтому он считает, что пользователь не купил премиальное обновление. Я знаю, что он использует неправильную учетную запись, потому что они отправляют мне свой заказ электронной почты, а затем говорят, что неправильный адрес электронной почты указан в диалоговом окне покупки, если они нажимают на сумму $. Единственное исправление на этом этапе - удалить и переустановить, используя веб-сайт рабочего стола Play Store и правильную учетную запись.

Я использую IABHelper из образца с некоторыми исправлениями из StackOverflow. Насколько я знаю, у меня нет возможности выбрать учетную запись, которую они используют для этого.

Любые идеи о том, что может происходить? это случилось с кем-то еще?

Код превысил ограничение на длину в StackOverflow, поэтому я добавил его здесь http://pastebin.com/hLquZ6SP

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

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

Ответы

Ответ 1

Кажется, это ошибка в Play Store приложение. См. Этот справочный форум Google post для обхода пользователя.

В основном, приложение Play Store иногда связывает неправильную учетную запись Google с биллингами в приложении. Но, похоже, он работает правильно, когда установка приложения "выталкивается" с веб-сайта Play Store (с компьютера).

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

Ответ 2

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

В коде невозможно управлять, какая учетная запись используется для проверки покупки. Когда это произойдет, я попрошу пользователей выбрать учетную запись, которую они приобрели в приложении в приложении Google Play, а затем перезапустить устройство, запустить приложение и выполнить операцию "восстановить покупку". В большинстве случаев это помогает. Если это не так, им нужно использовать Google Play web ui, в значительной степени, как вы описали его.

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

Ответ 3

У вас нет способа указать в вашем коде, какая учетная запись пользователя будет использоваться для покупки, потому что OS/Google Play решает, что:

  • если вы загрузите приложение из Play Маркета с помощью учетной записи xyz, то та же самая учетная запись будет выставлена ​​для покупок, связанных с вашим приложением.
  • если вы снова установите приложение (переустановить или другое устройство), используя другую учетную запись abc, тогда это будет рассматриваться как владелец этого приложения, поэтому покупки из xyz не отображаются в учетной записи abc
  • если вы отключите apk, тогда учетная запись, использующая приложение, станет первой учетной записью Google, созданной на устройстве.

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