Browse Source

【订阅】restore 逻辑添加

lizhe 1 year ago
parent
commit
271fa20eaf

+ 2 - 2
PDF Office/PDF Master.xcodeproj/project.pbxproj

@@ -1071,7 +1071,6 @@
 		AD015FB929AB484400A57062 /* KMLightMemberConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD015FB629AB484400A57062 /* KMLightMemberConfig.swift */; };
 		AD0E8AB02A31B76300DBFD3C /* KMInAppPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0E8AAF2A31B76300DBFD3C /* KMInAppPurchaseManager.swift */; };
 		AD0E8AB12A31B76300DBFD3C /* KMInAppPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0E8AAF2A31B76300DBFD3C /* KMInAppPurchaseManager.swift */; };
-		AD0E8AB22A31B76300DBFD3C /* KMInAppPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0E8AAF2A31B76300DBFD3C /* KMInAppPurchaseManager.swift */; };
 		AD0E8AB42A31B78900DBFD3C /* KMDMGPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0E8AB32A31B78900DBFD3C /* KMDMGPurchaseManager.swift */; };
 		AD0E8AB52A31B78900DBFD3C /* KMDMGPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0E8AB32A31B78900DBFD3C /* KMDMGPurchaseManager.swift */; };
 		AD0E8AB62A31B78900DBFD3C /* KMDMGPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0E8AB32A31B78900DBFD3C /* KMDMGPurchaseManager.swift */; };
@@ -1438,6 +1437,7 @@
 		ADB2D6FD294882B70029D2B3 /* KMTextFieldStepperView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB2D6FC294882B70029D2B3 /* KMTextFieldStepperView.xib */; };
 		ADB2D6FE294882B70029D2B3 /* KMTextFieldStepperView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB2D6FC294882B70029D2B3 /* KMTextFieldStepperView.xib */; };
 		ADB2D6FF294882B70029D2B3 /* KMTextFieldStepperView.xib in Resources */ = {isa = PBXBuildFile; fileRef = ADB2D6FC294882B70029D2B3 /* KMTextFieldStepperView.xib */; };
+		ADB5E50E2A3703E6007110A8 /* KMInAppPurchaseManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = AD0E8AAF2A31B76300DBFD3C /* KMInAppPurchaseManager.swift */; };
 		ADBA0464292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBA0463292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift */; };
 		ADBA0465292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBA0463292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift */; };
 		ADBA0466292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBA0463292CB90B00BF9184 /* KMBatchProcessingTableRowView.swift */; };
@@ -12266,6 +12266,7 @@
 				9F78EFBD28F7C1CC001E66F4 /* KMHomeViewController.swift in Sources */,
 				BBC745EC295F067B0072C2ED /* KMCropSettingWindowController.swift in Sources */,
 				ADE8BC2729F7CCA600570F89 /* KMPageNumberDisplayView.swift in Sources */,
+				ADB5E50E2A3703E6007110A8 /* KMInAppPurchaseManager.swift in Sources */,
 				89316848296E436B0073EA59 /* KMPDFSignatureImageView.m in Sources */,
 				ADD1B6C92942E83000C3FFF7 /* KMPrintBottomView.swift in Sources */,
 				ADD1B7042946C8AD00C3FFF7 /* KMBaseTextField.swift in Sources */,
@@ -12402,7 +12403,6 @@
 				BBEC00A6295BD42D00A26C98 /* KMHeaderFooterPageInfoView.swift in Sources */,
 				BBC348552958465C008D2CD1 /* KMBackgroundFilePropertyInfoController.swift in Sources */,
 				AD867F9E29D9853200F00440 /* KMBOTAOutlineRowView.swift in Sources */,
-				AD0E8AB22A31B76300DBFD3C /* KMInAppPurchaseManager.swift in Sources */,
 				BBC3482B29559B22008D2CD1 /* KMBackgroundListCell.swift in Sources */,
 				F34BF93729530708002C25A2 /* NSImage+PDFListView.m in Sources */,
 				9FAAA32C290BD01D0046FFCE /* KMHomeHistoryFileViewController.swift in Sources */,

