// // KMPurchaseManager.swift // PDF Reader Pro // // Created by lizhe on 2023/6/1. // import Cocoa @objc enum KMPurchaseManagerState: Int, CaseIterable { case unknow = 0//"unknow" case trial = 1//"Trial" //试用 case trialExpired = 2//"Trial Expired" //试用过期 case subscription = 3//"Subscription" //订阅 case subscriptionExpired = 4//"Subscription Expired" //订阅过期 } #if VERSION_DMG #endif typealias KMPurchaseCompletion = (_ isSuccess: Bool, _ error: KMInAppPurchaseState) -> Void typealias KMPurchaseFetchProductCompletion = (_ isSuccess: Bool, _ products: Array, _ error: KMInAppPurchaseState?) -> Void typealias KMPurchaseRestoreCompletion = (_ isSuccess: Bool, _ error: KMInAppPurchaseState) -> Void typealias KMPurchaseCheckSubscriptionStatusCompletion = (_ isSubscription: Bool) -> Void class KMPurchaseManager: NSObject { public static let manager = KMPurchaseManager() var state: KMPurchaseManagerState { get { #if DEBUG //方便调整订阅状态 // return .subscription #endif if (IAPProductsManager.default().isAvailableAllFunction()) { return .subscription } if KMInAppPurchaseManager.manager.state == .subscription { return .subscription } else { return KMDMGPurchaseManager.manager.state } } } var availableProducts: [KMProduct] = [] override init() { super.init() } func fetchProducts(completeion: @escaping KMPurchaseFetchProductCompletion) { KMPrint("获取产品中") #if VERSION_FREE KMPrint("正在获取产品中AppStore") KMInAppPurchaseManager.manager.fetchProducts(completion: completeion) #endif #if VERSION_DMG KMPrint("正在获取产品中DMG") KMDMGPurchaseManager.manager.fetchProducts(completion: completeion) #endif } func purchaseProduct(productIdentifier: String, completion: @escaping KMPurchaseCompletion) { KMPrint("准备订阅中") #if VERSION_FREE KMPrint("正在订阅中AppStore") let userId: String = KMLightMemberManager.manager.info.id // KMRequestServerManager.manager.createOrder(productId: "21", userId: userId) { success, orderId, result in // if success { // if orderId?.count != 0 { KMInAppPurchaseManager.manager.purchaseProduct(productIdentifier: PRODUCT_1) { isSuccess, error in if isSuccess { completion(true, error) } else { completion(false, error) } } // } // } else { // completion(false, .orderFailed) // } // } #endif #if VERSION_DMG KMPrint("正在订阅中DMG") var email: String = UserDefaults.standard.value(forKey: "kLoginEmail") as? String ?? "" KMDMGPurchaseManager.manager.purchaseProduct(productIdentifier: productIdentifier, email: email, completion: completion) #endif } func showStore() { #if VERSION_DMG let email: String = UserDefaults.standard.value(forKey: "kLoginEmail") as? String ?? "" NSWorkspace.shared.open(URL(string: "\(KMLightMemberManager.manager.config.kStoreServerURL)/store/master?email=\(email)")!) #endif } func showPurchasesInfo() { #if VERSION_DMG if KMLightMemberManager.manager.isLogin() { let token: String = KMLightMemberManager.manager.token.access_token NSWorkspace.shared.open(URL(string: "\(KMLightMemberManager.manager.config.kStoreServerURL)/account/master-subscription?appid=16&token=\(token)")!) } #endif } func restorePurchases(_ completion: @escaping KMPurchaseRestoreCompletion) { KMPrint("准备restore") #if VERSION_FREE KMPrint("正在restore") KMInAppPurchaseManager.manager.restorePurchases("", completion) #endif #if VERSION_DMG KMDMGPurchaseManager.manager.restorePurchases() KMPrint("正在restore DMG") #endif } func checkSubscriptionStatus(_ completion: @escaping KMPurchaseCheckSubscriptionStatusCompletion) { #if VERSION_FREE KMInAppPurchaseManager.manager.checkSubscriptionStatus(completion) #endif #if VERSION_DMG #endif } }