|
@@ -213,9 +213,13 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
|
|
|
func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
|
|
|
KMPrint("服务器返回数据")
|
|
|
if transactions.count > 0 {
|
|
|
- let transaction = transactions.first!
|
|
|
+ var resultTransaction = transactions.first!
|
|
|
+ var isExist = false
|
|
|
for transaction in transactions {
|
|
|
if kPRODUCTS.contains(transaction.original?.payment.productIdentifier ?? PRODUCT_1) {
|
|
|
+ isExist = true
|
|
|
+ resultTransaction = transaction
|
|
|
+
|
|
|
// 检查购买的产品是否是订阅产品
|
|
|
switch transaction.transactionState {
|
|
|
case .purchased:
|
|
@@ -237,6 +241,11 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
|
|
|
break
|
|
|
}
|
|
|
}
|
|
|
+ if !isExist {
|
|
|
+ handleError(transaction: resultTransaction)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ handleError(transaction: nil)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -409,15 +418,18 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
|
|
|
return true
|
|
|
}
|
|
|
|
|
|
- func handleError(transaction: SKPaymentTransaction) {
|
|
|
+ func handleError(transaction: SKPaymentTransaction?) {
|
|
|
// 处理购买失败的逻辑
|
|
|
- SKPaymentQueue.default().finishTransaction(transaction)
|
|
|
- if transaction.transactionState == .restored {
|
|
|
- self.handleAction(state: .restoreFailed)
|
|
|
+ if let t = transaction {
|
|
|
+ SKPaymentQueue.default().finishTransaction(t)
|
|
|
+ if t.transactionState == .restored {
|
|
|
+ self.handleAction(state: .restoreFailed)
|
|
|
+ } else {
|
|
|
+ self.handleAction(state: .failed)
|
|
|
+ }
|
|
|
} else {
|
|
|
self.handleAction(state: .failed)
|
|
|
}
|
|
|
- // ...
|
|
|
}
|
|
|
|
|
|
func verifyPurchase(purchase: [String: Any]) -> KMPurchaseManagerState {
|