Procházet zdrojové kódy

Merge branch 'develop_PDFReaderPro_V4.7.0' of git.kdan.cc:Mac_PDF/PDF_Office into develop_PDFReaderPro_V4.7.0

tangchao před 3 měsíci
rodič
revize
3b7b7c369c

+ 103 - 53
PDF Office/PDF Master/Class/Purchase/DMG/KMPurchaseEmbeddedWindowController.swift

@@ -1626,7 +1626,54 @@ class KMPurchaseEmbeddedWindowController: NSWindowController {
                              discountFlag: getOneTimePurchaseDiscountFlag(),
                              couponCode: couponCode,
                              num: pdfCount) { success, result in
-                //写定时器查询结果
+                if success {
+                    if let dataInfo = result {
+                        self.orderID = result?.createOrder?.orderId ?? ""
+                        let page_pay_url = result?.createOrder?.payHref ?? ""
+                        let qrCode = result?.createOrder?.qrCode ?? ""
+                        if self.paymentMethod == .paddle || self.paymentMethod == .paypal {
+                            if self.orderID == "" || page_pay_url == "" {
+                                DispatchQueue.main.async {
+                                    let alert = NSAlert()
+                                    alert.alertStyle = .critical
+                                    alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
+                                    alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
+                                    alert.runModal()
+                                }
+                            } else {
+                                self.openWebView(page_pay_url)
+                            }
+                        } else if self.paymentMethod == .wxpay || self.paymentMethod == .alipay {
+                            if self.orderID == "" || qrCode == "" {
+                                DispatchQueue.main.async {
+                                    let alert = NSAlert()
+                                    alert.alertStyle = .critical
+                                    alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
+                                    alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
+                                    alert.runModal()
+                                }
+                            } else {
+                                self.scanCode(qrCode)
+                            }
+                        }
+                    } else {
+                        DispatchQueue.main.async {
+                            let alert = NSAlert()
+                            alert.alertStyle = .critical
+                            alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
+                            alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
+                            alert.runModal()
+                        }
+                    }
+                } else {
+                    DispatchQueue.main.async {
+                        let alert = NSAlert()
+                        alert.alertStyle = .critical
+                        alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
+                        alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
+                        alert.runModal()
+                    }
+                }
             }
         } else {
             var price = _product_Info.price
@@ -1666,44 +1713,43 @@ class KMPurchaseEmbeddedWindowController: NSWindowController {
                                    discountFlag: getPurchaseDiscountFlag(),
                                    couponCode: couponCode,
                                    num: pdfCount) { success, result in
-                //写定时器查询结果
+                if success {
+                    if let dataInfo = result {
+                        self.orderID = result?.createOrder?.orderId ?? ""
+                        let page_pay_url = result?.createOrder?.payHref ?? ""
+                        if self.orderID == "" || page_pay_url == "" {
+                            DispatchQueue.main.async {
+                                let alert = NSAlert()
+                                alert.alertStyle = .critical
+                                alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
+                                alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
+                                alert.runModal()
+                            }
+                        } else {
+                            if self.paymentMethod == .paddle || self.paymentMethod == .paypal {
+                                self.openWebView(page_pay_url)
+                            }
+                        }
+                    } else {
+                        DispatchQueue.main.async {
+                            let alert = NSAlert()
+                            alert.alertStyle = .critical
+                            alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
+                            alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
+                            alert.runModal()
+                        }
+                    }
+                } else {
+                    DispatchQueue.main.async {
+                        let alert = NSAlert()
+                        alert.alertStyle = .critical
+                        alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
+                        alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
+                        alert.runModal()
+                    }
+                }
             }
         }
