Как обрабатывать отложенные покупки в Google Play - PullRequest
2 голосов
/ 08 октября 2019

Большинство наших покупок продолжают аннулироваться ровно через 3 дня и 30 минут, что, как я полагаю, является результатом ожидаемого состояния покупки. Однако документации о том, как точно обрабатывать ожидающие покупки, так мало. И по какой-то причине, хотя я сам являюсь тестером, я не могу его протестировать, потому что в методах покупки нет опции «Медленная карта». Кроме того, у нас нет внутреннего сервера для резервного копирования.

Это объяснение, которое я нашел из официальной документации:

void handlePurchase(Purchase purchase) {
    if (purchase.getPurchaseState() == PurchaseState.PURCHASED) {
        // Acknowledge purchase and grant the item to the user
    } else if (purchase.getPurchaseState() == PurchaseState.PENDING) {
        // Here you can confirm to the user that they've started the pending
        // purchase, and to complete it, they should follow instructions that
        // are given to them. You can also choose to remind the user in the
        // future to complete the purchase if you detect that it is still
        // pending.
    }
}

Посмотрите объяснение на В ОЖИДАНИИ состояние. Что означает «чтобы совершить покупку, они должны следовать инструкциям, которые им даны»? Каковы эти инструкции точно? Нужно ли перенаправлять пользователя в Google Play или как? Это не определенно о том, что делать, и вызывает у меня беспокойство, потому что покупки отменяются без причины или по этой причине. Как совершить незавершенную покупку? В этом нет ничего, или я не могу его найти, поэтому я оказался здесь.

Надеюсь, вы поможете мне разобраться в этом. Благодаря.

1 Ответ

1 голос
/ 01 ноября 2019

Я согласен, что документация плохая, тем более, что вы хотите точно знать, что происходит, когда вы берете деньги других людей!

Похоже, что транзакция с «медленной картой» на самом деле является «покупкой в ​​ожидании», то, что Google выкатывает в 2019 году. Вот вероятный поток ...

  • В вашем приложении пользователь нажимает «Купить сейчас»
  • Они видят оверлей Google Checkout
  • Они выбирают «Оплатить в магазине Freddina's, Аккра» (местный магазин, в котором зарегистрировансделка с Google в ожидании покупок)
  • Google checkout отображает код для показа Фреддине
  • Пользователь платит Фреддине наличными, а Фреддина обрабатывает платеж с использованием этого кода
  • 10 минут или около тогопозже обновление покупки появится в вашем приложении

Что касается обработки непредвиденно синхронизированных событий обновления, у нас есть приложение с методом handlePurchaseUpdated, которое прослушивает информацию с момента запуска приложения и вносит изменения на основе изменений. на объекте Purchase, который идет с ним. Вот пример потока:

  • Мы ждем обновления покупки, как только приложение запускается
  • Пользователь делает медленную покупку
  • Получаем обновление покупки
  • Переданный Purchase объект находится в состоянии покупки. В ОЖИДАНИИ
  • Мы сообщаем пользователю, что уведомим его о завершении покупки
  • В какой-то момент в будущем (например, в следующемна следующий день после перезапуска приложения) обновление покупки наступает
  • Если состояние покупки теперь ПОКУПАНО, мы завершаем покупку и сообщаем пользователю

Примечание. Наше приложение ReactNative, а ненативная Java, но поток должен быть таким же.

Это сложно реализовать, потому что вам нужно выбрать время, чтобы внести изменения в покупку и отобразить результат покупки в то время, которое имеет смысл, а не обязательно при покупкеобновление приходит через 5 секунд после запуска (или в любое другое странное время). И это еще более усложняется, если во время шагов предоставления гранта или подтверждения возникают ошибки, хр.

Кроме того, возможно, вы не видите опцию «медленная карта», поскольку вы не ее разрешаете

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...