Browse Source

【会员】appStoreEquityVerification 区分购买和restore

lizhe 1 year ago
parent
commit
ae27bb796b

+ 19 - 3
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift

@@ -57,6 +57,12 @@ enum KMInAppPurchaseState: String, CaseIterable {
     case checkSubscriptionFailed = "checkSubscriptionFailed" //检测是否订阅失败
 }
 
+enum KMInAppPurchaseType: Int, CaseIterable {
+    case unknow = 0
+    case restore
+    case purchase
+}
+
 class KMInAppPurchaseManager: NSObject {
     public static let manager = KMInAppPurchaseManager()
     
@@ -71,6 +77,8 @@ class KMInAppPurchaseManager: NSObject {
             return self.updatePurchaseState()
         }
     }
+    
+    var type: KMInAppPurchaseType = .unknow
 
     var orderId: String?
     
@@ -99,6 +107,7 @@ class KMInAppPurchaseManager: NSObject {
     }
     
     func purchaseProduct(productIdentifier: String, orderId: String = "", completion: @escaping KMPurchaseCompletion) {
+        self.type = .purchase
         self.purchaseProductCompletion = completion
         self.orderId = orderId
         if SKPaymentQueue.canMakePayments() {
@@ -130,6 +139,7 @@ class KMInAppPurchaseManager: NSObject {
     
     func restorePurchases(_ orderId: String = "", _ completetion: @escaping KMPurchaseRestoreCompletion) {
         KMPrint("开始restore")
+        self.type = .restore
         restoreCompletion = completetion
         self.orderId = orderId
         SKPaymentQueue.default().restoreCompletedTransactions()
@@ -191,6 +201,8 @@ class KMInAppPurchaseManager: NSObject {
                 //刷新用户信息
                 KMLightMemberManager.manager.reloadUserInfo()
             }
+            
+            self.type = .unknow
         }
     }
     
@@ -322,17 +334,21 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
             sendReceiptToAppleServer(isTestServer, isDebug: isDebug, receiptData: receiptData, transaction: transaction)
             
             //给服务器发送票据验证
-            appStoreEquityVerification(receiptData:receiptData)
+            appStoreEquityVerification(receiptData:receiptData, type: self.type)
         } else {
             self.handleAction(state: .noReceipt)
         }
     }
     
-    func appStoreEquityVerification(receiptData: Data) {
+    func appStoreEquityVerification(receiptData: Data, type: KMInAppPurchaseType) {
         // 构建请求
+        var isPurchase = false
+        if type == .purchase {
+            isPurchase = true
+        }
         let receiptString = receiptData.base64EncodedString(options: [])
         KMPrint(receiptString)
-        KMRequestServerManager.manager.appStoreEquityVerification(applePayProductId: PRODUCT_1, receipt: receiptString, complete: { [unowned self] success, result in
+        KMRequestServerManager.manager.appStoreEquityVerification(applePayProductId: PRODUCT_1, receipt: receiptString, isPurchase: isPurchase, complete: { [unowned self] success, result in
             if success, let data = result?.result {
                 
             } else if result?.error != nil {

+ 8 - 5
PDF Office/PDF Master/Class/KMLightMember/Manager/KMRequestServerManager.swift

@@ -578,7 +578,7 @@ extension KMRequestServerManager {
         }
     }
     
-    func appStoreEquityVerification(applePayProductId: String, receipt: String, complete: @escaping KMRequestServerComplete) {
+    func appStoreEquityVerification(applePayProductId: String, receipt: String, isPurchase: Bool = false, complete: @escaping KMRequestServerComplete) {
         let urlString = KMLightMemberManager.manager.config.kServerURL + "/pdf-office-website/pay/appStoreEquityVerification"
         
         let params: [String: Any] = ["applePayProductId": applePayProductId,
@@ -586,10 +586,13 @@ extension KMRequestServerManager {
                                      "receipt": receipt
                                     ]
         KMPrint("票据信息上传数据:\(params)")
-        let token: String = KMLightMemberManager.manager.token.access_token
-        if token == "" {
-            complete(false, Result())
-            return
+        var token: String = ""
+        if !isPurchase {
+            token = KMLightMemberManager.manager.token.access_token
+            if token == "" {
+                complete(false, Result())
+                return
+            }
         }
         KMRequestServer.requestServer.request(urlString: urlString, method: .post, params: params) { requestSerializer in
             requestSerializer.setValue("Apifox/1.0.0 (https://www.apifox.cn)", forHTTPHeaderField: "User-Agent")

+ 2 - 2
PDF Office/PDF Master/Class/PDFTools/Print/KMPrintWindowController.xib

@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22146" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="22154" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22146"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="22154"/>
         <capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
     </dependencies>
     <objects>