-//        self._buyProduct(productID, count: pdfCount, discountId: couponCode, payment: paymentMethod, license: licenseCode, email: emailTextField.stringValue) { [weak self] info, err in
-//            guard let self = self else { return }
-//            if err != nil {
-//                DispatchQueue.main.async {
-//                    let alert = NSAlert()
-//                    alert.alertStyle = .critical
-//                    alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
-//                    alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
-//                    alert.runModal()
-//                }
-//                return
-//            }
-//            if let dataInfo = info {
-//                self.orderID = dataInfo["trade_no"] as! String
-//                let page_pay_url = dataInfo["page_pay_url"] as! String
-//                if self.paymentMethod == .paddle || self.paymentMethod == .paypal {
-//                    if page_pay_url != "" {
-//                        self.openWebView(page_pay_url)
-//                    }
-//                } else if self.paymentMethod == .wxpay || self.paymentMethod == .alipay {
-//                    if page_pay_url != "" {
-//                        self.scanCode(page_pay_url)
-//                    }
-//                }
-//            } else {
-//                // 数据错误
-//                DispatchQueue.main.async {
-//                    let alert = NSAlert()
-//                    alert.alertStyle = .critical
-//                    alert.messageText = NSLocalizedString("Please check if the information is wrong or the network is error.", comment: "")
-//                    alert.addButton(withTitle: NSLocalizedString("Yes", comment: ""))
-//                    alert.runModal()
-//                }
-//            }
-//        }
     }
     
     func getPurchasePaymentMethod() -> Int {
@@ -2178,6 +2224,11 @@ class KMPurchaseEmbeddedWindowController: NSWindowController {
         startPolling()
     }
     
+    private func convertBase64StringToNSImage(base64String: String) -> NSImage? {
+        // 待补充base64转NSImage方法
+        return nil
+    }
+    
     private func scanCode(_ urlPath: String) -> Void {
         DispatchQueue.main.async { [weak self] in
             guard let self = self else { return }
@@ -2190,21 +2241,7 @@ class KMPurchaseEmbeddedWindowController: NSWindowController {
                 self.scanLabel.stringValue = NSLocalizedString("Scan QR Code with Alipay", comment: "")
                 self.payTypeImageView.image = NSImage(named: "EmbeddedPayment28")
             }
-
-            if let url = URL(string: urlPath) {
-                URLSession.shared.dataTask(with: url) { data, response, error in
-                    if let data = data, let image = NSImage(data: data) {
-                        DispatchQueue.main.async {
-                            self.qrCodeImageView.image = image
-                            self.startPolling()
-                        }
-                    } else {
-                        print("Failed to load image or there was an error: \(error?.localizedDescription ?? "Unknown error")")
-                    }
-                }.resume()
-            } else {
-                print("Invalid URL.")
-            }
+            self.payTypeImageView.image = convertBase64StringToNSImage(base64String: urlPath)
         }
     }
     
@@ -2290,6 +2327,19 @@ class KMPurchaseEmbeddedWindowController: NSWindowController {
         }
     }
     
+    private func pollingResultNew() -> Void {
+        DispatchQueue.main.asyncAfter(deadline: .now() + 1) { [weak self] in
+            guard let self = self else { return }
+            if self.orderID == "" { return }
+            KMMemberCenterManager.manager.getStateByOrderId(orderId: self.orderID) { success, info in
+                if (success) {
+                    NotificationCenter.default.post(name: NSNotification.Name(rawValue: "KMIAPSubscriptionLoadedNotification"), object: nil)
+                    self.stopPolling();
+                }
+            }
+        }
+    }
+    
     private func startPolling() {
         timer = Timer(timeInterval: interval, repeats: false) { [weak self] _ in
             guard let self = self else { return }
@@ -2309,7 +2359,7 @@ class KMPurchaseEmbeddedWindowController: NSWindowController {
         print("Performing polling task \(pollCount + 1)/\(maxPolls)")
         
         pollCount += 1
-        pollingResult()
+        pollingResultNew()
     }
     
     private func stopPolling() {

+ 42 - 5
PDF Office/PDF Master/Class/Purchase/DMG/Verification/KMVerificationMessageViewController.m

@@ -178,7 +178,7 @@ NSPopoverDelegate>
     self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Upgrade to Pro", nil)];
     [self.button setTitleColor:[NSColor whiteColor]];
     self.officeButton.layer.backgroundColor = [NSColor clearColor].CGColor;
-    self.officeButton.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"PDF To Office", nil)];
+    self.officeButton.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"PDF to Office", nil)];
     [self.officeButton setTitleColor:[NSColor whiteColor]];
 
     self.aiLabel.stringValue = NSLocalizedStringFromTable(@"Free Use 1-Year AI Tools", @"MemberCenterLocalizable", nil);