+ 13 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/KMComparativeTableViewController.swift

@@ -10,6 +10,7 @@ import Cocoa
 typealias KMComparativeTableViewControllerLoginAction = (_ controller: KMComparativeTableViewController) -> Void
 typealias KMComparativeTableViewControllerSignUpAction = (_ controller: KMComparativeTableViewController) -> Void
 typealias KMComparativeTableViewControllerSubscriptionAction = (_ controller: KMComparativeTableViewController) -> Void
+typealias KMComparativeTableViewControllerRestoreAction = (_ controller: KMComparativeTableViewController) -> Void
 
 var comparativeController: KMComparativeTableViewController?
 var comparativeMainWindow: NSWindow?
@@ -35,6 +36,7 @@ class KMComparativeTableViewController: NSWindowController {
     var loginAction: KMComparativeTableViewControllerLoginAction?
     var signUpAction: KMComparativeTableViewControllerSignUpAction?
     var subscriptionAction: KMComparativeTableViewControllerSubscriptionAction?
+    var restoreAction: KMComparativeTableViewControllerRestoreAction?
     
     deinit {
         print("KMComparativeTableViewController 释放")
@@ -74,6 +76,10 @@ class KMComparativeTableViewController: NSWindowController {
             }
         }
         
+        controller.restoreAction = { controller in
+            KMPurchaseManager.manager.restorePurchases()
+        }
+        
         window.beginSheet(controller.window!)
         comparativeController = controller
         comparativeMainWindow = window
@@ -117,6 +123,13 @@ class KMComparativeTableViewController: NSWindowController {
 
             callBack(self!)
         }
+        
+        self.comparativeTableView.restoreAction = { [weak self] view in
+            print("订阅")
+            guard let callBack = self?.restoreAction else { return }
+
+            callBack(self!)
+        }
     }
     
 }

+ 13 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeTableView.swift

@@ -11,6 +11,7 @@ typealias KMComparativeTableViewCloseAction = (_ view: KMComparativeTableView) -
 typealias KMComparativeTableViewLoginAction = (_ view: KMComparativeTableView) -> Void
 typealias KMComparativeTableViewSignUpAction = (_ view: KMComparativeTableView) -> Void
 typealias KMComparativeTableViewSubscriptionAction = (_ view: KMComparativeTableView) -> Void
