Какой стандартный подход к проверке Android Play Store при покупке приложения был отменен? - PullRequest
0 голосов
/ 15 октября 2018

Мое приложение использует встроенную покупку для включения «про» версии через библиотеку Android BillingClient.Это позволяет безболезненно получать информацию о ценах, принимать оплату и отмечать обновление как приобретенное.

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

В настоящее время мой чек выглядит следующим образом:

Purchase.PurchasesResult purchases = billingClient.queryPurchases(BillingClient.SkuType.INAPP);
        if (purchases != null)
        {
            List<Purchase> bought = purchases.getPurchasesList();
            if ( bought != null && 0 < bought.size() )
            {
                for (int i=0;i<bought.size(); i++)
                {
                    if ( bought.get(i).getSku().equals(PRO_VERSION) )
                    {
                        purchased = true;
                    }
                }
            }
        }

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

В настоящее время у меня нет какой-либо собственной серверной инфраструктуры, и я бы предпочелчтобы так было.

Ответы [ 2 ]

0 голосов
/ 21 ноября 2018

Если элемент был возвращен, он не должен появляться в списке, возвращаемом getPurchasesList().Поэтому вы можете сохранить статус покупки в общих настройках:

Purchase.PurchasesResult purchases = billingClient.queryPurchases(BillingClient.SkuType.INAPP);
    if (purchases != null)
    {
        preferences.setPro(false);
        List<Purchase> bought = purchases.getPurchasesList();
        if ( bought != null && 0 < bought.size() )
        {
            for (int i=0;i<bought.size(); i++)
            {
                if ( bought.get(i).getSku().equals(PRO_VERSION) )
                {
                    preferences.setPro(true);
                    purchased = true;
                }
            }
        }
    }
0 голосов
/ 21 ноября 2018

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

Источник: https://github.com/googlesamples/android-play-billing/issues/113

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