@@ -351,18 +351,31 @@ NSPopoverDelegate>
             }
         } else if (type == KMUserScenarioTypeLite_type11) {
             self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Upgrade", nil)];
+        } else if (type == KMUserScenarioTypePro_type3) {
+            if([KMMemberInfo shared].vip_status == 2) {
+                self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedStringFromTable(@"Renew now",@"MemberCenterLocalizable", nil)];
+            } else {
+                self.button.title = [NSString stringWithFormat:@" %@ ",NSLocalizedString(@"Upgrade", nil)];
+            }
         }
 #if !VERSION_FREE
-//        VerificationManager.default().needUpgradeLicense
-        if ([[VerificationManager defaultManager] needUpgradeLicense]) {
+        BOOL isNoSupportMemberUpgrade = YES;
+         if ([KMMemberInfo shared].vip_status == 1) { //订阅+永久
+             isNoSupportMemberUpgrade = NO;
+        }
+        
+        if (![IAPProductsManager defaultManager].isAvailableAdvancedPDFToOffice && isNoSupportMemberUpgrade) {
             [self.officeButton setTitleColor:[NSColor whiteColor]];
-            self.officeButton.hidden = YES;
-            self.officeImg.hidden = YES;
+            self.officeButton.hidden = NO;
+            self.officeImg.hidden = NO;
             self.officeButton.frame = CGRectMake(totalWidth, kbottomGap, officeWidth, self.view.frame.size.height -2 *kbottomGap);
             CGRect officeRect = self.officeButton.frame;
             self.officeImg.frame = officeRect;
             totalWidth+=CGRectGetWidth(self.officeButton.bounds);
             totalWidth+=4;
+        } else {
+            self.officeButton.hidden = YES;
+            self.officeImg.hidden = YES;
         }
 #else
         self.officeButton.hidden = YES;
@@ -437,6 +450,30 @@ NSPopoverDelegate>
                type == KMUserScenarioTypePro_type5) {
         self.button.hidden = YES;
         self.bgImg.hidden = YES;
+        
+#if !VERSION_FREE
+        BOOL isNoSupportMemberUpgrade = YES;
+         if ([KMMemberInfo shared].vip_status == 1) { //订阅+永久
+             isNoSupportMemberUpgrade = NO;
+        }
+        
+        if (![IAPProductsManager defaultManager].isAvailableAdvancedPDFToOffice && isNoSupportMemberUpgrade) {
+            [self.officeButton setTitleColor:[NSColor whiteColor]];
+            self.officeButton.hidden = NO;
+            self.officeImg.hidden = NO;
+            self.officeButton.frame = CGRectMake(totalWidth, kbottomGap, officeWidth, self.view.frame.size.height -2 *kbottomGap);
+            CGRect officeRect = self.officeButton.frame;
+            self.officeImg.frame = officeRect;
+            totalWidth+=CGRectGetWidth(self.officeButton.bounds);
+            totalWidth+=4;
+        } else {
+            self.officeButton.hidden = YES;
+            self.officeImg.hidden = YES;
+        }
+#else
+        self.officeButton.hidden = YES;
+        self.officeImg.hidden = YES;
+#endif
     }
 #endif
     

+ 8 - 4
PDF Office/PDF Master/MemberCenter/Model/KMMemberCenterManager.swift

@@ -1374,15 +1374,17 @@ class KMMemberCenterManager: NSObject {
             var thirdOrderNo = ""
             var orderId = ""
             var payHref = ""
+            var qrCode = ""
             if requestCode == 200 {
                 if let token = result["thirdOrderNo"] { thirdOrderNo = token as? String ?? thirdOrderNo}
                 if let token = result["orderId"] { orderId = token as? String ?? orderId}
                 if let token = result["payHref"] { payHref = token as? String ?? payHref}
-                let products = KMCreateOrderModel(thirdOrderNo: thirdOrderNo, orderId: orderId, payHref: payHref)
+                if let token = result["qrcode"] { qrCode = token as? String ?? qrCode}
+                let products = KMCreateOrderModel(thirdOrderNo: thirdOrderNo, orderId: orderId, payHref: payHref, qrCode: qrCode)
                 let result1 = KMMemberProductResult(code: requestCode, msg: message, createOrder: products)
                 complete(true, result1)
             } else {
-                let result1 = KMMemberProductResult(code: requestCode, msg: message, createOrder: KMCreateOrderModel(thirdOrderNo: thirdOrderNo, orderId: orderId, payHref: payHref))
+                let result1 = KMMemberProductResult(code: requestCode, msg: message, createOrder: KMCreateOrderModel(thirdOrderNo: thirdOrderNo, orderId: orderId, payHref: payHref, qrCode: qrCode))
                 complete(false, result1)
             }
         }
