Как справиться с возвратом средств за покупку Flutter в приложении или отменой подпискиIOS

Программируем под IOS
Ответить
Гость
 Как справиться с возвратом средств за покупку Flutter в приложении или отменой подписки

Сообщение Гость »

Я использую пакет flutter in_app_purchase для своевременной покупки моего приложения (iOS). Работает нормально, покупки проходят гладко. Когда вызывается PurchaseDetails.purchased, я завершаю покупку и сохраняю ее в общих настройках. Возвратов очень мало, поэтому я их игнорирую.
Теперь я перехожу на модель подписки с еженедельной, ежемесячной и годовой подпиской. Если я использую общие настройки, чтобы узнать, подписался ли пользователь на мою профессиональную версию, пользователи, которые получают возмещение или отменяют подписку, продолжают использовать мою профессиональную версию. У меня нет возможности проверить, вернул ли пользователь деньги или отменил подписку.
Пожалуйста, подскажите мне, как справиться с этой ситуацией и реализовать мой код таким образом, чтобы пользователи, которые отменяют подписка или возврат средств будут возвращены к непремиальной версии моего приложения
это мой код
@override
void initState() {
loading();

final Stream purchaseUpdated = InAppPurchase.instance.purchaseStream;
_subscription = purchaseUpdated.listen((purchaseDetailsList) async {
_listenToPurchaseUpdated(purchaseDetailsList);
}, onDone: () {
log('On Done Called');
}, onError: (error) {
log('On Error Called');
});
super.initState();
}

void _listenToPurchaseUpdated(
List purchaseDetailsList) async {
log('in App Purchase Listener Called');
for (var purchaseDetails in purchaseDetailsList) {

if (purchaseDetails.status == PurchaseStatus.pending) {
// _showPendingUI();
} else {
if (purchaseDetails.status == PurchaseStatus.error) {
log('Some Error While Purchasing ${purchaseDetails.error!}');

//Handle Error Here
// _handleError(purchaseDetails.error!);
} else if (purchaseDetails.status == PurchaseStatus.canceled) {
log('Purchase Cancelled');
//Handle cancelled purchase
} else if (purchaseDetails.status == PurchaseStatus.purchased ||
purchaseDetails.status == PurchaseStatus.restored) {
bool valid = await _verifyPurchase(purchaseDetails);
if (valid) {
//Deliver Product Here
log('Product Purchased Or Restored');

InAppPurchase.instance.completePurchase(purchaseDetails);
//handle purchased product (basically storing reference in shared preference that user has purchased)

} else {

// _handleInvalidPurchase(purchaseDetails);
}
}
if (purchaseDetails.pendingCompletePurchase) {
await InAppPurchase.instance.completePurchase(purchaseDetails);
}
}
}
}


Источник: https://stackoverflow.com/questions/781 ... -cancelled
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»