У меня есть приложение для Android, предлагающее автоматическое продление подписок с помощью биллинга в приложении, используя https://developer.android.com/google/play/billing/billing_library.html.
. Я использую слегка измененный BillingManager.java из https://github.com/googlesamples/android-play-billing/, чтобы помочь с покупкой.управление.
Ранее, до выпуска (около 4-8 недель назад), когда бы ни заканчивалась пробная версия подписки и автоматически обновлялась подписка, я продолжал получать соответствующий объект Покупка в списках покупок при запросе покупок.:
PurchasesResult subscriptionResult = mBillingClient.queryPurchases(SkuType.SUBS);
List<Purchase> list = purchasesResult.getPurchasesList();
(см. QueryPurchases здесь )
К значению OrderID добавлено увеличенное значение счетчика в соответствии с числом продлений, произошедших с момента первоначального заказа (какописанные в разделе Номера для заказов на подписку здесь ).
В последние несколько дней создается впечатление, что всякий раз, когда подписка клиента преобразуется в оплаченную пробную или обновляется впоследствии, queryPurchases возвращает ноль Покупки после этого.Я ожидаю получить один объект «Покупка» для пользователей с активной подпиской (и некоторое время назад получал это во время тестирования - у меня есть данные в моей БД, чтобы подтвердить это.)
В результате приложение больше не работаетобращается к нашему внутреннему серверу, чтобы обновить срок действия подписки, и пользователям отказывают в доступе к функциям, за которые они были начислены - не очень.
Я могу просмотреть заказ клиента (с увеличенным OrderID) в консоли Google Play и подпискеотображается как действительный (и не отменяется), а токен покупки доступен и может быть проверен.
У кого-нибудь есть идеи, почему queryPurchases перестал бы возвращать действительную покупку после первого продления?(Покупка возвращается как ожидается до даты продления.)
Я использую текущую клиентскую библиотеку для выставления счетов следующим образом:
implementation 'com.android.billingclient:billing:1.0'
(В качестве обходного пути я могу исправитьэто на заднем плане, периодически перепроверяя все представленные токены покупки, но я бы предпочел сделать это по требованию, вызванному приложением, которое ранее работало нормально.)