Проверить срок действия подписки с помощью плагина Flutters для покупки в приложении?

Я пытаюсь реализовать покупки в приложении с помощью официальной покупки Flutter в приложении плагин. У меня все работает, за исключением того, что я не могу понять, как определить, активна ли подписка пользователей или истек срок ее действия. Даже после того, как я отменил свою тестовую подписку, значения, которые я получаю после подключения и выполнения queryPastPurchases(), такие же, как при активной подписке:

productId: test_subscription_1   
transactiondate: 1565682346568   
status: null

verificationData
    source: IAPSource.GooglePlay   
    localVerificationData: {
        "orderId":"GPA.1234-1234-1234-12345",
        "packageName":"com.example.myapp",
        "productId":"test_subscription_1",
        "purchaseTime":1565682346568,
        "purchaseState":0,
        "purchaseToken":"<long string>",
        "autoRenewing":false
    }   
    serverVerificationData: "<long string>"

Должен ли я просто жестко закодировать период подписки и сравнить текущее время с purchaseTime + периодом подписки? Будет ли это работать при автоматическом продлении? Что, если пользователь изменит дату на своем телефоне на год назад? Кажется, должно быть какое-то значение, которое должно либо давать мне время истечения срока, либо, по крайней мере, логическое значение true / false, чтобы указать, действительна ли подписка?


person Magnus W    schedule 13.08.2019    source источник


Ответы (2)


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

Короткий ответ на ваш вопрос: отправьте эту информацию о покупке на свой сервер и управлять статусом подписки там. В качестве альтернативы вы можете изучить управляемое решение, например purchases_flutter: https://pub.dev/packages/purchases_flutter/

person enc_life    schedule 13.08.2019
comment
Несомненно, вариант использования подписки - ›проверка, есть ли у пользователя активная подписка, должен быть одним из основных вариантов использования плагина IAP? Не имеет смысла, что плагин будет обрабатывать только покупки, но не использовать их на самом деле - тогда в чем смысл? Это как машина с замком зажигания, но без проводов. - person Magnus W; 13.08.2019
comment
Вся инфраструктура IAP была разработана задолго до того, как магазины приложений стали поддерживать подписки. Так что в сочетании с проблемами безопасности клиентского кода некоторые вещи кажутся простыми нетривиальными. - person enc_life; 15.08.2019
comment
Хорошо, это многое объясняет. Кстати, большое спасибо за ссылку на RevenueCat, я реализую ее вместо плагина IAP. Сначала я был настроен скептически, но оказалось, что с их API намного проще работать, а их бесплатный план кажется очень щедрым (просто надеюсь, что так и останется). - person Magnus W; 15.08.2019
comment
Я столкнулся с той же проблемой, но я нашел один метод, который, как мне кажется, может решить эту проблему. Пожалуйста, поправьте меня, если я ошибаюсь, посмотрите на код при проверке прошлых покупок, которые я использовал (Purchase.billingClientPurchase.isAutoRenewing), чтобы узнать, продлевается ли или нет, а в тестовой подписке - истина, когда она активна, и ложь, когда я отменяю. Так что я думаю, достаточно знать, заряжает ли пользователь или нет. Что думаешь? - person Jorge Vieira; 11.01.2020
comment
Что-то происходит с доходной кошкой, почему-то люди всегда ссылаются на них или отредактировали сообщение, чтобы использовать их - person GILO; 29.07.2020
comment
Что-то там наверху - person GILO; 29.07.2020
comment
@JorgeVieira Я думаю, что можно использовать только в android - person Z. Cajurao; 19.08.2020

Я использовал «Purchases_flutter», и процесс прост. Вы можете проверить статус подписки, вызвав методы, поставляемые с плагином. Ознакомьтесь с этой статьей, которая включает пример https://medium.com/flutter-community/in-app-purchases-with-flutter-a-comprehensive-step-by-step-tutorial-b96065d79a21

person mactrix    schedule 06.07.2020
comment
docs.revenuecat.com/discuss/5ea749abbbfeff0018f166f3 Я столкнулся с этой проблемой. Я могу заплатить тебе - person Chirag Chopra; 09.11.2020
comment
@ChiragChopra, свяжитесь с нами здесь fiverr.com/share/XX6Lpm - person mactrix; 09.11.2020