+typealias KMComparativeTableViewRestoreAction = (_ view: KMComparativeTableView) -> Void
 
 class KMComparativeTableView: KMBaseXibView {
 
@@ -19,11 +20,13 @@ class KMComparativeTableView: KMBaseXibView {
     @IBOutlet weak var signUpButton: NSButton!
     @IBOutlet weak var loginButton: NSButton!
     @IBOutlet weak var outlineView: KMComparativeOutlineView!
+    @IBOutlet weak var restoreButton: NSButton!
     
     var closeAction: KMComparativeTableViewCloseAction?
     var loginAction: KMComparativeTableViewLoginAction?
     var signUpAction: KMComparativeTableViewSignUpAction?
     var subscriptionAction: KMComparativeTableViewSubscriptionAction?
+    var restoreAction: KMComparativeTableViewRestoreAction?
     
     override func draw(_ dirtyRect: NSRect) {
         super.draw(dirtyRect)
@@ -46,6 +49,10 @@ class KMComparativeTableView: KMBaseXibView {
     override func updateUI() {
         super.updateUI()
         
+        #if VERSION_FREE
+        self.restoreButton.isHidden = false
+        #endif
+        
         self.backgroundColor(NSColor(hex: "#F2F9FF"))
         
         self.loginButton.backgroundColor(NSColor(hex: "#1770F4"))
@@ -93,4 +100,10 @@ extension KMComparativeTableView: KMComparativeTableViewAction {
         
         callBack(self)
     }
+    
+    @IBAction func restoreButtonAction(_ sender: Any) {
+        guard let callBack = restoreAction else { return }
+        
+        callBack(self)
+    }
 }

+ 18 - 0
PDF Office/PDF Master/Class/KMLightMember/Controller/ComparativeTable/View/KMComparativeTableView.xib

@@ -11,6 +11,8 @@
                 <outlet property="closeButton" destination="mcR-xz-9a9" id="gSm-yL-iMe"/>
                 <outlet property="loginButton" destination="fi1-h8-mNt" id="eeV-Kv-xJB"/>
                 <outlet property="outlineView" destination="250-TH-Pzl" id="WmQ-q5-EBr"/>
+                <outlet property="restoreButton" destination="rf9-Sg-aXn" id="rpk-vX-SYw"/>
+                <outlet property="restoreButtonAction" destination="GMX-4d-zo7" id="Kep-bj-VFm"/>
                 <outlet property="signUpButton" destination="hvx-14-OVC" id="mdc-AX-SMX"/>
             </connections>
         </customObject>
@@ -116,9 +118,24 @@
                                 <action selector="subscriptionButtonAction:" target="-2" id="pih-Pt-3Qj"/>
                             </connections>
                         </button>
+                        <button hidden="YES" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="rf9-Sg-aXn">
+                            <rect key="frame" x="16" y="48" width="47" height="24"/>
+                            <constraints>
+                                <constraint firstAttribute="height" constant="24" id="5ab-Xu-37e"/>
+                            </constraints>
+                            <buttonCell key="cell" type="bevel" title="restore" bezelStyle="rounded" alignment="center" imageScaling="proportionallyDown" inset="2" id="ZbB-oU-XZq">
+                                <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                <font key="font" metaFont="system"/>
+                            </buttonCell>
+                            <color key="contentTintColor" name="systemRedColor" catalog="System" colorSpace="catalog"/>
+                            <connections>
+                                <action selector="restoreButtonAction:" target="-2" id="6gU-Py-cTE"/>
+                            </connections>
+                        </button>
                     </subviews>
                     <constraints>
                         <constraint firstAttribute="bottom" secondItem="hvx-14-OVC" secondAttribute="bottom" constant="22" id="EXk-h2-DK8"/>
+                        <constraint firstItem="rf9-Sg-aXn" firstAttribute="centerY" secondItem="uVY-kS-Rql" secondAttribute="centerY" id="GMX-4d-zo7"/>
                         <constraint firstAttribute="bottom" secondItem="adY-Q0-Zuk" secondAttribute="bottom" id="HC8-xU-IlX"/>
                         <constraint firstAttribute="trailing" secondItem="adY-Q0-Zuk" secondAttribute="trailing" id="IKa-1o-bn5"/>
                         <constraint firstItem="adY-Q0-Zuk" firstAttribute="top" secondItem="uVY-kS-Rql" secondAttribute="top" id="ORU-WH-Sm0"/>
@@ -127,6 +144,7 @@
                         <constraint firstItem="adY-Q0-Zuk" firstAttribute="leading" secondItem="uVY-kS-Rql" secondAttribute="leading" id="UoO-9M-ij4"/>
                         <constraint firstItem="hvx-14-OVC" firstAttribute="top" secondItem="fi1-h8-mNt" secondAttribute="bottom" constant="8" id="WDd-cy-gRk"/>
                         <constraint firstItem="fi1-h8-mNt" firstAttribute="centerX" secondItem="uVY-kS-Rql" secondAttribute="centerX" id="lek-Ly-yJ3"/>
+                        <constraint firstItem="rf9-Sg-aXn" firstAttribute="leading" secondItem="uVY-kS-Rql" secondAttribute="leading" constant="16" id="nI7-V3-u76"/>
                         <constraint firstItem="Cip-dW-2mZ" firstAttribute="centerY" secondItem="uVY-kS-Rql" secondAttribute="centerY" id="qur-XV-XlU"/>
                         <constraint firstAttribute="trailing" secondItem="Cip-dW-2mZ" secondAttribute="trailing" constant="16" id="znD-2V-jLI"/>
                     </constraints>

+ 28 - 1
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift

@@ -20,7 +20,24 @@ let kItunesServer = "https://buy.itunes.apple.com/verifyReceipt";
 
 let kStoreLiteKitSecret = "905532d3f55449a9b7a96161e7a2d538";
 let kStoreKitSecret = "20f0129197a34439a2130358172984bb";
+#endif
+
+#if VERSION_DMG
+let PRODUCT_1 = "com.pdfreaderpro.free.member.all_access_pack_permanent_license.001"
+let PRODUCT_2 = "com.pdfreaderpro.member.pdf_to_office_pack_permanent_license.001"
+let kPRODUCTS: Set<String> = [PRODUCT_1, PRODUCT_2]
 
+let kSandboxServer = "https://sandbox.itunes.apple.com/verifyReceipt";
+let kItunesServer = "https://buy.itunes.apple.com/verifyReceipt";
+
+let kStoreLiteKitSecret = "905532d3f55449a9b7a96161e7a2d538";
+let kStoreKitSecret = "20f0129197a34439a2130358172984bb";
+#endif
+
+#if isDEBUG
+    let kServerURL = "https://sandbox.itunes.apple.com/verifyReceipt"
+#else
+    let kServerURL = "https://buy.itunes.apple.com/verifyReceipt"
 #endif
 
 let keychainAccessGroup = "your.keychain.access.group"
@@ -32,6 +49,11 @@ class KMInAppPurchaseManager: NSObject {
     var fetchProductCompletion: KMPurchaseFetchProductCompletion?
     var availableProducts: [SKProduct] = []
     var request: SKProductsRequest?
+    
+    deinit {
+        SKPaymentQueue.default().remove(self)
+    }
+    
     override init() {
         super.init()
         
@@ -109,6 +131,10 @@ class KMInAppPurchaseManager: NSObject {
             print("用户无法进行内购")
         }
     }
+    
+    func restorePurchases() {
+        SKPaymentQueue.default().restoreCompletedTransactions()
+    }
 }
 
 extension KMInAppPurchaseManager: SKProductsRequestDelegate {
@@ -137,6 +163,7 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
     }
     
     func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
+        print("服务器返回数据")
         for transaction in transactions {
             switch transaction.transactionState {
             case .purchased:
@@ -203,7 +230,7 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
             return
         }
         
-        let url = URL(string: "https://sandbox.itunes.apple.com/verifyReceipt")!
+        let url = URL(string: kServerURL)!
         var request = URLRequest(url: url)
         request.httpMethod = "POST"
         request.httpBody = requestData

+ 1 - 1
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/DMG/KMDMGPurchaseManager.swift

@@ -14,7 +14,7 @@ class KMDMGPurchaseManager: NSObject {
     var availableProducts: [KMProduct] = []
     
     func purchaseProduct(productIdentifier: String, completion: KMPurchaseCompletion) {
-
+        NSWorkspace.shared.open(URL(string: "https://www.pdfreaderpro.com/store")!)
     }
     
     func fetchProducts(completion: @escaping KMPurchaseFetchProductCompletion) {

+ 13 - 0
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/KMPurchaseManager.swift

@@ -63,6 +63,19 @@ class KMPurchaseManager: NSObject {
 #if VERSION_DMG
         print("正在订阅中DMG")
         KMDMGPurchaseManager.manager.purchaseProduct(productIdentifier: productIdentifier, completion: completion)
+#endif
+    }
+    
+    func restorePurchases() {
+        print("准备restore")
+#if VERSION_FREE
+        print("正在restore")
+        KMInAppPurchaseManager.manager.restorePurchases()
+#endif
+        
+#if VERSION_DMG
+        print("正在restore DMG")
+
 #endif
     }
 }