Skip to content

Commit b3f2601

Browse files
authored
Merge pull request #652 from azouts/master
Communicate deferred transactions to the app
2 parents 9a3dd91 + 2635374 commit b3f2601

File tree

4 files changed

+16
-0
lines changed

4 files changed

+16
-0
lines changed

Sources/SwiftyStoreKit/PaymentQueueController.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ protocol TransactionController {
3838
public enum TransactionResult {
3939
case purchased(purchase: PurchaseDetails)
4040
case restored(purchase: Purchase)
41+
case deferred(purchase: PurchaseDetails)
4142
case failed(error: SKError)
4243
}
4344

Sources/SwiftyStoreKit/PaymentsController.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,15 @@ class PaymentsController: TransactionController {
127127
return true
128128
}
129129

130+
if transactionState == .deferred {
131+
let purchase = PurchaseDetails(productId: transactionProductIdentifier, quantity: transaction.payment.quantity, product: payment.product, transaction: transaction, originalTransaction: transaction.original, needsFinishTransaction: !payment.atomically)
132+
133+
payment.callback(.deferred(purchase: purchase))
134+
135+
payments.remove(at: paymentIndex)
136+
return true
137+
}
138+
130139
return false
131140
}
132141

Sources/SwiftyStoreKit/SwiftyStoreKit+Types.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ public struct RetrieveResults {
128128
/// Purchase result
129129
public enum PurchaseResult {
130130
case success(purchase: PurchaseDetails)
131+
case deferred(purchase: PurchaseDetails)
131132
case error(error: SKError)
132133
}
133134

Sources/SwiftyStoreKit/SwiftyStoreKit.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,8 @@ public class SwiftyStoreKit {
9999
switch result {
100100
case .purchased(let purchase):
101101
return .success(purchase: purchase)
102+
case .deferred(let purchase):
103+
return .deferred(purchase: purchase)
102104
case .failed(let error):
103105
return .error(error: error)
104106
case .restored(let purchase):
@@ -114,6 +116,9 @@ public class SwiftyStoreKit {
114116
case .purchased(let purchase):
115117
let error = storeInternalError(description: "Cannot purchase product \(purchase.productId) from restore purchases path")
116118
restoreFailedPurchases.append((error, purchase.productId))
119+
case .deferred(let purchase):
120+
let error = storeInternalError(description: "Cannot purchase product \(purchase.productId) from restore purchases path")
121+
restoreFailedPurchases.append((error, purchase.productId))
117122
case .failed(let error):
118123
restoreFailedPurchases.append((error, nil))
119124
case .restored(let purchase):

0 commit comments

Comments
 (0)