@@ -1433,15 +1435,17 @@ class KMMemberCenterManager: NSObject {
             var thirdOrderNo = ""
             var orderId = ""
             var payHref = ""
+            var qrCode = ""
             if requestCode == 200 {
                 if let token = result["thirdOrderNo"] { thirdOrderNo = token as? String ?? thirdOrderNo}
                 if let token = result["orderId"] { orderId = token as? String ?? orderId}
                 if let token = result["payHref"] { payHref = token as? String ?? payHref}
-                let products = KMCreateOrderModel(thirdOrderNo: thirdOrderNo, orderId: orderId, payHref: payHref)
+                if let token = result["qrcode"] { qrCode = token as? String ?? qrCode}
+                let products = KMCreateOrderModel(thirdOrderNo: thirdOrderNo, orderId: orderId, payHref: payHref, qrCode: qrCode)
                 let result1 = KMMemberProductResult(code: requestCode, msg: message, createOrder: products)
                 complete(true, result1)
             } else {
-                let result1 = KMMemberProductResult(code: requestCode, msg: message, createOrder: KMCreateOrderModel(thirdOrderNo: thirdOrderNo, orderId: orderId, payHref: payHref))
+                let result1 = KMMemberProductResult(code: requestCode, msg: message, createOrder: KMCreateOrderModel(thirdOrderNo: thirdOrderNo, orderId: orderId, payHref: payHref, qrCode: qrCode))
                 complete(false, result1)
             }
         }

+ 3 - 1
PDF Office/PDF Master/MemberCenter/Model/KMMemberProductResult.swift

@@ -187,10 +187,12 @@ class KMCreateOrderModel: NSObject {
     var thirdOrderNo    : String = ""   // 【必需】
     var orderId         : String = ""   // 【必需】
     var payHref         : String = ""   // 【必需】
-    init(thirdOrderNo: String, orderId: String, payHref: String) {
+    var qrCode          : String = ""   // 【必需】
+    init(thirdOrderNo: String, orderId: String, payHref: String, qrCode: String) {
         self.thirdOrderNo = thirdOrderNo
         self.orderId = orderId
         self.payHref = payHref
+        self.qrCode = qrCode
     }
 }
 

+ 7 - 2
PDF Office/PDF Master/MemberCenter/ViewController/KMUserInfoViewController.swift

@@ -244,10 +244,15 @@ class KMUserInfoViewController: NSViewController {
             buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
         }  else if KMMemberInfo.shared.userScenarioType == .lite_type5 ||
                     KMMemberInfo.shared.userScenarioType == .pro_type1 ||
-                    KMMemberInfo.shared.userScenarioType == .pro_type3 ||
                     KMMemberInfo.shared.userScenarioType == .pro_type4 {
             buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
-        } else if KMMemberInfo.shared.userScenarioType == .lite_type7 ||
+        }  else if KMMemberInfo.shared.userScenarioType == .pro_type3 {
+            if(KMMemberInfo.shared.vip_status == 2) {
+                buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")
+            } else {
+                buyNow1Label.stringValue = NSLocalizedString("Upgrade Now", tableName: "MemberCenterLocalizable", comment: "")
+            }
+        }  else if KMMemberInfo.shared.userScenarioType == .lite_type7 ||
                     KMMemberInfo.shared.userScenarioType == .lite_type8 ||
                     KMMemberInfo.shared.userScenarioType == .lite_type13 {
             buyNow1Label.stringValue = NSLocalizedString("Renew now", tableName: "MemberCenterLocalizable", comment: "")