2013-07-29 5 views
3

У меня есть приложение для Android с подписками на приложение. После того, как пользователь приобрел подписку, я запрашиваю «validUntilTimestampMsec» и «initiationTimestampMsec» через наш сервер API Google.Недействительный срок действия после покупки подписки

Возвращаемая временная метка «initiationTimestamp» верна и представляет время, в которое пользователь совершил покупку, но возвращаемая временная метка «validUntilTimestamp» всегда имеет разницу в +12 часов до действительного действительного - до времени, которое мне нужно. Функция i, используемая для извлечения даты, аналогична обеим меткам времени.

Откуда взялось 12 часов и как я могу получить нужное время. Дата истечения срока действия также будет отображаться неверно для пользователя в Google Play.

Пример ежемесячной подписки:

Is:
initiationTimestamp: 1374433559436 (7:05 вечера)
validUntilTimestamp: 1377155159436 (7:05 утра) -> INIT времени + 1 месяц + 12 часов

Нужно:
initiationTimestamp: 1374433559436 (7:05 вечера)
validUntilTimestamp: 1377111959 (7:05 pm) -> время начала + 1 месяц без 12 часов

+0

Где у вас есть достоверность? Кажется, я не могу найти его, который вызывает api, чтобы его повторить. Это сказало, что это очень озадачивает, поскольку Google поддерживает только ежемесячную и годовую. – Warpzit

+0

https://developers.google.com/android-publisher/v1_1/purchases#resource. Как вы можете видеть, google возвращает время истечения срока с эпохи, но с задержкой в ​​12 часов для меня –

+1

Интересно, что это было задано здесь: http://stackoverflow.com/questions/15354249/google-play-store-is-giving -extra-credits-to-user, но был закрыт как вне темы, но он упоминает 6 часов, поэтому вы можете попробовать спросить, получил ли он ответ за него, но я думаю, что дополнительное время - это льготный период для аннулирования, повторных запросов и т.д. – Slartibartfast

ответ

1

Напишите функцию, которая рассчитывает время действия, которое «правильно». Если ответ Google не соответствует, используйте тот, который вы рассчитали, в противном случае используйте тот, который дал Google.

Также обратите внимание, что Google всегда добавляет дополнительное время, а не другим способом. Поэтому, если ваша функция возвращает «больше, чем», Google учитывает время Google, иначе время вашей функции.

Вот как я решил это в бэкэнде приложения.

+0

Вычисление даты истечения срока действия вручную не является проблемой, но это не решает проблему. По истечении срока действия элемента для бэкэнд он по-прежнему остается в магазине воспроизведения в течение нескольких часов (в моем случае +12 часов).Пользователь не сможет продлить подписку (он получит сообщение: «уже купленный») и, таким образом, использовать соответствующий контент. –

+0

Оплатить подписку, как только вы обнаружите истечение срока действия? :) Мы также построили CRON, который запускается каждые 15 минут и сбрасывает подписку на пользователей, срок действия которых истекает. Таким образом, вы не более 15 минут задерживаете покупку пользователей. – Shrinath

+0

Вы уверены? Я думаю, отмена подписки не означает, что подписка будет недоступна сразу. Отмена означает: подписка будет доступна до истечения обычного времени истечения срока действия, но не будет автоматически продлеваться. –

2

Я не вижу этого в любом месте, но я думаю, что Google поддерживает 6 часов в v1 из примера Шрината и 12 часов в v1_1 (выглядит как из вашего примера), чтобы в основном держать буфер времени для снятия средств со счета клиента (действительно важная транзакция, за которую отвечает Google), а также для аннулирования и повторных запросов. Я не вижу способа обойти это, кроме как показывать предупреждение, что может потребоваться до 12 часов, чтобы увидеть новый материал или что-то в этом роде.

+0

Я недавно изменил версию с v1 на v1_1. Для меня разница была /. Мне просто интересно, нет ли официального заявления об этом поведении. –

+0

То же, что и через 6 часов для вас? Или это было изменено на 12? Да, я не вижу его нигде на любом сайте/форуме google. – Slartibartfast

+0

Я бы подумал, что на самом деле это время ожидания, если вы это сделаете, крупномасштабные компании обычно сохраняют его, когда речь идет о платежных обязательствах из-за присущего ему характера. Еще одна мысль о том, что, возможно, есть какая-то разница в часовом поясе, где-то, что может вызвать это :) Но я не думаю, что вы получите официальный ответ, пока, к сожалению, не удастся победить. – Slartibartfast

Смежные вопросы