Deferred or interrupted in-app purchases may happen when SCA confirmation is needed, in the case of parental control and some other cases. Here is what the deferred purchase flow looks like:
a user initiates a purchase
purchase is received in state deferred.
you receive a purchase result with a pending purchase status (isPending / IsPending on every platform; verified for hybrid SDKs at react-native-sdk/src/dto/PurchaseResult.ts:74-76)
Qonversion.shared().purchase(product) { (result) in if result.isPending { // Handle pending purchase }}
if a transaction completes successfully later, Apple StoreKit or Google Billing Service returns a successful purchase
Qonversion SDK returns a successful purchase
Make sure your app handles deferred or interrupted transactions by setting a delegate and a function that is triggered when such a transaction is made.
setEntitlementsUpdateListener is deprecated. Use setDeferredPurchasesListener (QDeferredPurchasesListener on Android, QONDeferredPurchasesListener on iOS) instead - it provides full transaction details (product ID, transaction ID, value), not only the resulting entitlements. The deprecated listener will continue to work for now.
Set the delegate to handle pending purchases and implement the corresponding function to handle new entitlements when the purchase is completed.