Android – Как проверить, продлена ли подписка?

У меня есть приложение для Android с возобновляемыми ежемесячными подписками. В этом приложении я хочу уведомить пользователя о какой-либо информации, когда его подписка будет продолжена в следующем месяце.

Поскольку я могу видеть обновления в торговом центре (orderId заканчивается, например, … .0, ..1), но при запросе инвентаря мой заказ на покупку имеет то же значение, что и для eq.

{ "orderId": "GPA.XXXX-YYYY-XXXX-ZZZZZ", "packageName": "my.packageName", "productId": "my.sku", "purchaseTime": 1456398623654, "purchaseState": 0, "developerPayload": "mypayload", "purchaseToken": "token", "autoRenewing": true } 

Что беспокоит меня больше, так это то, что purchaseTime также не меняется.

Поэтому мой вопрос: если есть какой-либо способ обнаружить в приложении такое обновление?

Редактировать:

Я использую API разработчика Google Play для получения информации о подписке, а затем самостоятельно рассчитываю количество продлений.

Идентификатор заказа для всех orderId возвращается в поле orderId поля INAPP_PURCHASE_DATA (в V3) с каждой повторяющейся транзакцией, добавленной целым числом.

Номера заказов подписки

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

 GPA.1234-5678-9012-34567 (base order number) GPA.1234-5678-9012-34567..0 (first recurrence orderID) GPA.1234-5678-9012-34567..1 (second recurrence orderID) GPA.1234-5678-9012-34567..2 (third recurrence orderID) ... 

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

Поскольку запрос на покупку таким образом не является надежным, имеет смысл называть Google Play Developer Purchases.subscriptions: получить API из бэкэнд, чтобы получить ресурс expiryTimeMillis который вернет expiryTimeMillis действия текущей подписки.

 { "kind": "androidpublisher#subscriptionPurchase", "startTimeMillis": long, "expiryTimeMillis": long, "autoRenewing": boolean, "priceCurrencyCode": string, "priceAmountMicros": long, "countryCode": string, "developerPayload": string, "paymentState": integer, "cancelReason": integer } 

Данные о покупке для подписки возвращаются только при активной подписке. Если срок действия подписки истекает, вы не получите данные о покупке при запросе инвентаря.

Выдержка из ссылки

Если повторный платеж не удался (например, поскольку кредитная карта клиента стала недействительной), подписка не возобновляется. Метод getPurchases () не возвращает неудачные или истекшие подписки.

Intereting Posts
Проблема с Android linearLayout Видео не отображается в VideoView, но я слышу его звук Как создать EditText принимает Alphabets только в android? Как поместить несколько размеров виджетов в один apk? Совместимость GridLayout – ClassNotFoundException: не найден класс "android.support.v7.widget.GridLayout" Целесообразно ли разрабатывать и публиковать приложение для Android, не тестируя его на реальном устройстве? Обратная совместимость с Android, но по-прежнему используют новейшие функции API Зачем использовать службу для фоновых задач? Управление эмулятором отключено с помощью реального устройства для Android Как программно добавить LinearLayout с цветом фона и весом к другому макету Блокирование Apk от установки непосредственно в обновленные устройства BB10.2.1 Доступ к FAT32 и файлу NTFS USB Pendrive с планшета Android Android FaceBook newMyFriendsRequest возвращает EMPTY Список друзей Разрешение Android.INTERACT_ACROSS_USERS ClassNotFoundException, хотя содержащий JAR является частью сборки