У меня проблема с моим Android-приложением. Я пытаюсь выполнить ежемесячную подписку. Я создал IAP, приложение находится в бета-версии, и я регистрируюсь как тестер.
Все работает как ожидается при покупке подписки. Я могу купить его в качестве тестера, что означает, что подписка фактически не взимается, и она также обновляется каждый день.
Но вот здесь начинается моя проблема. Я всегда получаю оригинальную квитанцию с оригинальными purchaseTime
и purchaseToken
. Всякий раз, когда приложение запускается, я звоню queryInventoryAsync
, и я ожидаю получить последнюю квитанцию о продлении. Но я всегда получаю ОРИГИНАЛЬНУЮ квитанцию.
Я не ошибаюсь? Разве я не должен получать обновленную квитанцию с новым orderID
? (как говорят google docs, я должен получить orderID
как GPA.blabla..0|1|2
. Я знаю, что есть некоторые механизмы кэширования, но я ждал три дня, и я все еще получаю первоначальный заказ, в то время как я должен получать последние один.
Я всегда использую кордову с пешеходным переходом, и я использую следующий плагин для покупок: https://github.com/j3k0/cordova-plugin-purchase. Я не знаю, имеет ли значение это, не должно, поскольку он использует тот же класс IABHelper, который используется каждым другим плагином, но, может быть, это что-то не так с их кодом?
Я записал точный ответ, полученный от вызова, на mService.getPurchases(3, mContext.getPackageName(), itemType, continueToken);
и содержит неправильные данные (оригинальная квитанция). Зачем?: (
У кого-то еще была аналогичная проблема? Это из-за проверки подписки? Будет ли это работать при покупке? Я уже начал тестировать реальные деньги, но потребуется неделя, пока подписка не возобновится.
Большое вам спасибо.
Изменить. Очистка кеша из приложения Google Play Store не является вариантом. Я не могу попросить моих пользователей сделать это. Кроме того, я проверил это, и он не работает!
Изменить 2 Производственная подписка (реальные деньги, без тестирования) тоже не работает!. Все еще получаю оригинальную квитанцию!
Изменить 3 Я еще не решил эту проблему. Каким будет правильный способ обнаружения обновлений? Должен ли я запускать cronjob на бэкэнд и запрашивать каждую подписку на Google App Status API?
Изменить 4 Спасибо за ответы. Я уже использую API статуса покупки на сервере, чтобы определить, была ли продлена подписка или нет. Но это отвратительно, потому что, если я получу 100 000 подписчиков? script, который проходит через все из них и запрашивает API Google, займет очень много времени... и script должен работать ежедневно!
Но давайте разобраться.
Означает ли это, что официальная документация устарела?.
Восстановлены ли стили стилей GPA.blabla..0 GPA.blabla..1
?
Изменить обновление 5 декабря 2016 года: Я работаю под подпиской на производстве уже пару месяцев, и я все еще НЕ получаю продления с помощью..0,..1. Я сделал настройку cronjob, которая работает ежедневно. Он проходит через мои активные подписки и запрашивает их у Google Purchase API. Если API возвращает другую дату истечения срока действия, чем тот, который был сохранен в моей базе данных, это означает, что подписка возобновилась.
Изменить обновление 6 июля 2017 года Я все еще полагаюсь на свой ежедневный script, который анализирует все подписки и обновляет их статус, запрашивая Google с помощью API закупок https://developers.google.com/android-publisher/api-ref/purchases/subscriptions. До сих пор он отлично работал.
Быстрый совет: заказывайте подписки партиями! Я сделал несколько тестов, и я смог собрать до 1000 подписчиков в одном запросе. Предел определяется максимальным размером ответа API.