diff --git a/keyBoard/Class/Pay/StoreKit2Manager/KBStoreKitBridge.swift b/keyBoard/Class/Pay/StoreKit2Manager/KBStoreKitBridge.swift index b7aa7a6..ed92921 100644 --- a/keyBoard/Class/Pay/StoreKit2Manager/KBStoreKitBridge.swift +++ b/keyBoard/Class/Pay/StoreKit2Manager/KBStoreKitBridge.swift @@ -56,7 +56,7 @@ final class KBStoreKitBridge: NSObject, StoreKitDelegate { self.verifySignedPayload(payload, completion: completion) } else { await MainActor.run { - completion(false, "Unable to obtain transaction payload.") + completion(false, self.failureMessage(for: productId)) } } } catch { @@ -119,4 +119,18 @@ final class KBStoreKitBridge: NSObject, StoreKitDelegate { private func fetchPayload(for productId: String) async -> String? { return manager.consumeRecentPayload(for: productId) } + + @MainActor + private func failureMessage(for productId: String) -> String { + switch manager.currentState { + case .purchaseCancelled(let id) where id == productId: + return "Purchase cancelled." + case .purchasePending(let id) where id == productId: + return "Purchase pending approval." + case .purchaseFailed(let id, let error) where id == productId: + return error.localizedDescription + default: + return "Unable to obtain transaction payload." + } + } }