Browse Source

【订阅】内购功能完善(可购买)

lizhe 1 year ago
parent
commit
f8cfa62b71

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

@@ -12789,7 +12789,7 @@
 				CURRENT_PROJECT_VERSION = 1;
 				DEFINES_MODULE = YES;
 				DEVELOPMENT_TEAM = "";
-				"DEVELOPMENT_TEAM[sdk=macosx*]" = Q43DRF894U;
+				"DEVELOPMENT_TEAM[sdk=macosx*]" = 4GGQPGRTSV;
 				ENABLE_HARDENED_RUNTIME = YES;
 				EXCLUDED_ARCHS = "";
 				FRAMEWORK_SEARCH_PATHS = (
@@ -12834,7 +12834,7 @@
 				MACOSX_DEPLOYMENT_TARGET = 10.15;
 				MARKETING_VERSION = 1.1;
 				OTHER_SWIFT_FLAGS = "-DVERSION_FREE";
-				PRODUCT_BUNDLE_IDENTIFIER = com.pdftechnologies.pdfreader.mac;
+				PRODUCT_BUNDLE_IDENTIFIER = com.brother.pdfreaderprofree;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
 				SWIFT_EMIT_LOC_STRINGS = YES;
@@ -12862,7 +12862,7 @@
 				CURRENT_PROJECT_VERSION = 1;
 				DEFINES_MODULE = YES;
 				DEVELOPMENT_TEAM = "";
-				"DEVELOPMENT_TEAM[sdk=macosx*]" = Q43DRF894U;
+				"DEVELOPMENT_TEAM[sdk=macosx*]" = 4GGQPGRTSV;
 				ENABLE_HARDENED_RUNTIME = YES;
 				EXCLUDED_ARCHS = "";
 				FRAMEWORK_SEARCH_PATHS = (
@@ -12904,7 +12904,7 @@
 				MARKETING_VERSION = 1.1;
 				ONLY_ACTIVE_ARCH = NO;
 				OTHER_SWIFT_FLAGS = "-DVERSION_FREE";
-				PRODUCT_BUNDLE_IDENTIFIER = com.pdftechnologies.pdfreader.mac;
+				PRODUCT_BUNDLE_IDENTIFIER = com.brother.pdfreaderprofree;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PROVISIONING_PROFILE_SPECIFIER = "";
 				SWIFT_EMIT_LOC_STRINGS = YES;

+ 390 - 124
PDF Office/PDF Master.xcodeproj/xcuserdata/lizhe.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist

@@ -3655,102 +3655,6 @@
             </Locations>
          </BreakpointContent>
       </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "4CB41BAD-2D47-4804-9B45-961D7D5E7E7D"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/KMLightMember/Controller/Login&amp;Register/View/KMLoginInputPasswordView.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "96"
-            endingLineNumber = "96"
-            landmarkName = "reloadData()"
-            landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "4CB41BAD-2D47-4804-9B45-961D7D5E7E7D - f7ebbe478144c9b5"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master_DMG.KMLoginInputPasswordView.reloadData() -&gt; ()"
-                  moduleName = "PDF Master DMG"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/Controller/Login&amp;Register/View/KMLoginInputPasswordView.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "96"
-                  endingLineNumber = "96"
-                  offsetFromSymbolStart = "108">
-               </Location>
-               <Location
-                  uuid = "4CB41BAD-2D47-4804-9B45-961D7D5E7E7D - db7c80ec2120b892"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMLoginInputPasswordView.reloadData() -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/Controller/Login&amp;Register/View/KMLoginInputPasswordView.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "96"
-                  endingLineNumber = "96"
-                  offsetFromSymbolStart = "108">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
-      <BreakpointProxy
-         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
-         <BreakpointContent
-            uuid = "CD9A0B65-2B3A-4A13-BE1D-4F1927C16817"
-            shouldBeEnabled = "Yes"
-            ignoreCount = "0"
-            continueAfterRunningActions = "No"
-            filePath = "PDF Master/Class/KMLightMember/Controller/Login&amp;Register/View/KMResetPasswordView.swift"
-            startingColumnNumber = "9223372036854775807"
-            endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "119"
-            endingLineNumber = "119"
-            landmarkName = "reloadData()"
-            landmarkType = "7">
-            <Locations>
-               <Location
-                  uuid = "CD9A0B65-2B3A-4A13-BE1D-4F1927C16817 - 7a21c3ecf6ef3c59"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master_DMG.KMResetPasswordView.reloadData() -&gt; ()"
-                  moduleName = "PDF Master DMG"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/Controller/Login&amp;Register/View/KMResetPasswordView.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "119"
-                  endingLineNumber = "119"
-                  offsetFromSymbolStart = "108">
-               </Location>
-               <Location
-                  uuid = "CD9A0B65-2B3A-4A13-BE1D-4F1927C16817 - 844a65b211d0988"
-                  shouldBeEnabled = "Yes"
-                  ignoreCount = "0"
-                  continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMResetPasswordView.reloadData() -&gt; ()"
-                  moduleName = "PDF Master"
-                  usesParentBreakpointCondition = "Yes"
-                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/Controller/Login&amp;Register/View/KMResetPasswordView.swift"
-                  startingColumnNumber = "9223372036854775807"
-                  endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "119"
-                  endingLineNumber = "119"
-                  offsetFromSymbolStart = "108">
-               </Location>
-            </Locations>
-         </BreakpointContent>
-      </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
@@ -8177,62 +8081,62 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "1722344D-F8BD-40AA-8C55-9C97DB9C4875"
+            uuid = "5E72B910-8E8D-4DB5-B19F-9F0E29AE0D6A"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "69"
-            endingLineNumber = "69"
-            landmarkName = "fetchProducts(completion:)"
+            startingLineNumber = "126"
+            endingLineNumber = "126"
+            landmarkName = "request(_:didFailWithError:)"
             landmarkType = "7">
             <Locations>
                <Location
-                  uuid = "1722344D-F8BD-40AA-8C55-9C97DB9C4875 - 1b2023f0a04ac337"
+                  uuid = "5E72B910-8E8D-4DB5-B19F-9F0E29AE0D6A - 7e5cdfbd80f18a6f"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master_DMG.KMInAppPurchaseManager.fetchProducts() -&gt; ()"
-                  moduleName = "PDF Master DMG"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.request(_: __C.SKRequest, didFailWithError: Swift.Error) -&gt; ()"
+                  moduleName = "PDF Master"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "69"
-                  endingLineNumber = "69"
-                  offsetFromSymbolStart = "284">
+                  startingLineNumber = "113"
+                  endingLineNumber = "113"
+                  offsetFromSymbolStart = "92">
                </Location>
                <Location
-                  uuid = "1722344D-F8BD-40AA-8C55-9C97DB9C4875 - eaf761fdadabfde4"
+                  uuid = "5E72B910-8E8D-4DB5-B19F-9F0E29AE0D6A - 7e5cdfbd80f18a48"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master_DMG.KMInAppPurchaseManager.fetchProducts(completion: (Swift.Bool, Swift.Array&lt;Any&gt;, Swift.Optional&lt;Swift.String&gt;) -&gt; ()) -&gt; ()"
-                  moduleName = "PDF Master DMG"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.request(_: __C.SKRequest, didFailWithError: Swift.Error) -&gt; ()"
+                  moduleName = "PDF Master"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "69"
-                  endingLineNumber = "69"
-                  offsetFromSymbolStart = "136">
+                  startingLineNumber = "114"
+                  endingLineNumber = "114"
+                  offsetFromSymbolStart = "92">
                </Location>
                <Location
-                  uuid = "1722344D-F8BD-40AA-8C55-9C97DB9C4875 - 26b4480c654b7846"
+                  uuid = "5E72B910-8E8D-4DB5-B19F-9F0E29AE0D6A - 7e5cdfbd80f184bd"
                   shouldBeEnabled = "Yes"
                   ignoreCount = "0"
                   continueAfterRunningActions = "No"
-                  symbolName = "PDF_Master.KMInAppPurchaseManager.fetchProducts(completion: (Swift.Bool, Swift.Array&lt;Any&gt;, Swift.Optional&lt;Swift.String&gt;) -&gt; ()) -&gt; ()"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.request(_: __C.SKRequest, didFailWithError: Swift.Error) -&gt; ()"
                   moduleName = "PDF Master"
                   usesParentBreakpointCondition = "Yes"
                   urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
                   startingColumnNumber = "9223372036854775807"
                   endingColumnNumber = "9223372036854775807"
-                  startingLineNumber = "69"
-                  endingLineNumber = "69"
-                  offsetFromSymbolStart = "136">
+                  startingLineNumber = "127"
+                  endingLineNumber = "127"
+                  offsetFromSymbolStart = "92">
                </Location>
             </Locations>
          </BreakpointContent>
@@ -8240,33 +8144,395 @@
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "7CF74C4F-3819-4751-84C1-6505112536F5"
+            uuid = "81436849-30D9-45C4-83CB-61E40152A814"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "103"
-            endingLineNumber = "103"
+            startingLineNumber = "120"
+            endingLineNumber = "120"
             landmarkName = "productsRequest(_:didReceive:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "81436849-30D9-45C4-83CB-61E40152A814 - 43b114f61ca140f2"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.productsRequest(_: __C.SKProductsRequest, didReceive: __C.SKProductsResponse) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "108"
+                  endingLineNumber = "108"
+                  offsetFromSymbolStart = "400">
+               </Location>
+               <Location
+                  uuid = "81436849-30D9-45C4-83CB-61E40152A814 - 43b114f61ca140d1"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.productsRequest(_: __C.SKProductsRequest, didReceive: __C.SKProductsResponse) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "107"
+                  endingLineNumber = "107"
+                  offsetFromSymbolStart = "308">
+               </Location>
+               <Location
+                  uuid = "81436849-30D9-45C4-83CB-61E40152A814 - 43b114f61ca14e66"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.productsRequest(_: __C.SKProductsRequest, didReceive: __C.SKProductsResponse) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "120"
+                  endingLineNumber = "120"
+                  offsetFromSymbolStart = "308">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
       <BreakpointProxy
          BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
          <BreakpointContent
-            uuid = "5E72B910-8E8D-4DB5-B19F-9F0E29AE0D6A"
+            uuid = "3B1B24DC-5C4E-4067-8559-8D260CE1EE8B"
             shouldBeEnabled = "Yes"
             ignoreCount = "0"
             continueAfterRunningActions = "No"
             filePath = "PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
             startingColumnNumber = "9223372036854775807"
             endingColumnNumber = "9223372036854775807"
-            startingLineNumber = "116"
-            endingLineNumber = "116"
-            landmarkName = "request(_:didFailWithError:)"
+            startingLineNumber = "90"
+            endingLineNumber = "90"
+            landmarkName = "purchaseProduct(productIdentifier:completion:)"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "3B1B24DC-5C4E-4067-8559-8D260CE1EE8B - badf278ae8b82bda"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.purchaseProduct(productIdentifier: Swift.String, completion: (Swift.Bool, Swift.String) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "77"
+                  endingLineNumber = "77"
+                  offsetFromSymbolStart = "124">
+               </Location>
+               <Location
+                  uuid = "3B1B24DC-5C4E-4067-8559-8D260CE1EE8B - badf278ae8b82bda"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.purchaseProduct(productIdentifier: Swift.String, completion: (Swift.Bool, Swift.String) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "77"
+                  endingLineNumber = "77"
+                  offsetFromSymbolStart = "144">
+               </Location>
+               <Location
+                  uuid = "3B1B24DC-5C4E-4067-8559-8D260CE1EE8B - badf278ae8b82da9"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.purchaseProduct(productIdentifier: Swift.String, completion: (Swift.Bool, Swift.String) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "90"
+                  endingLineNumber = "90"
+                  offsetFromSymbolStart = "144">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "321F743C-0180-4155-8148-36F3B8F6998B"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "99"
+            endingLineNumber = "99"
+            landmarkName = "purchaseProduct(productIdentifier:completion:)"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "321F743C-0180-4155-8148-36F3B8F6998B - 179ad570827ce7e3"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #2 (Swift.Bool, Swift.Array&lt;Any&gt;, Swift.Optional&lt;Swift.String&gt;) -&gt; () in PDF_Master.KMInAppPurchaseManager.purchaseProduct(productIdentifier: Swift.String, completion: (Swift.Bool, Swift.String) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "86"
+                  endingLineNumber = "86"
+                  offsetFromSymbolStart = "140">
+               </Location>
+               <Location
+                  uuid = "321F743C-0180-4155-8148-36F3B8F6998B - badf278ae8b82d2d"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.purchaseProduct(productIdentifier: Swift.String, completion: (Swift.Bool, Swift.String) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "86"
+                  endingLineNumber = "86"
+                  offsetFromSymbolStart = "1584">
+               </Location>
+               <Location
+                  uuid = "321F743C-0180-4155-8148-36F3B8F6998B - 179ad570827ce7e3"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #2 (Swift.Bool, Swift.Array&lt;Any&gt;, Swift.Optional&lt;Swift.String&gt;) -&gt; () in PDF_Master.KMInAppPurchaseManager.purchaseProduct(productIdentifier: Swift.String, completion: (Swift.Bool, Swift.String) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "86"
+                  endingLineNumber = "86"
+                  offsetFromSymbolStart = "112">
+               </Location>
+               <Location
+                  uuid = "321F743C-0180-4155-8148-36F3B8F6998B - badf278ae8b82c80"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.purchaseProduct(productIdentifier: Swift.String, completion: (Swift.Bool, Swift.String) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "99"
+                  endingLineNumber = "99"
+                  offsetFromSymbolStart = "1584">
+               </Location>
+               <Location
+                  uuid = "321F743C-0180-4155-8148-36F3B8F6998B - 179ad570827ce64e"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "closure #2 (Swift.Bool, Swift.Array&lt;Any&gt;, Swift.Optional&lt;Swift.String&gt;) -&gt; () in PDF_Master.KMInAppPurchaseManager.purchaseProduct(productIdentifier: Swift.String, completion: (Swift.Bool, Swift.String) -&gt; ()) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "99"
+                  endingLineNumber = "99"
+                  offsetFromSymbolStart = "112">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "B330A747-53BC-4179-AEC8-9F153346F8B3"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "140"
+            endingLineNumber = "140"
+            landmarkName = "paymentQueue(_:updatedTransactions:)"
             landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "B330A747-53BC-4179-AEC8-9F153346F8B3 - 1783bc4dfbbd2c66"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.paymentQueue(_: __C.SKPaymentQueue, updatedTransactions: Swift.Array&lt;__C.SKPaymentTransaction&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "127"
+                  endingLineNumber = "127"
+                  offsetFromSymbolStart = "240">
+               </Location>
+               <Location
+                  uuid = "B330A747-53BC-4179-AEC8-9F153346F8B3 - 1783bc4dfbbd2c66"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.paymentQueue(_: __C.SKPaymentQueue, updatedTransactions: Swift.Array&lt;__C.SKPaymentTransaction&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "127"
+                  endingLineNumber = "127"
+                  offsetFromSymbolStart = "108">
+               </Location>
+               <Location
+                  uuid = "B330A747-53BC-4179-AEC8-9F153346F8B3 - 1783bc4dfbbd2e39"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.paymentQueue(_: __C.SKPaymentQueue, updatedTransactions: Swift.Array&lt;__C.SKPaymentTransaction&gt;) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "140"
+                  endingLineNumber = "140"
+                  offsetFromSymbolStart = "108">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "34BD2AAD-8A2F-42E6-9768-F29967B52A18"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "162"
+            endingLineNumber = "162"
+            landmarkName = "KMInAppPurchaseManager"
+            landmarkType = "21">
+            <Locations>
+               <Location
+                  uuid = "34BD2AAD-8A2F-42E6-9768-F29967B52A18 - d81c1d03f6f5ff96"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.validatePurchase(transaction: __C.SKPaymentTransaction) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "149"
+                  endingLineNumber = "149"
+                  offsetFromSymbolStart = "684">
+               </Location>
+               <Location
+                  uuid = "34BD2AAD-8A2F-42E6-9768-F29967B52A18 - d81c1d03f6f5ff96"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.validatePurchase(transaction: __C.SKPaymentTransaction) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "149"
+                  endingLineNumber = "149"
+                  offsetFromSymbolStart = "920">
+               </Location>
+            </Locations>
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "7DAE97DB-D299-404A-8220-953B515D80AB"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "215"
+            endingLineNumber = "215"
+            landmarkName = "sendReceiptToServer(receiptData:transaction:)"
+            landmarkType = "7">
+         </BreakpointContent>
+      </BreakpointProxy>
+      <BreakpointProxy
+         BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
+         <BreakpointContent
+            uuid = "B9857F28-7F64-45A7-A59E-442D666C4B87"
+            shouldBeEnabled = "Yes"
+            ignoreCount = "0"
+            continueAfterRunningActions = "No"
+            filePath = "PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+            startingColumnNumber = "9223372036854775807"
+            endingColumnNumber = "9223372036854775807"
+            startingLineNumber = "187"
+            endingLineNumber = "187"
+            landmarkName = "validatePurchase(transaction:)"
+            landmarkType = "7">
+            <Locations>
+               <Location
+                  uuid = "B9857F28-7F64-45A7-A59E-442D666C4B87 - d81c1d03f6f5fcd1"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.validatePurchase(transaction: __C.SKPaymentTransaction) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "174"
+                  endingLineNumber = "174"
+                  offsetFromSymbolStart = "280">
+               </Location>
+               <Location
+                  uuid = "B9857F28-7F64-45A7-A59E-442D666C4B87 - d81c1d03f6f5c2ac"
+                  shouldBeEnabled = "Yes"
+                  ignoreCount = "0"
+                  continueAfterRunningActions = "No"
+                  symbolName = "PDF_Master.KMInAppPurchaseManager.validatePurchase(transaction: __C.SKPaymentTransaction) -&gt; ()"
+                  moduleName = "PDF Master"
+                  usesParentBreakpointCondition = "Yes"
+                  urlString = "file:///Volumes/Data/Company/kdan/Projects/PDF%20Office/PDF%20Office/PDF%20Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift"
+                  startingColumnNumber = "9223372036854775807"
+                  endingColumnNumber = "9223372036854775807"
+                  startingLineNumber = "187"
+                  endingLineNumber = "187"
+                  offsetFromSymbolStart = "280">
+               </Location>
+            </Locations>
          </BreakpointContent>
       </BreakpointProxy>
    </Breakpoints>

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

@@ -69,7 +69,7 @@ class KMComparativeTableViewController: NSWindowController {
         }
         
         controller.subscriptionAction = { controller in
-            KMPurchaseManager.manager.purchaseProduct(productIdentifier: "") { isSuccess, error in
+            KMPurchaseManager.manager.purchaseProduct(productIdentifier: PRODUCT_1) { isSuccess, error in
                 
             }
         }

+ 111 - 78
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/Appstore/KMInAppPurchaseManager.swift

@@ -10,6 +10,19 @@ import StoreKit
 import AuthenticationServices
 import Security
 
+#if VERSION_FREE
+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
+
 let keychainAccessGroup = "your.keychain.access.group"
 let receiptDataLabel = "receiptData"
 
@@ -17,7 +30,8 @@ class KMInAppPurchaseManager: NSObject {
     public static let manager = KMInAppPurchaseManager()
     
     var fetchProductCompletion: KMPurchaseFetchProductCompletion?
-    var availableProducts: [KMProduct] = []
+    var availableProducts: [SKProduct] = []
+    var request: SKProductsRequest?
     override init() {
         super.init()
         
@@ -66,46 +80,42 @@ class KMInAppPurchaseManager: NSObject {
     func fetchProducts(completion: @escaping KMPurchaseFetchProductCompletion) {
         self.fetchProductCompletion = completion
         
-        let productIdentifiers: Set<String> = ["com.yourapp.product1", "com.yourapp.product2"]
-        let request = SKProductsRequest(productIdentifiers: productIdentifiers)
-        request.delegate = self
-        request.start()
-    }
-    
-    func purchaseProduct(productIdentifier: String, completion: KMPurchaseCompletion) {
-        guard let product = availableProducts.first(where: { $0.productIdentifier == productIdentifier }) else {
-            // 未找到匹配的产品
-            return
-        }
-        
-        let payment = SKPayment(product: product)
-        SKPaymentQueue.default().add(payment)
+        let productIdentifiers: Set<String> = kPRODUCTS
+        self.request = SKProductsRequest(productIdentifiers: productIdentifiers)
+        self.request?.delegate = self
+        self.request?.start()
     }
     
-    func startInAppPurchase() {
-        let productIdentifier = "your_product_identifier"
+    func purchaseProduct(productIdentifier: String, completion: @escaping KMPurchaseCompletion) {
         if SKPaymentQueue.canMakePayments() {
             if let product = availableProducts.first(where: { $0.productIdentifier == productIdentifier }) {
+                print("\("购买产品") + \(productIdentifier)")
                 let payment = SKPayment(product: product)
                 SKPaymentQueue.default().add(payment)
             } else {
                 // 未找到匹配的产品
+                print("未找到匹配的产品")
+                let tempProductIdentifier = productIdentifier
+                self.fetchProducts(completion: { [unowned self] isSuccess, products, error in
+                    if isSuccess {
+                        print("获取产品成功")
+                        self.purchaseProduct(productIdentifier: tempProductIdentifier, completion: completion)
+                    } else {
+                        print("获取产品失败")
+                    }
+                })
             }
         } else {
-            // 用户无法进行内购
+            print("用户无法进行内购")
         }
     }
-    
 }
 
 extension KMInAppPurchaseManager: SKProductsRequestDelegate {
     func productsRequest(_ request: SKProductsRequest, didReceive response: SKProductsResponse) {
-        var products: [KMProduct] = []
-        for product in response.products {
-            let item = product as? KMProduct ?? KMProduct()
-            products.append(item)
-        }
-        availableProducts = products
+        availableProducts = response.products
+        self.request?.cancel()
+        self.request = nil
         // 处理产品信息
         guard let callBack = self.fetchProductCompletion else { return }
         
@@ -114,21 +124,32 @@ extension KMInAppPurchaseManager: SKProductsRequestDelegate {
     
     func request(_ request: SKRequest, didFailWithError error: Error) {
         // 处理请求错误
+        print("\("用户无法进行内购") + \(error)")
     }
 }
 
 extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
+    func paymentQueue(_ queue: SKPaymentQueue, shouldAddStorePayment payment: SKPayment, for product: SKProduct) -> Bool {
+        // Handle the purchase intent here
+        // Return true to allow the purchase or false to deny it
+        
+        return true
+    }
+    
     func paymentQueue(_ queue: SKPaymentQueue, updatedTransactions transactions: [SKPaymentTransaction]) {
         for transaction in transactions {
             switch transaction.transactionState {
             case .purchased:
                 // 购买成功,进行本地二次验证
+                print("购买成功,进行本地二次验证")
                 validatePurchase(transaction: transaction)
             case .failed:
                 // 购买失败,处理错误
+                print("购买失败,处理错误")
                 handleError(transaction: transaction)
             case .restored:
                 // 恢复购买,进行本地二次验证
+                print("恢复购买,进行本地二次验证")
                 validatePurchase(transaction: transaction)
             default:
                 break
@@ -136,53 +157,16 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
         }
     }
         
-    func validatePurchase(transaction: SKPaymentTransaction) {
-        // 获取购买凭证
-        if let receiptURL = Bundle.main.appStoreReceiptURL,
-           let receiptData = try? Data(contentsOf: receiptURL) {
-            // 进行本地二次验证
-            if let parsedReceipt = parseReceipt(receiptData: receiptData),
-               let purchase = parsedReceipt["in_app"] as? [[String: Any]],
-               let matchingPurchase = purchase.first(where: { $0["transaction_id"] as? String == transaction.transactionIdentifier }) {
-                // 验证购买凭证,进行相应的处理
-                if verifyPurchase(purchase: matchingPurchase) {
-                    // 购买凭证验证成功,进行购买成功的逻辑
-                    SKPaymentQueue.default().finishTransaction(transaction)
-                    // ...
-                } else {
-                    // 购买凭证验证失败,进行购买失败的逻辑
-                    SKPaymentQueue.default().finishTransaction(transaction)
-                    // ...
-                }
-            }
-        }
-    }
-    
-//https://sandbox.itunes.apple.com/verifyReceipt
-//"https://buy.itunes.apple.com/verifyReceipt"
-    
 //    func validatePurchase(transaction: SKPaymentTransaction) {
 //        // 获取购买凭证
 //        if let receiptURL = Bundle.main.appStoreReceiptURL,
 //           let receiptData = try? Data(contentsOf: receiptURL) {
-//            // 将购买凭证发送到服务器进行验证
-//            sendReceiptToServer(receiptData: receiptData, transaction: transaction)
-//        }
-//    }
-//
-//    func sendReceiptToServer(receiptData: Data, transaction: SKPaymentTransaction) {
-//        // 构建请求
-//        let url = URL(string: "https://your-server.com/verify-receipt")!
-//        var request = URLRequest(url: url)
-//        request.httpMethod = "POST"
-//        request.httpBody = receiptData
-//
-//        // 发送请求
-//        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
-//            if let data = data {
-//                // 处理服务器返回的验证结果
-//                let verificationResult = self.parseVerificationResult(data: data)
-//                if verificationResult {
+//            // 进行本地二次验证
+//            if let parsedReceipt = parseReceipt(receiptData: receiptData),
+//               let purchase = parsedReceipt["in_app"] as? [[String: Any]],
+//               let matchingPurchase = purchase.first(where: { $0["transaction_id"] as? String == transaction.transactionIdentifier }) {
+//                // 验证购买凭证,进行相应的处理
+//                if verifyPurchase(purchase: matchingPurchase) {
 //                    // 购买凭证验证成功,进行购买成功的逻辑
 //                    SKPaymentQueue.default().finishTransaction(transaction)
 //                    // ...
@@ -191,20 +175,69 @@ extension KMInAppPurchaseManager: SKPaymentTransactionObserver {
 //                    SKPaymentQueue.default().finishTransaction(transaction)
 //                    // ...
 //                }
-//            } else if let error = error {
-//                // 处理网络请求错误
-//                // ...
 //            }
 //        }
-//        task.resume()
 //    }
     
-//    func parseVerificationResult(data: Data) -> Bool {
-//        // 解析服务器返回的验证结果
-//        // 如果验证成功返回 true,否则返回 false
-//        // ...
-//        return true
-//    }
+//https://sandbox.itunes.apple.com/verifyReceipt
+//"https://buy.itunes.apple.com/verifyReceipt"
+    
+    func validatePurchase(transaction: SKPaymentTransaction) {
+        // 获取购买凭证
+        if let receiptURL = Bundle.main.appStoreReceiptURL,
+           let receiptData = try? Data(contentsOf: receiptURL) {
+            // 将购买凭证发送到服务器进行验证
+            sendReceiptToServer(receiptData: receiptData, transaction: transaction)
+        }
+    }
+//
+    func sendReceiptToServer(receiptData: Data, transaction: SKPaymentTransaction) {
+        // 构建请求
+//        let url = URL(string: "https://your-server.com/verify-receipt")!
+//        let requestContents = ["receipt-data" : receipt.base64EncodedString()]
+        let receiptString = receiptData.base64EncodedString(options: [])
+        let requestContents: [String: Any] = ["receipt-data": receiptString,
+                                              "password": kStoreLiteKitSecret]
+        guard let requestData = try? JSONSerialization.data(withJSONObject: requestContents, options: []) else {
+            // 交易凭证为空验证失败
+            return
+        }
+        
+        let url = URL(string: "https://sandbox.itunes.apple.com/verifyReceipt")!
+        var request = URLRequest(url: url)
+        request.httpMethod = "POST"
+        request.httpBody = requestData
+
+        // 发送请求
+        let task = URLSession.shared.dataTask(with: request) { (data, response, error) in
+            if let data = data {
+                // 处理服务器返回的验证结果
+                let verificationResult = self.parseVerificationResult(data: data)
+                if verificationResult {
+                    let receipt = try? JSONSerialization.jsonObject(with: data, options: [])
+                    print(receipt)
+                    // 购买凭证验证成功,进行购买成功的逻辑
+                    SKPaymentQueue.default().finishTransaction(transaction)
+                    // ...
+                } else {
+                    // 购买凭证验证失败,进行购买失败的逻辑
+                    SKPaymentQueue.default().finishTransaction(transaction)
+                    // ...
+                }
+            } else if let error = error {
+                // 处理网络请求错误
+                // ...
+            }
+        }
+        task.resume()
+    }
+    
+    func parseVerificationResult(data: Data) -> Bool {
+        // 解析服务器返回的验证结果
+        // 如果验证成功返回 true,否则返回 false
+        // ...
+        return true
+    }
     
     func handleError(transaction: SKPaymentTransaction) {
         // 处理购买失败的逻辑

+ 15 - 11
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/KMPurchaseManager.swift

@@ -6,6 +6,10 @@
 //
 
 import Cocoa
+        
+#if VERSION_DMG
+
+#endif
 
 typealias KMPurchaseCompletion = (_ isSuccess: Bool, _ error: String) -> Void
 typealias KMPurchaseFetchProductCompletion = (_ isSuccess: Bool, _ products: Array<Any>, _ error: String?) -> Void
@@ -16,14 +20,14 @@ class KMPurchaseManager: NSObject {
     override init() {
         super.init()
         
-        self.fetchProducts { isSuccess, products, error in
-            if isSuccess {
-                print("获取产品成功")
-            } else {
-                print("获取产品失败")
-            }
-            print(products)
-        }
+//        self.fetchProducts { isSuccess, products, error in
+//            if isSuccess {
+//                print("获取产品成功")
+//            } else {
+//                print("获取产品失败")
+//            }
+//            print(products)
+//        }
     }
     
     func fetchProducts(completeion: @escaping KMPurchaseFetchProductCompletion) {
@@ -39,16 +43,16 @@ class KMPurchaseManager: NSObject {
 #endif
     }
     
-    func purchaseProduct(productIdentifier: String, completion: KMPurchaseCompletion) {
+    func purchaseProduct(productIdentifier: String, completion: @escaping KMPurchaseCompletion) {
         print("准备订阅中")
 #if VERSION_FREE
         print("正在订阅中AppStore")
-        KMInAppPurchaseManager.manager.purchaseProduct(productIdentifier: "", completion: completion)
+        KMInAppPurchaseManager.manager.purchaseProduct(productIdentifier: productIdentifier, completion: completion)
 #endif
         
 #if VERSION_DMG
         print("正在订阅中DMG")
-        KMDMGPurchaseManager.manager.purchaseProduct(productIdentifier: "", completion: completion)
+        KMDMGPurchaseManager.manager.purchaseProduct(productIdentifier: productIdentifier, completion: completion)
 #endif
     }
 }

+ 1 - 1
PDF Office/PDF Master/Class/KMLightMember/InAppPurchase/Model/KMProduct.swift

@@ -8,6 +8,6 @@
 import Cocoa
 import StoreKit
 
-class KMProduct: SKProduct {
+class KMProduct: NSObject {
 
 }