В результате покупки в приложении используется неправильная учетная запись после обновления
Типичный сценарий, пользователь имеет две учетные записи, [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. Тонкая проблема заключается в том, что иногда пользователи имеют разные активные учетные записи на разных устройствах, поэтому может быть трудно заметить, что вы фактически загружаете приложение, используя другую учетную запись.