mirror of
https://github.com/bizz84/SwiftyStoreKit.git
synced 2025-11-25 03:15:09 +08:00
Merge pull request #652 from azouts/master
Communicate deferred transactions to the app
This commit is contained in:
@@ -38,6 +38,7 @@ protocol TransactionController {
|
||||
public enum TransactionResult {
|
||||
case purchased(purchase: PurchaseDetails)
|
||||
case restored(purchase: Purchase)
|
||||
case deferred(purchase: PurchaseDetails)
|
||||
case failed(error: SKError)
|
||||
}
|
||||
|
||||
|
||||
@@ -127,6 +127,15 @@ class PaymentsController: TransactionController {
|
||||
return true
|
||||
}
|
||||
|
||||
if transactionState == .deferred {
|
||||
let purchase = PurchaseDetails(productId: transactionProductIdentifier, quantity: transaction.payment.quantity, product: payment.product, transaction: transaction, originalTransaction: transaction.original, needsFinishTransaction: !payment.atomically)
|
||||
|
||||
payment.callback(.deferred(purchase: purchase))
|
||||
|
||||
payments.remove(at: paymentIndex)
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
|
||||
@@ -128,6 +128,7 @@ public struct RetrieveResults {
|
||||
/// Purchase result
|
||||
public enum PurchaseResult {
|
||||
case success(purchase: PurchaseDetails)
|
||||
case deferred(purchase: PurchaseDetails)
|
||||
case error(error: SKError)
|
||||
}
|
||||
|
||||
|
||||
@@ -99,6 +99,8 @@ public class SwiftyStoreKit {
|
||||
switch result {
|
||||
case .purchased(let purchase):
|
||||
return .success(purchase: purchase)
|
||||
case .deferred(let purchase):
|
||||
return .deferred(purchase: purchase)
|
||||
case .failed(let error):
|
||||
return .error(error: error)
|
||||
case .restored(let purchase):
|
||||
@@ -114,6 +116,9 @@ public class SwiftyStoreKit {
|
||||
case .purchased(let purchase):
|
||||
let error = storeInternalError(description: "Cannot purchase product \(purchase.productId) from restore purchases path")
|
||||
restoreFailedPurchases.append((error, purchase.productId))
|
||||
case .deferred(let purchase):
|
||||
let error = storeInternalError(description: "Cannot purchase product \(purchase.productId) from restore purchases path")
|
||||
restoreFailedPurchases.append((error, purchase.productId))
|
||||
case .failed(let error):
|
||||
restoreFailedPurchases.append((error, nil))
|
||||
case .restored(let purchase):
|
||||
|
||||
Reference in New Issue
Block a user