123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622 |
- //
- // KMPurchaseEmbeddedWindowController.swift
- // PDF Reader Pro
- //
- // Created by wanjun on 2024/8/29.
- //
- import Cocoa
- #if VERSION_DMG
- // paypal alipay wxpay paddle
- @objc enum KMPaymentType: UInt32 {
- case paypal = 0
- case paddle
- case wxpay
- case alipay
- }
- @objc enum KMDMGProductType: UInt32 {
-
- case advanced_annual_subscription_trail = 0 // 全平台高级版年订阅 99.9 美金,带免费试用
- case advanced_annual_subscription // 全平台高级版年订阅 99.9 美金
- case advanced_annual_subscription_blackFive // 全平台高级版年订阅 99.9 美金,黑五订单,优惠价格不为空
-
- case standard_annual_subscription // 全平台标准版年订阅 79.9 美金
-
- case advanced_permanent // Mac & Win 双平台高级永久 119.99 美金
- case advanced_permanent_blackFive // Mac & Win 双平台高级永久 119.99 美金,黑五订单,优惠价格不为空
-
- case ai_subscription_year_trail // AI 年订阅 125.99 美金,带免费试用
- case ai_subscription_month // AI 月订阅 14.99 美金
- }
- class KMPurchaseEmbeddedWindowController: NSWindowController {
-
- @IBOutlet weak var mainBox: NSBox!
-
- @IBOutlet weak var yourOrderLabel: NSTextField!
-
- @IBOutlet weak var pdfReaderProLabel: NSTextField!
- @IBOutlet weak var prmiumLabel: NSTextField!
- @IBOutlet weak var oneLicenseLabel: NSTextField!
- @IBOutlet weak var removeButton1: NSButton! // 减少按钮1
- @IBOutlet weak var addButton1: NSButton! // 增加按钮1
- @IBOutlet weak var amountTextField1: NSTextField! // 数目1
- @IBOutlet weak var originalPriceLabel1: NSTextField! // 原价
- @IBOutlet weak var discountPriceLabel1: NSTextField! // 折扣
-
- @IBOutlet weak var usualAddonView: NSView!
- @IBOutlet weak var usualAddCountView: NSView!
-
- @IBOutlet weak var aiAddOnView: NSView!
- @IBOutlet weak var aiAddOnButton: NSButton!
- @IBOutlet weak var aiAddOnLabel: NSTextField!
- @IBOutlet weak var IndividualLabel: NSTextField!
- @IBOutlet weak var removeButton2: NSButton! // 减少按钮2
- @IBOutlet weak var addButton2: NSButton! // 增加按钮2
- @IBOutlet weak var amountTextField2: NSTextField! // 数目2
- @IBOutlet weak var amountView2: NSView!
- @IBOutlet weak var originalPriceLabel2: NSTextField! // 原价
- @IBOutlet weak var discountPriceLabel2: NSTextField! // 折扣
- @IBOutlet weak var aiAddOnButton1: NSButton!
-
- @IBOutlet weak var extendedView: NSView!
- @IBOutlet weak var extendedButton: NSButton!
- @IBOutlet weak var extendedLabel: NSTextField!
- @IBOutlet weak var extendedImageView: NSImageView!
- @IBOutlet weak var accessLabel: NSTextField!
- @IBOutlet weak var removeButton3: NSButton! // 减少按钮3
- @IBOutlet weak var addButton3: NSButton! // 增加按钮3
- @IBOutlet weak var amountTextField3: NSTextField! // 数目3
- @IBOutlet weak var amountView3: NSView!
- @IBOutlet weak var originalPriceLabel3: NSTextField! // 原价
- @IBOutlet weak var discountPriceLabel3: NSTextField! // 折扣
- @IBOutlet weak var extendedButton1: NSButton!
-
- @IBOutlet weak var couponView: NSView!
- @IBOutlet weak var couponButton: NSButton!
- @IBOutlet weak var couponBox: NSBox!
- @IBOutlet weak var coupomTextField: NSTextField!
- @IBOutlet weak var couponClearButton: NSButton!
- @IBOutlet weak var applyBox: NSBox!
- @IBOutlet weak var applyButton: NSButton!
- @IBOutlet weak var coupomErrorLabel: NSTextField!
- @IBOutlet weak var coupomErrorTopLayout: NSLayoutConstraint!
-
- @IBOutlet weak var lastPriceLabel: NSTextField!
- @IBOutlet weak var lastPriceLabel1: NSTextField!
- @IBOutlet weak var discountView: NSView!
- @IBOutlet weak var discountLabel: NSTextField!
- @IBOutlet weak var discountLabel1: NSTextField!
- @IBOutlet weak var paySumLabel: NSTextField!
- @IBOutlet weak var paySumLabel1: NSTextField!
- @IBOutlet weak var discountLayoutConstraint: NSLayoutConstraint!
-
- @IBOutlet weak var privacyLabel: NSTextField!
-
- @IBOutlet weak var billInformationLabel: NSTextField!
-
- @IBOutlet weak var licenseCodeView: NSView!
- @IBOutlet weak var licenseCodeLabel: NSTextField!
- @IBOutlet weak var licenseCodeBox: NSBox!
- @IBOutlet weak var licenseCodeTextField: NSTextField!
- @IBOutlet weak var notFoundButton: NSButton!
- @IBOutlet weak var licenseCodeTopLayout: NSLayoutConstraint!
- @IBOutlet weak var licenseCodeErrorView: NSView!
- @IBOutlet weak var licenseCodeErrorLabel: NSTextField!
- @IBOutlet weak var licenseCodeErrorTopLayout: NSLayoutConstraint!
-
- @IBOutlet weak var emailLabel: NSTextField!
- @IBOutlet weak var emailTextField: NSTextField!
- @IBOutlet weak var emailBox: NSBox!
- @IBOutlet weak var errorView: NSView!
- @IBOutlet weak var errorLabel: NSTextField!
- @IBOutlet weak var errorLabelTopLayout: NSLayoutConstraint!
-
- @IBOutlet weak var paymentMethodLabel: NSTextField!
- @IBOutlet weak var paypalButton: NSButton!
- @IBOutlet weak var cardButton: NSButton!
- @IBOutlet weak var wechatPayButton: NSButton!
- @IBOutlet weak var alipayButton: NSButton!
- @IBOutlet weak var wechatPayButton2: NSButton!
-
- @IBOutlet weak var payBox: NSBox!
- @IBOutlet weak var payBoxHeight: NSLayoutConstraint!
- @IBOutlet weak var payExplainLabel: NSTextField!
-
- @IBOutlet var paypalView: NSView!
- @IBOutlet weak var paypalBox: NSBox!
- @IBOutlet weak var paypalBuyNowLabel: NSTextField!
-
- @IBOutlet var cardView: NSView!
- @IBOutlet var paddleView: NSView!
- @IBOutlet weak var paddleButton: NSButton!
- @IBOutlet weak var paddlePopUpButton: KMPopUpButton!
- @IBOutlet weak var paddleBox: NSBox!
- @IBOutlet weak var paddleTextField: NSTextField!
-
- @IBOutlet var weChatPayView: NSView!
- @IBOutlet weak var weChatBox: NSBox!
- @IBOutlet weak var weChatButton: NSButton!
-
- @IBOutlet var payResult: NSView!
- @IBOutlet weak var scanLabel: NSTextField!
- @IBOutlet weak var qrCodeImageView: NSImageView!
- @IBOutlet weak var payTypeImageView: NSImageView!
- @IBOutlet weak var successfullyView: NSView!
- @IBOutlet weak var purchasedLabel: NSTextField!
- @IBOutlet weak var successfullyLabel: NSTextField!
- @IBOutlet weak var imageBottomLayout: NSLayoutConstraint!
- @IBOutlet weak var image2BottomLayout: NSLayoutConstraint!
-
- private var _product_code : String = ""
- private var _dmgProductType: KMDMGProductType = .advanced_annual_subscription_trail
- private var _product_Info: KMListingProductsModel = KMListingProductsModel(id: "23", productName: "PDF Reader Pro Advanced - Annual Plan", price: NSNumber(value: 99.99), maxDeviceNum: 4, displayPrice: NSNumber(value: 0.0), levels: "3", platforms: "Windows,Android,Mac,iOS", productLineId: 1, paymentModel: 1, cycle: 4, cnyPrice: NSNumber(value: 0), displayCnyPrice: NSNumber(value: 0.0), upgradePrice: NSNumber(value: 0.0), code: "advanced-annual-subscription-trail")
- private var pdfCount: Int = 1
- private var _paymentMethod: KMPaymentType = .paypal
- private var _productType: ProductType = .ipaConvert
- private var productID: String = "com.brother.pdfreaderpro.mac.product_2"
- private var originalProductID: String = "com.brother.pdfreaderpro.mac.product_1"
- var couponCode: String = "" //优惠卷
- private var discountAmount: String = "" // 优惠金额
- private var discountScale: String = "" // 优惠比例
- private var orderID: String = "" // 订单ID
-
- private var timer: Timer?
- private var pollCount = 0
- private let maxPolls = 18
- private let interval: TimeInterval = 5.0
- private var _activityAlertViewController: KMActivityALertViewController?
- private let countryKeys = [
- "Afghanistan", "Aland Islands", "Albania", "Algeria", "American Samoa",
- "Andorra", "Angola", "Anguilla", "Antigua and Barbuda", "Argentina",
- "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Bahamas",
- "Bahrain", "Bangladesh", "Barbados", "Belarus", "Belgium", "Belize",
- "Benin", "Bermuda", "Bhutan", "Bolivia", "Bonaire, Sint Eustatius and Saba",
- "Bosnia and Herzegovina", "Botswana", "Bouvet Island", "Brazil",
- "Brit. Indian Ocean", "British Virgin Islands", "Brunei Darussalam", "Bulgaria",
- "Burkina Faso", "Burundi", "Cambodia", "Cameroon", "Canada", "Cape Verde",
- "Cayman Islands", "Central African Republic", "Chad", "Chile", "China",
- "Christmas Island", "Cocos Islands", "Colombia", "Comoros", "Congo",
- "Cook Islands", "Costa Rica", "Cote D'Ivoire", "Croatia", "Curaçao", "Cyprus",
- "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic",
- "Ecuador", "Egypt", "El Salvador", "Equatorial Guinea", "Eritrea", "Estonia",
- "Ethiopia", "Falkland Islands", "Faroe Islands", "Fiji", "Finland", "France",
- "French Guiana", "French Polynesia", "French Southern Terr.", "Gabon", "Gambia",
- "Georgia", "Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada",
- "Guadeloupe", "Guam", "Guatemala", "Guernsey", "Guinea", "Guinea-Bissau",
- "Guyana", "Haiti", "Heard/ Mcdonald Islands", "Holy See/ Vatican City", "Honduras",
- "Hong Kong", "Hungary", "Iceland", "India", "Indonesia", "Iraq", "Ireland",
- "Isle of Man", "Israel", "Italy", "Jamaica", "Japan", "Jersey", "Jordan",
- "Kazakhstan", "Kenya", "Kiribati", "Kuwait", "Kyrgyzstan", "Lao People's DR",
- "Latvia", "Lebanon", "Lesotho", "Liberia", "Libyan Arab Jamahiriya", "Liechtenstein",
- "Lithuania", "Luxembourg", "Macao", "Macedonia", "Madagascar", "Malawi",
- "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Martinique",
- "Mauritania", "Mauritius", "Mayotte", "Mexico", "Micronesia", "Moldova",
- "Monaco", "Mongolia", "Montenegro", "Montserrat", "Morocco", "Mozambique",
- "Myanmar", "Namibia", "Nauru", "Nepal", "Netherlands", "Netherlands Antilles",
- "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue",
- "Norfolk Island", "Northern Mariana Islands", "Norway", "Oman", "Pakistan",
- "Palau", "Palestinian Territory", "Panama", "Papua New Guinea", "Paraguay",
- "Peru", "Philippines", "Pitcairn", "Poland", "Portugal", "Puerto Rico", "Qatar",
- "Republic of Serbia", "Reunion", "Romania", "Russian Federation", "Rwanda",
- "S. Georgia/ Sandwich Islands", "Saint Helena", "Saint Kitts and Nevis",
- "Saint Lucia", "Saint Martin", "Saint Pierre and Miquelon", "Saint Vincent/ Grenadines",
- "Samoa", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal",
- "Seychelles", "Sierra Leone", "Singapore", "Slovakia", "Slovenia", "Solomon Islands",
- "Somalia", "South Africa", "South Korea", "Spain", "Sri Lanka", "Sudan",
- "Suriname", "Svalbard and Jan Mayen", "Swaziland", "Sweden", "Switzerland", "Taiwan",
- "Tajikistan", "Tanzania", "Thailand", "Timor-Leste", "Togo", "Tokelau", "Tonga",
- "Trinidad and Tobago", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands",
- "Tuvalu", "U.S. Virgin Islands", "Uganda", "Ukraine", "United Arab Emirates",
- "United Kingdom", "United States", "United States (M.O.I.)", "Uruguay", "Uzbekistan",
- "Vanuatu", "Venezuela", "Viet Nam", "Wallis and Futuna", "Western Sahara", "Yemen",
- "Zambia", "Zimbabwe"
- ]
- private let countryAbbreviationValues = [
- "AF", "AX", "AL", "DZ", "AS", "AD", "AO", "AI", "AG", "AR", "AM", "AW", "AU", "AT", "AZ", "BS", "BH", "BD", "BB",
- "BY", "BE", "BZ", "BJ", "BM", "BT", "BO", "BQ", "BA", "BW", "BV", "BR", "IO", "VG", "BN", "BG", "BF", "BI", "KH",
- "CM", "CA", "CV", "KY", "CF", "TD", "CL", "CN", "CX", "CC", "CO", "KM", "CG", "CK", "CR", "CI", "HR", "CW", "CY",
- "CZ", "DK", "DJ", "DM", "DO", "EC", "EG", "SV", "GQ", "ER", "EE", "ET", "FK", "FO", "FJ", "FI", "FR", "GF", "PF",
- "TF", "GA", "GM", "GE", "DE", "GH", "GI", "GR", "GL", "GD", "GP", "GU", "GT", "GG", "GN", "GW", "GY", "HT", "HM",
- "VA", "HN", "HK", "HU", "IS", "IN", "ID", "IQ", "IE", "IM", "IL", "IT", "JM", "JP", "JE", "JO", "KZ", "KE", "KI",
- "KW", "KG", "LA", "LV", "LB", "LS", "LR", "LY", "LI", "LT", "LU", "MO", "MK", "MG", "MW", "MY", "MV", "ML", "MT",
- "MH", "MQ", "MR", "MU", "YT", "MX", "FM", "MD", "MC", "MN", "ME", "MS", "MA", "MZ", "MM", "NA", "NR", "NP", "NL",
- "AN", "NC", "NZ", "NI", "NE", "NG", "NU", "NF", "MP", "NO", "OM", "PK", "PW", "PS", "PA", "PG", "PY", "PE", "PH",
- "PN", "PL", "PT", "PR", "QA", "RS", "RE", "RO", "RU", "RW", "GS", "SH", "KN", "LC", "MF", "PM", "VC", "WS", "SM",
- "ST", "SA", "SN", "SC", "SL", "SG", "SK", "SI", "SB", "SO", "ZA", "KR", "ES", "LK", "SD", "SR", "SJ", "SZ", "SE",
- "CH", "TW", "TJ", "TZ", "TH", "TL", "TG", "TK", "TO", "TT", "TN", "TR", "TM", "TC", "TV", "VI", "UG", "UA", "AE",
- "GB", "US", "UM", "UY", "UZ", "VU", "VE", "VN", "WF", "EH", "YE", "ZM", "ZW"
- ]
- private var handler: ((Int) -> Void)!
- static var currentWindowController: KMPurchaseEmbeddedWindowController!
- private var embeddedPaymentPopWC: KMEmbeddedPaymentPopWC?
- private var successfulPaymentsNumber = 0
- private var license1 = ""
- private var licenseAI1 = ""
- private var isApplyCoupon: Bool = false
-
- private var isWindowDidLoad: Bool = false
- private var isBatchProductPriceGetFinsed: Bool = false
- @objc static func currentWC(_ productInfo: KMListingProductsModel) -> KMPurchaseEmbeddedWindowController {
- if currentWindowController != nil {
- currentWindowController.product_Info = productInfo
- return currentWindowController
- } else {
- let configWC: KMPurchaseEmbeddedWindowController = KMPurchaseEmbeddedWindowController.init(windowNibName: "KMPurchaseEmbeddedWindowController")
- currentWindowController = configWC;
- currentWindowController.product_Info = productInfo
- return currentWindowController
- }
- }
-
- @objc static func currentCode(_ productCode: String) -> KMPurchaseEmbeddedWindowController {
- if currentWindowController != nil {
- currentWindowController.product_code = productCode
- return currentWindowController
- } else {
- let configWC: KMPurchaseEmbeddedWindowController = KMPurchaseEmbeddedWindowController.init(windowNibName: "KMPurchaseEmbeddedWindowController")
- currentWindowController = configWC;
- currentWindowController.product_code = productCode
- return currentWindowController
- }
- }
-
- @objc static func currentFirstTrialWC(_ productId: String) -> KMPurchaseEmbeddedWindowController {
- if currentWindowController != nil {
- currentWindowController.productID = productId
- return currentWindowController
- } else {
- let configWC: KMPurchaseEmbeddedWindowController = KMPurchaseEmbeddedWindowController.init(windowNibName: "KMPurchaseEmbeddedWindowController")
- currentWindowController = configWC;
- currentWindowController.productID = productId
- return currentWindowController
- }
- }
- override func windowDidLoad() {
- super.windowDidLoad()
- // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file.
- window?.title = ""
- window?.makeFirstResponder(nil)
-
- productType = self.productToType(productID)
- originalProductID = productID
-
- xibInitialization()
- paymentMethod = .paypal
- priceRefresh(productsModel: product_Info)
-
- confirmPayment(isConfirm: false)
- self.window?.delegate = self;
-
- isWindowDidLoad = true
- }
-
- override func close() {
- super.close()
-
- self.clearEventData()
- }
-
- // MARK: DMG Action
- func isOneTimePurchase(_ productinfo: KMListingProductsModel) -> Bool {
- //买断版本才能一次购买多个,并且购买多个时,不会自动绑定,需要在后台给自己绑定才能有会员权益
- if productinfo.paymentModel == 2 {
- return true
- }
- return false
- }
-
- func updateKMDMGProductType(_ productinfo: KMListingProductsModel) -> Void {
- switch productinfo.code {
- case "advanced-annual-subscription-trail":
- _dmgProductType = .advanced_annual_subscription_trail
- break
- case "standard-annual-subscription":
- _dmgProductType = .standard_annual_subscription
- break
- case "advanced-annual-subscription":
- _dmgProductType = .advanced_annual_subscription
- break
- case "advanced-permanent":
- _dmgProductType = .advanced_permanent
- break
- case "ai-subscription-month":
- _dmgProductType = .ai_subscription_month
- break
- case "ai-subscription-year-trail":
- _dmgProductType = .ai_subscription_year_trail
- break
- case "advanced-permanent-blackFive":
- _dmgProductType = .advanced_permanent_blackFive
- break
- case "advanced-annual-subscription-blackFive":
- _dmgProductType = .advanced_annual_subscription_blackFive
- break
- default:
- _dmgProductType = .advanced_annual_subscription_trail
- break
- }
- }
-
- func updateProduct_Info() -> Void {
- if KMMemberInfo.shared.isLogin {
- let model = KMProductModel.shared
- model.getDMGProductPriceInfosForMember(productId: product_Info.id, isEducation: 0) { [weak self] success, result in
- if success {
- guard let productResults : KMMemberProductResult = result else {
- return
- }
- guard let products : [KMListingProductsModel] = productResults.listingProducts else {
- return
- }
- guard let product : KMListingProductsModel = products.first else {
- return
- }
- self?.product_Info = product;
- for tProduct in products {
- if tProduct.id == self?.product_Info.id {
- self?.product_Info = tProduct;
- }
- }
- }
- }
- }
- }
-
- // MARK: UI
-
- private func xibInitialization() -> Void {
- yourOrderLabel.stringValue = NSLocalizedString("Your Order", comment: "")
- yourOrderLabel.textColor = NSColor(named: "KMPurchaseTitleColor")
- yourOrderLabel.font = NSFont.SFProTextBoldFont(20.0)
-
- pdfReaderProLabel.textColor = NSColor(named: "KMPurchaseTitleColor")
- pdfReaderProLabel.font = NSFont.SFProTextRegularFont(14.0)
- prmiumLabel.textColor = NSColor(named: "KMPurchaseSubTitleColor")
- prmiumLabel.font = NSFont.SFProTextRegularFont(12.0)
- oneLicenseLabel.textColor = NSColor(named: "KMPurchaseSubTitleColor")
- oneLicenseLabel.font = NSFont.SFProTextRegularFont(12.0)
- originalPriceLabel1.textColor = NSColor(named: "KMPurchaseTitleColor")
- originalPriceLabel1.font = NSFont.SFProTextRegularFont(16.0)
- discountPriceLabel1.textColor = NSColor(named: "KMPurchaseDiscountColor")
- discountPriceLabel1.font = NSFont.SFProTextRegularFont(9.0)
- refreshLicenseCodeView(isReveal: false)
- if isOneTimePurchase(product_Info) {
- usualAddCountView.isHidden = false
- } else {
- usualAddCountView.isHidden = true
- }
-
-
- oneLicenseLabel.stringValue = NSLocalizedString("and more offline. It's one time purchase.", comment: "")
- oneLicenseLabel.isHidden = true
-
- licenseCodeLabel.stringValue = NSLocalizedString("License Code", comment: "")
- licenseCodeLabel.textColor = NSColor(named: "KMPurchaseTitleColor1")
- licenseCodeLabel.font = NSFont.SFProTextRegularFont(14.0)
- licenseCodeTextField.placeholderString = NSLocalizedString("Input license code previously activated the app", comment: "")
- licenseCodeTextField.delegate = self
- licenseCodeBox.borderColor = NSColor(named: "KMPurchase_DADBDE")!
- licenseCodeBox.fillColor = NSColor(named: "KMPurchase_FFFFFF")!
- notFoundButton.title = NSLocalizedString("Not Found?", comment: "")
- notFoundButton.setTitleColor(color: NSColor(named: "KMPurchaseCouponColor")!, font: NSFont(name: "body-s-regular", size: 14))
- licenseCodeTextField.stringValue = VerificationManager.default().originLicenseCode ?? ""
- refreshLicenseCodeView(isReveal: true)
- licenseCodeErrorLabel.stringValue = NSLocalizedString("Please enter right license code. How to Retrieve License.", comment: "")
- licenseCodeErrorLabel.textColor = NSColor(named: "KMPurchaseErrorColor")
- licenseCodeErrorLabel.font = NSFont.SFProTextRegularFont(11.0)
- refreshLicenseCodeErrorView(isReveal: false)
-
- if _dmgProductType == .advanced_annual_subscription_trail {
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- let productName = product_Info.productName
- pdfReaderProLabel.stringValue = productName
- }
- if _dmgProductType == .standard_annual_subscription {
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- let productName = product_Info.productName
- pdfReaderProLabel.stringValue = productName
- }
- if _dmgProductType == .advanced_annual_subscription {
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- let productName = product_Info.productName
- pdfReaderProLabel.stringValue = productName
- }
- if _dmgProductType == .advanced_permanent {
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- let productName = product_Info.productName
- pdfReaderProLabel.stringValue = productName
- }
- if _dmgProductType == .ai_subscription_month {
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- let productName = product_Info.productName
- pdfReaderProLabel.stringValue = productName
- }
- if _dmgProductType == .ai_subscription_year_trail {
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- let productName = product_Info.productName
- pdfReaderProLabel.stringValue = productName
- }
- if _dmgProductType == .advanced_permanent_blackFive {
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- let productName = product_Info.productName
- pdfReaderProLabel.stringValue = productName
- }
- if _dmgProductType == .advanced_annual_subscription_blackFive {
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- let productName = product_Info.productName
- pdfReaderProLabel.stringValue = productName
- }
-
-
- // if productType == .ipaConvert || productType == .ipaAI {
- // aiAddOnView.isHidden = true
- // extendedView.isHidden = true
- //
- // if productType == .ipaConvert {
- // pdfReaderProLabel.stringValue = NSLocalizedString("PDF to Office", comment: "")
- // prmiumLabel.stringValue = NSLocalizedString("Export PDF to Word(.docx), Excel (.xlsx), PowerPoint(.pptx)", comment: "")
- // oneLicenseLabel.stringValue = NSLocalizedString("and more offline. It's one time purchase.", comment: "")
- // licenseCodeLabel.stringValue = NSLocalizedString("License Code", comment: "")
- // licenseCodeLabel.textColor = NSColor(named: "KMPurchaseTitleColor1")
- // licenseCodeLabel.font = NSFont.SFProTextRegularFont(14.0)
- // licenseCodeTextField.placeholderString = NSLocalizedString("Input license code previously activated the app", comment: "")
- // licenseCodeTextField.delegate = self
- // licenseCodeBox.borderColor = NSColor(named: "KMPurchase_DADBDE")!
- // licenseCodeBox.fillColor = NSColor(named: "KMPurchase_FFFFFF")!
- // notFoundButton.title = NSLocalizedString("Not Found?", comment: "")
- // notFoundButton.setTitleColor(color: NSColor(named: "KMPurchaseCouponColor")!, font: NSFont(name: "body-s-regular", size: 14))
- // licenseCodeTextField.stringValue = VerificationManager.default().originLicenseCode ?? ""
- // refreshLicenseCodeView(isReveal: true)
- // licenseCodeErrorLabel.stringValue = NSLocalizedString("Please enter right license code. How to Retrieve License.", comment: "")
- // licenseCodeErrorLabel.textColor = NSColor(named: "KMPurchaseErrorColor")
- // licenseCodeErrorLabel.font = NSFont.SFProTextRegularFont(11.0)
- // refreshLicenseCodeErrorView(isReveal: false)
- // } else if productType == .ipaAI {
- // pdfReaderProLabel.stringValue = NSLocalizedString("PDF Reader Pro AI Tools", comment: "")
- // prmiumLabel.stringValue = NSLocalizedString("50 credits for 30 days", comment: "")
- // oneLicenseLabel.stringValue = NSLocalizedString("Manually renew at USD 14.99", comment: "")
- // }
- // } else {
- // pdfReaderProLabel.stringValue = NSLocalizedString("PDF Reader Pro for Mac", comment: "")
- // if productToType(originalProductID) == .ipaPremium {
- // prmiumLabel.stringValue = NSLocalizedString("Premium", comment: "")
- // oneLicenseLabel.stringValue = NSLocalizedString("One license for one device. One time purchase.", comment: "")
- // } else if productToType(originalProductID) == .ipaPermanent {
- // prmiumLabel.stringValue = NSLocalizedString("Permanent version (with PDF to Office Pack)", comment: "")
- // oneLicenseLabel.stringValue = NSLocalizedString("One license for one device. One time purchase.", comment: "")
- // }
- // aiAddOnButton.image = NSImage(named: "EmbeddedPayment06")
- // aiAddOnLabel.stringValue = NSLocalizedString("AI Add-on", comment: "")
- // aiAddOnLabel.textColor = NSColor(named: "KMPurchaseTitleColor")
- // aiAddOnLabel.font = NSFont.SFProTextRegularFont(14.0)
- // IndividualLabel.stringValue = NSLocalizedString("Individual monthly plan. Manually renew.", comment: "")
- // IndividualLabel.textColor = NSColor(named: "KMPurchaseSubTitleColor")
- // IndividualLabel.font = NSFont.SFProTextRegularFont(12.0)
- // originalPriceLabel2.textColor = NSColor(named: "KMPurchaseTitleColor")
- // originalPriceLabel2.font = NSFont.SFProTextRegularFont(16.0)
- // discountPriceLabel2.textColor = NSColor(named: "KMPurchaseDiscountColor")
- // discountPriceLabel2.font = NSFont.SFProTextRegularFont(9.0)
- //
- // if originalProductID == "com.brother.pdfreaderpro.mac.product_3" {
- // extendedLabel.stringValue = NSLocalizedString("Extended Device Access", comment: "")
- // accessLabel.stringValue = NSLocalizedString("Get access to your plan on up to 2 devices.", comment: "")
- // extendedImageView.isHidden = false
- // } else {
- // extendedLabel.stringValue = NSLocalizedString("PDF to Office Pack", comment: "")
- // accessLabel.stringValue = NSLocalizedString("One time purchase", comment: "")
- // extendedImageView.isHidden = true
- // }
- // extendedButton.image = NSImage(named: "EmbeddedPayment06")
- // extendedLabel.textColor = NSColor(named: "KMPurchaseTitleColor")
- // extendedLabel.font = NSFont.SFProTextRegularFont(14.0)
- // accessLabel.textColor = NSColor(named: "KMPurchaseSubTitleColor")
- // accessLabel.font = NSFont.SFProTextRegularFont(12.0)
- // originalPriceLabel3.textColor = NSColor(named: "KMPurchaseTitleColor")
- // originalPriceLabel3.font = NSFont.SFProTextRegularFont(16.0)
- // discountPriceLabel3.textColor = NSColor(named: "KMPurchaseDiscountColor")
- // discountPriceLabel3.font = NSFont.SFProTextRegularFont(9.0)
- // }
- removeButton1.isEnabled = false
- amountTextField1.delegate = self
- amountTextField2.isEditable = false
- amountTextField3.isEditable = false
- amountView2.isHidden = true
- amountView3.isHidden = true
- couponButton.title = NSLocalizedString("I have a coupon?", comment: "")
- couponButton.setTitleColor(color: NSColor(named: "KMPurchaseCouponColor")!, font: NSFont.SFProTextRegularFont(14))
- coupomTextField.placeholderString = NSLocalizedString("Please enter a coupon code.", comment: "")
- applyButton.title = NSLocalizedString("Apply", comment: "")
- applyButton.setTitleColor(color: NSColor(named: "KMPurchaseApplyColor") ?? NSColor.black, font: NSFont.SFProTextRegularFont(13))
- if couponCode.count > 0 {
- coupomTextField.stringValue = couponCode
- couponButton.isHidden = true
- couponBox.isHidden = false
- couponClearButton.isHidden = false
- applyBox.isHidden = false
- } else {
- couponButton.isHidden = false
- couponBox.isHidden = true
- couponClearButton.isHidden = true
- applyBox.isHidden = true
- }
- couponBox.borderColor = NSColor(named: "KMPurchaseCouponBoxColor") ?? NSColor.gray
- couponBox.fillColor = NSColor(named: "KMPurchaseCouponBoxFillColor") ?? NSColor.gray
- applyBox.borderColor = NSColor(named: "KMPurchaseApplyColor") ?? NSColor.black
- coupomErrorLabel.textColor = NSColor(named: "KMPurchaseErrorColor")
- coupomErrorLabel.font = NSFont.SFProTextRegularFont(11.0)
- refreshCouponError(isReveal: false)
-
- lastPriceLabel.stringValue = NSLocalizedString("List Price", comment: "")
- lastPriceLabel.textColor = NSColor(named: "KMPurchaseListPriceColor")
- lastPriceLabel.font = NSFont.SFProTextRegularFont(16.0)
- discountLabel.stringValue = NSLocalizedString("Discount", comment: "")
- discountLabel.textColor = NSColor(named: "KMPurchaseListPriceColor")
- discountLabel.font = NSFont.SFProTextRegularFont(16.0)
- paySumLabel.stringValue = NSLocalizedString("Pay sum", comment: "")
- paySumLabel.textColor = NSColor(named: "KMPurchaseTitleColor1")
- paySumLabel.font = NSFont.SFProTextBoldFont(24.0)
- paySumLabel1.textColor = NSColor(named: "KMPurchaseCouponColor")
- paySumLabel1.font = NSFont.SFProTextBoldFont(24.0)
-
- privacyLabel.isEditable = false
- privacyLabel.isSelectable = true
- privacyLabel.allowsEditingTextAttributes = true
- privacyLabel.textColor = NSColor.black
- privacyLabel.font = NSFont.SFProTextRegularFont(16.0)
- let tipsString = NSLocalizedString("Are you a student or a professor? %@ / Want a volume purchase? Please %@.", comment: "")
- let specialOffer = NSLocalizedString("Get Special Offer", comment: "")
- let contactsUs = NSLocalizedString("Contact Us", comment: "")
- let fullString = String(format: tipsString, specialOffer, contactsUs)
- let attributedString = NSMutableAttributedString(string: fullString)
- // 定义链接的范围
- let specialOfferRange = (fullString as NSString).range(of: specialOffer)
- let contactsUsRange = (fullString as NSString).range(of: contactsUs)
- let linkColor = NSColor(red: 73/255.0, green: 130/255.0, blue: 230/255.0, alpha: 1.0)
- let font = NSFont.SFProTextRegularFont(16.0) // 与普通文本相同的字体
- attributedString.addAttributes([
- .foregroundColor: NSColor(named: "KMPurchase_99A6B2") as Any,
- .font: font
- ], range: (fullString as NSString).range(of: fullString))
- attributedString.addAttributes([
- .foregroundColor: linkColor,
- .link: NSLocalizedString("https://www.pdfreaderpro.com/store?mode=edu", comment: ""),
- .font: font
- ], range: specialOfferRange)
- attributedString.addAttributes([
- .foregroundColor: linkColor,
- .link: NSLocalizedString("https://www.pdfreaderpro.com/vpp-purchase-program", comment: ""),
- .font: font
- ], range: contactsUsRange)
- privacyLabel.attributedStringValue = attributedString
- billInformationLabel.stringValue = NSLocalizedString("Billing Information", comment: "")
- billInformationLabel.textColor = NSColor(named: "KMPurchaseTitleColor1")
- billInformationLabel.font = NSFont.SFProTextRegularFont(14.0)
- emailLabel.stringValue = NSLocalizedString("Email", comment: "")
- emailLabel.textColor = NSColor(named: "KMPurchaseTitleColor1")
- emailLabel.font = NSFont.SFProTextRegularFont(14.0)
- emailTextField.placeholderString = NSLocalizedString("Email to receive license code", comment: "")
- emailBox.borderColor = NSColor(named: "KMPurchase_DADBDE")!
- // emailBox.fillColor = NSColor(named: "KMPurchase_FFFFFF")!
- errorLabel.stringValue = NSLocalizedString("Please enter your email for license receiving.", comment: "")
- if VerificationManager.default().email != nil {
- var emailString = ""
- if let email = VerificationManager.default().email, email.count > 0 {
- emailString = email
- } else {
- if let subscriptionEmail = VerificationManager.default().subscriptionEmail, subscriptionEmail.count > 0 {
- emailString = subscriptionEmail
- }
- }
- emailTextField.stringValue = emailString
- }
- emailTextField.delegate = self
- errorLabel.textColor = NSColor(named: "KMPurchaseErrorColor")
- errorLabel.font = NSFont.SFProTextRegularFont(11.0)
- paymentMethodLabel.stringValue = NSLocalizedString("Payment Method", comment: "")
- paymentMethodLabel.textColor = NSColor(named: "KMPurchaseTitleColor1")
- paymentMethodLabel.font = NSFont.SFProTextRegularFont(14.0)
- wechatPayButton2.isHidden = true
-
- payExplainLabel.isEditable = false
- payExplainLabel.isSelectable = true
- payExplainLabel.allowsEditingTextAttributes = true
- payExplainLabel.textColor = NSColor.black
- payExplainLabel.font = NSFont.SFProTextRegularFont(11.0)
- let localizedString = NSLocalizedString("By submitting this order, I agree to the %@ and %@ for subscription products", comment: "")
- let privacyPolicy = NSLocalizedString("Privacy Policy", comment: "")
- let termsOfService = NSLocalizedString("Terms of Service", comment: "")
- let fullString1 = String(format: localizedString, privacyPolicy, termsOfService)
- let attributedString1 = NSMutableAttributedString(string: fullString1)
- let privacyPolicyRange = (fullString1 as NSString).range(of: privacyPolicy)
- let termsOfServiceRange = (fullString1 as NSString).range(of: termsOfService)
- let linkColor1 = NSColor(red: 73/255.0, green: 130/255.0, blue: 230/255.0, alpha: 1.0)
- let font1 = NSFont.SFProTextRegularFont(11.0) // 与普通文本相同的字体
- attributedString1.addAttributes([
- .foregroundColor: NSColor(named: "KMPurchase_99A6B2") as Any,
- .font: font1
- ], range: (fullString1 as NSString).range(of: fullString1))
- attributedString1.addAttributes([
- .foregroundColor: linkColor1,
- .link: NSLocalizedString("https://www.pdfreaderpro.com/privacy-policy", comment: ""),
- .font: font1
- ], range: privacyPolicyRange)
- attributedString1.addAttributes([
- .foregroundColor: linkColor1,
- .link: NSLocalizedString("https://www.pdfreaderpro.com/terms_of_service", comment: ""),
- .font: font1
- ], range: termsOfServiceRange)
- payExplainLabel.attributedStringValue = attributedString1
-
- paypalBuyNowLabel.stringValue = NSLocalizedString("Buy Now", comment: "")
- paypalBuyNowLabel.textColor = NSColor.white
- paypalBuyNowLabel.font = NSFont.SFProTextBoldFont(16.0)
-
- paddleButton.title = NSLocalizedString("Continue to Pay", comment: "")
- paddleButton.setTitleColor(color: NSColor.white, font: NSFont.SFProTextBoldFont(16))
- paddlePopUpButton.type = .arrowDown
- paddlePopUpButton.removeAllItems()
- paddlePopUpButton.addItems(withTitles: countryKeys)
- let preferredLanguage = Locale.preferredLanguages.first ?? "en"
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- paddlePopUpButton.selectItem(at: 45)
- } else {
- paddlePopUpButton.selectItem(at: 229)
- }
- paddlePopUpButton.wantsLayer = true
- paddlePopUpButton.layer?.backgroundColor = NSColor(named: "KMPurchase_FFFFFF")?.cgColor
- paddlePopUpButton.layer?.borderColor = NSColor(named: "KMPurchase_DADBDE")?.cgColor
- paddleBox.fillColor = NSColor(named: "KMPurchase_FFFFFF") ?? NSColor.white
- paddleBox.borderColor = NSColor(named: "KMPurchase_DADBDE") ?? NSColor.gray
- paddleTextField.placeholderString = NSLocalizedString("Postcode", comment: "")
- paddleTextField.delegate = self
-
- weChatButton.title = NSLocalizedString("Continue to Pay", comment: "")
- weChatButton.setTitleColor(color: NSColor.white, font: NSFont.SFProTextBoldFont(16))
-
- qrCodeImageView.imageScaling = .scaleProportionallyUpOrDown
- scanLabel.textColor = NSColor(named: "KMPurchase_000000")
- scanLabel.font = NSFont.SFProTextRegularFont(12)
- successfullyView.isHidden = true
- purchasedLabel.stringValue = NSLocalizedString("Purchased", comment: "")
- purchasedLabel.textColor = NSColor(named: "KMPurchase_002143")
- purchasedLabel.font = NSFont(name: "Segoe UI", size: 18.0)
- successfullyLabel.stringValue = NSLocalizedString("Successfully", comment: "")
- successfullyLabel.textColor = NSColor(named: "KMPurchase_002143")
- successfullyLabel.font = NSFont(name: "Segoe UI", size: 18.0)
-
- emailErrorLabel(isReveal: false)
- }
-
- private func priceRefresh(productsModel: KMListingProductsModel) -> Void {
- if productsModel.code == "" {
- return
- }
- var listPrice: Float = 0.0
- var discount: Float = 0.0
- var paySum: Float = 0.0
- var discount1: Float = 0.0
- var original1: Float = 0.0
- var abbreviation = "USD"
-
- if self.paymentMethod == .wxpay {
- if NSLocalizedString("USD", comment: "") == "CNY" {
- abbreviation = "CNY"
- }
- }
- if self.paymentMethod == .alipay {
- if NSLocalizedString("USD", comment: "") == "CNY" {
- abbreviation = "CNY"
- }
- }
-
- if _dmgProductType == .advanced_annual_subscription_trail ||
- _dmgProductType == .advanced_annual_subscription_blackFive ||
- _dmgProductType == .advanced_permanent_blackFive ||
- _dmgProductType == .ai_subscription_year_trail {
- // 全平台高级版年订阅 99.9 美金,带免费试用
- // 全平台高级版年订阅 99.9 美金,黑五订单
- // Mac & Win 双平台高级永久 119.99 美金,黑五订单
- // AI 年订阅 125.99 美金,带免费试用
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- var tipsString = NSLocalizedString("%.2@/year, auto-renewal", comment: "")
- if product_Info.cycle == 4 {
- tipsString = NSLocalizedString("%.2@/year, auto-renewal", comment: "")
- }
- if product_Info.cycle == 3 {
- tipsString = NSLocalizedString("%.2@/half a year, auto-renewal", comment: "")
- }
- if product_Info.cycle == 2 {
- tipsString = NSLocalizedString("%.2@/quarter, auto-renewal", comment: "")
- }
- if product_Info.cycle == 1 {
- tipsString = NSLocalizedString("%.2@/monthly, auto-renewal", comment: "")
- }
- if product_Info.cycle == 0 {
- tipsString = NSLocalizedString("%.2@, One time purchase.", comment: "")
- }
- var fullString = String(format: tipsString, product_Info.price)
- let preferredLanguage = Locale.preferredLanguages.first ?? "en"
-
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- fullString = String(format: tipsString, product_Info.cnyPrice)
- }
- if self.paymentMethod == .wxpay {
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- fullString = String(format: tipsString, product_Info.cnyPrice)
- }
- }
- if self.paymentMethod == .alipay {
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- fullString = String(format: tipsString, product_Info.cnyPrice)
- }
- }
-
- prmiumLabel.stringValue = String(format: "%@ %@", abbreviation, fullString)
-
- discount1 = product_Info.displayPrice.floatValue
- original1 = product_Info.price.floatValue
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- discount1 = product_Info.displayCnyPrice.floatValue
- original1 = product_Info.cnyPrice.floatValue
- }
-
- listPrice = original1 * Float(amountTextField1.stringValue)!
- paySum = discount1 * Float(amountTextField1.stringValue)!
- discount = listPrice - paySum
- }
-
- if _dmgProductType == .advanced_annual_subscription ||
- _dmgProductType == .standard_annual_subscription ||
- _dmgProductType == .ai_subscription_month {
- // 全平台高级版年订阅 99.9 美金,无试用
- // 全平台标准版年订阅 79.9 美金
- // Mac & Win 双平台高级永久 119.99 美金
- // AI 月订阅 14.99 美金
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- var tipsString = NSLocalizedString("%.2@/year, auto-renewal", comment: "")
- if product_Info.cycle == 4 {
- tipsString = NSLocalizedString("%.2@/year, auto-renewal", comment: "")
- }
- if product_Info.cycle == 3 {
- tipsString = NSLocalizedString("%.2@/half a year, auto-renewal", comment: "")
- }
- if product_Info.cycle == 2 {
- tipsString = NSLocalizedString("%.2@/quarter, auto-renewal", comment: "")
- }
- if product_Info.cycle == 1 {
- tipsString = NSLocalizedString("%.2@/monthly, auto-renewal", comment: "")
- }
- if product_Info.cycle == 0 {
- tipsString = NSLocalizedString("%.2@, One time purchase.", comment: "")
- }
- var fullString = String(format: tipsString, product_Info.price)
- let preferredLanguage = Locale.preferredLanguages.first ?? "en"
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- fullString = String(format: tipsString, product_Info.cnyPrice)
- }
-
- prmiumLabel.stringValue = String(format: "%@ %@", abbreviation, fullString)
-
- discount1 = product_Info.price.floatValue //优惠价格拿原价
- original1 = product_Info.price.floatValue
-
- if self.paymentMethod == .wxpay {
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- discount1 = product_Info.cnyPrice.floatValue //优惠价格拿原价
- original1 = product_Info.cnyPrice.floatValue
- }
- }
- if self.paymentMethod == .alipay {
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- discount1 = product_Info.cnyPrice.floatValue //优惠价格拿原价
- original1 = product_Info.cnyPrice.floatValue
- }
- }
-
- listPrice = original1 * Float(amountTextField1.stringValue)!
- paySum = discount1 * Float(amountTextField1.stringValue)!
- discount = listPrice - paySum
- }
-
- if _dmgProductType == .advanced_permanent {
- // Mac & Win 双平台高级永久 119.99 美金
- aiAddOnView.isHidden = true
- extendedView.isHidden = true
-
- var tipsString = NSLocalizedString("%.2@/year, auto-renewal", comment: "")
- if product_Info.cycle == 4 {
- tipsString = NSLocalizedString("%.2@/year, auto-renewal", comment: "")
- }
- if product_Info.cycle == 3 {
- tipsString = NSLocalizedString("%.2@/half a year, auto-renewal", comment: "")
- }
- if product_Info.cycle == 2 {
- tipsString = NSLocalizedString("%.2@/quarter, auto-renewal", comment: "")
- }
- if product_Info.cycle == 1 {
- tipsString = NSLocalizedString("%.2@/monthly, auto-renewal", comment: "")
- }
- if product_Info.cycle == 0 {
- tipsString = NSLocalizedString("%.2@, One time purchase.", comment: "")
- }
- var fullString = String(format: tipsString, product_Info.price)
- let preferredLanguage = Locale.preferredLanguages.first ?? "en"
- if self.paymentMethod == .wxpay {
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- fullString = String(format: tipsString, product_Info.cnyPrice)
- }
- }
- if self.paymentMethod == .alipay {
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- fullString = String(format: tipsString, product_Info.cnyPrice)
- }
- }
-
- prmiumLabel.stringValue = String(format: "%@ %@", abbreviation, fullString)
-
- discount1 = product_Info.price.floatValue //优惠价格拿原价
- if pdfCount > 1 , isBatchProductPriceGetFinsed {
- discount1 = product_Info.displayPrice.floatValue //优惠价格拿更新后的批量价格
- }
- original1 = product_Info.price.floatValue
- if self.paymentMethod == .wxpay {
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- discount1 = product_Info.cnyPrice.floatValue //优惠价格拿原价
- if pdfCount > 1 , isBatchProductPriceGetFinsed {
- discount1 = product_Info.displayCnyPrice.floatValue //优惠价格拿更新后的批量价格
- }
- original1 = product_Info.cnyPrice.floatValue
- }
- }
- if self.paymentMethod == .alipay {
- if preferredLanguage.hasPrefix("zh-Hans") || preferredLanguage.hasPrefix("zh-Hant") {
- discount1 = product_Info.cnyPrice.floatValue //优惠价格拿原价
- if pdfCount > 1 , isBatchProductPriceGetFinsed {
- discount1 = product_Info.displayCnyPrice.floatValue //优惠价格拿更新后的批量价格
- }
- original1 = product_Info.cnyPrice.floatValue
- }
- }
-
- listPrice = original1 * Float(amountTextField1.stringValue)!
- paySum = discount1 * Float(amountTextField1.stringValue)!
- discount = listPrice - paySum
- }
-
- originalPriceLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", discount1))
- if String(format: "%.2f", original1) == String(format: "%.2f", discount1) {
- discountPriceLabel1.isHidden = true
- } else {
- discountPriceLabel1.isHidden = false
- let attributedString = NSMutableAttributedString(string: String(format: "%@ %@", abbreviation, String(format: "%.2f", original1)))
- attributedString.addAttribute(.strikethroughStyle, value: NSNumber(value: NSUnderlineStyle.single.rawValue), range: NSMakeRange(0, attributedString.length))
- attributedString.addAttribute(.strikethroughColor, value: NSColor(named: "KMPurchaseDiscountColor") as Any, range: NSMakeRange(0, attributedString.length))
- discountPriceLabel1.attributedStringValue = attributedString
- }
-
- if self.discountScale != "" || self.discountAmount != "" {
- if self.discountScale != "" {
- paySum = paySum * Float(self.discountScale)!
- discount = listPrice - paySum
- } else {
- var discountAmountF = Float(self.discountAmount)
- if NSLocalizedString("USD", comment: "") == "CNY" {
- discountAmountF = discountAmountF! * 6.5
- }
- paySum = paySum - discountAmountF!
- discount = listPrice - paySum
- }
- }
- lastPriceLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", listPrice))
- discountLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", discount))
- paySumLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", paySum))
-
- if discount == 0 {
- discountView.isHidden = true
- couponView.isHidden = false
- } else {
- discountView.isHidden = false
- if self.discountScale == "" && self.discountAmount == "" {
- couponView.isHidden = true
- } else {
- couponView.isHidden = false
- }
- }
- discountLayoutConstraint.constant = discountView.isHidden ? -CGRectGetHeight(discountView.bounds) : 8
- }
-
- private func priceRefresh() -> Void {
- if KMDMGProductsManager.shareInstance.productDatas == nil {
- let alert = NSAlert()
- alert.alertStyle = .critical
- alert.messageText = NSLocalizedString("Error Information", comment: "")
- alert.informativeText = NSLocalizedString("Please make sure your internet connection is available.", comment: "")
- alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- alert.runModal()
- return
- }
-
- var abbreviation = "USD"
- if NSLocalizedString("USD", comment: "") == "CNY" {
- abbreviation = "CNY"
- }
-
- var discount1: Float = 0.0
- var original1: Float = 0.0
- var discount2: Float = 0.0
- var original2: Float = 0.0
- var discount3: Float = 0.0
- var original3: Float = 0.0
- var listPrice: Float = 0.0
- var discount: Float = 0.0
- var paySum: Float = 0.0
- let originalType: ProductType = productToType(originalProductID)
- if originalType == .ipaConvert || originalType == .ipaAI {
- if originalType == .ipaConvert {
- discount1 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_2")) ?? 19.99
- original1 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_2")) ?? 19.99
- } else {
- discount1 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.ai.product_1")) ?? 14.99
- original1 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.ai.product_1")) ?? 14.99
- }
- listPrice = original1 * Float(amountTextField1.stringValue)!
- paySum = discount1 * Float(amountTextField1.stringValue)!
- discount = listPrice - paySum
-
- originalPriceLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", discount1))
- if String(format: "%.2f", original1) == String(format: "%.2f", discount1) {
- discountPriceLabel1.isHidden = true
- } else {
- discountPriceLabel1.isHidden = false
- let attributedString = NSMutableAttributedString(string: String(format: "%.2f", original1))
- attributedString.addAttribute(.strikethroughStyle, value: NSNumber(value: NSUnderlineStyle.single.rawValue), range: NSMakeRange(0, attributedString.length))
- attributedString.addAttribute(.strikethroughColor, value: NSColor(named: "KMPurchaseDiscountColor") as Any, range: NSMakeRange(0, attributedString.length))
- discountPriceLabel1.attributedStringValue = attributedString
- }
- } else {
- if productType == .ipaPremium {
- let aiBinding_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_1+com.brother.pdfreaderpro.ai.product_1")) ?? 74.98
- let aiBinding_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_1+com.brother.pdfreaderpro.ai.product_1")) ?? 74.98
- discount2 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.ai.product_1")) ?? 14.99
- original2 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.ai.product_1")) ?? 14.99
- discount1 = aiBinding_discount - discount2
- original1 = aiBinding_original - original2
- discount3 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_2.checkout")) ?? 20.00
- original3 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_2.checkout")) ?? 20.00
-
- listPrice = (original1 * Float(amountTextField1.stringValue)!)
- paySum = (discount1 * Float(amountTextField1.stringValue)!)
- discount = listPrice - paySum
- } else if productType == .ipaPermanent {
- if originalType == .ipaPremium {
- listPrice = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- paySum = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- discount3 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_2.checkout")) ?? 20.00
- original3 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_2.checkout")) ?? 20.00
- discount1 = paySum - discount3
- original1 = listPrice - original3
-
- let aiBinding_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let aiBinding_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let advanced_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- let advanced_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- discount2 = aiBinding_discount - advanced_discount
- original2 = aiBinding_original - advanced_original
-
- listPrice = (original1 * Float(amountTextField1.stringValue)!) + (original3 * Float(amountTextField3.stringValue)!)
- paySum = (discount1 * Float(amountTextField1.stringValue)!) + (discount3 * Float(amountTextField3.stringValue)!)
- discount = listPrice - paySum
- } else if originalType == .ipaPermanent {
- listPrice = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- paySum = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
-
- discount1 = paySum
- original1 = listPrice
- let aiBinding_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let aiBinding_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let cross_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.cross.platform.product_3")) ?? 119.98
- let cross_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.cross.platform.product_2")) ?? 119.98
- discount2 = aiBinding_discount - discount1
- original2 = aiBinding_original - original1
- discount3 = cross_discount - discount1
- original3 = cross_original
-
- listPrice = (original1 * Float(amountTextField1.stringValue)!)
- paySum = (discount1 * Float(amountTextField1.stringValue)!)
- discount = listPrice - paySum
- }
- } else if productType == .ipaPremiumCrossPlatform {
-
- } else if productType == .ipaPermanentCrossPlatform {
- listPrice = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- paySum = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
-
- discount1 = paySum
- original1 = listPrice
- let aiBinding_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let aiBinding_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let cross_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.cross.platform.product_3")) ?? 119.98
- let cross_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.cross.platform.product_2")) ?? 119.98
- discount2 = aiBinding_discount - discount1
- original2 = aiBinding_original - original1
- discount3 = cross_discount - discount1
- original3 = cross_original
-
- listPrice = (original1 * Float(amountTextField1.stringValue)!) + (discount3 * Float(amountTextField3.stringValue)!)
- paySum = (discount1 * Float(amountTextField1.stringValue)!) + (discount3 * Float(amountTextField3.stringValue)!)
- discount = listPrice - paySum
- } else if productType == .ipaPremiumAI {
- let aiBinding_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_1+com.brother.pdfreaderpro.ai.product_1")) ?? 74.98
- let aiBinding_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_1+com.brother.pdfreaderpro.ai.product_1")) ?? 74.98
-
- discount2 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.ai.product_1")) ?? 14.99
- original2 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.ai.product_1")) ?? 14.99
- discount1 = aiBinding_discount - discount2
- original1 = aiBinding_original - original2
- discount3 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_2.checkout")) ?? 20.00
- original3 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_2.checkout")) ?? 20.00
-
- listPrice = (original1 * Float(amountTextField1.stringValue)!) + (original2 * Float(amountTextField2.stringValue)!)
- paySum = (discount1 * Float(amountTextField1.stringValue)!) + (discount2 * Float(amountTextField2.stringValue)!)
- discount = listPrice - paySum
- } else if productType == .ipaPermanentAI {
- if originalType == .ipaPremium {
- listPrice = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- paySum = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- discount3 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_2.checkout")) ?? 20.00
- original3 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_2.checkout")) ?? 20.00
- discount1 = paySum - discount3
- original1 = listPrice - original3
-
- let aiBinding_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let aiBinding_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let advanced_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- let advanced_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- discount2 = aiBinding_discount - advanced_discount
- original2 = aiBinding_original - advanced_original
-
- listPrice = (original1 * Float(amountTextField1.stringValue)!) + (original2 * Float(amountTextField2.stringValue)!) + (original3 * Float(amountTextField3.stringValue)!)
- paySum = (discount1 * Float(amountTextField1.stringValue)!) + (discount2 * Float(amountTextField2.stringValue)!) + (discount3 * Float(amountTextField3.stringValue)!)
- discount = listPrice - paySum
- } else if originalType == .ipaPermanent {
- listPrice = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- paySum = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
-
- discount1 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- original1 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- let aiBinding_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let aiBinding_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let cross_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.cross.platform.product_3")) ?? 119.98
- let cross_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.cross.platform.product_2")) ?? 119.98
- discount2 = aiBinding_discount - discount1
- original2 = aiBinding_original - original1
- discount3 = cross_discount - discount1
- original3 = cross_original
-
- listPrice = (original1 * Float(amountTextField1.stringValue)!) + (original2 * Float(amountTextField2.stringValue)!)
- paySum = (discount1 * Float(amountTextField1.stringValue)!) + (discount2 * Float(amountTextField2.stringValue)!)
- discount = listPrice - paySum
- }
- } else if productType == .ipaPermanentCrossPlatformAI {
- listPrice = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.cross.platform.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 149.96
- paySum = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 149.96
-
- discount1 = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- original1 = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3")) ?? 79.99
- let aiBinding_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let aiBinding_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1")) ?? 94.98
- let cross_discount = Float(KMDMGProductsManager.shareInstance.getActivityPrice("com.brother.pdfreaderpro.cross.platform.product_3")) ?? 119.98
- let cross_original = Float(KMDMGProductsManager.shareInstance.getPrice("com.brother.pdfreaderpro.cross.platform.product_2")) ?? 119.98
- discount2 = aiBinding_discount - discount1
- original2 = aiBinding_original - original1
- discount3 = cross_discount - discount1
- original3 = cross_original
-
- listPrice = (original1 * Float(amountTextField1.stringValue)!) + (original2 * Float(amountTextField2.stringValue)!) + (original3 * Float(amountTextField3.stringValue)!)
- paySum = (discount1 * Float(amountTextField1.stringValue)!) + (discount2 * Float(amountTextField2.stringValue)!) + (discount3 * Float(amountTextField3.stringValue)!)
- discount = listPrice - paySum
- }
- originalPriceLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", discount1))
- if String(format: "%.2f", original1) == String(format: "%.2f", discount1) {
- discountPriceLabel1.isHidden = true
- } else {
- discountPriceLabel1.isHidden = false
- let attributedString = NSMutableAttributedString(string: String(format: "%.2f", original1))
- attributedString.addAttribute(.strikethroughStyle, value: NSNumber(value: NSUnderlineStyle.single.rawValue), range: NSMakeRange(0, attributedString.length))
- attributedString.addAttribute(.strikethroughColor, value: NSColor(named: "KMPurchaseDiscountColor") as Any, range: NSMakeRange(0, attributedString.length))
- discountPriceLabel1.attributedStringValue = attributedString
- }
-
- originalPriceLabel2.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", discount2))
- if String(format: "%.2f", original2) == String(format: "%.2f", discount2) {
- discountPriceLabel2.isHidden = true
- } else {
- discountPriceLabel2.isHidden = false
- let attributedString = NSMutableAttributedString(string: String(format: "%.2f", original2))
- attributedString.addAttribute(.strikethroughStyle, value: NSNumber(value: NSUnderlineStyle.single.rawValue), range: NSMakeRange(0, attributedString.length))
- attributedString.addAttribute(.strikethroughColor, value: NSColor(named: "KMPurchaseDiscountColor") as Any, range: NSMakeRange(0, attributedString.length))
- discountPriceLabel2.attributedStringValue = attributedString
- }
-
- originalPriceLabel3.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", discount3))
- if String(format: "%.2f", original3) == String(format: "%.2f", discount3) {
- discountPriceLabel3.isHidden = true
- } else {
- discountPriceLabel3.isHidden = false
- let attributedString = NSMutableAttributedString(string: String(format: "%.2f", original3))
- attributedString.addAttribute(.strikethroughStyle, value: NSNumber(value: NSUnderlineStyle.single.rawValue), range: NSMakeRange(0, attributedString.length))
- attributedString.addAttribute(.strikethroughColor, value: NSColor(named: "KMPurchaseDiscountColor") as Any, range: NSMakeRange(0, attributedString.length))
- discountPriceLabel3.attributedStringValue = attributedString
- }
- }
- if self.discountScale != "" || self.discountAmount != "" {
- if self.discountScale != "" {
- paySum = paySum * Float(self.discountScale)!
- discount = listPrice - paySum
- } else {
- var discountAmountF = Float(self.discountAmount)
- if NSLocalizedString("USD", comment: "") == "CNY" {
- discountAmountF = discountAmountF! * 6.5
- }
- paySum = paySum - discountAmountF!
- discount = listPrice - paySum
- }
- }
- lastPriceLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", listPrice))
- discountLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", discount))
- paySumLabel1.stringValue = String(format: "%@ %@", abbreviation, String(format: "%.2f", paySum))
-
- if self.discountScale == "" && self.discountAmount == "" {
- refreshApplyButton(isReveal: true)
- } else {
- refreshApplyButton(isReveal: false)
- }
-
- if discount == 0 {
- discountView.isHidden = true
- couponView.isHidden = false
- } else {
- discountView.isHidden = false
- if self.discountScale == "" && self.discountAmount == "" {
- couponView.isHidden = true
- } else {
- couponView.isHidden = false
- }
- }
- discountLayoutConstraint.constant = discountView.isHidden ? -CGRectGetHeight(discountView.bounds) : 8
- }
-
- // MARK: Active
- @IBAction func amountButtonAction(_ sender: NSButton) {
- if sender.tag == 0 || sender.tag == 1 {
- if sender.tag == 0 {
- if pdfCount > 1 {
- pdfCount -= 1
- }
- }
- if sender.tag == 1 {
- if pdfCount < 9999 {
- pdfCount += 1
- }
- }
- if pdfCount > 1 {
- removeButton1.isEnabled = true
- } else {
- removeButton1.isEnabled = false
- }
- if pdfCount > 100 {
- wechatPayButton2.isHidden = false
- cardButton.isHidden = true
- wechatPayButton.isHidden = true
- if _paymentMethod == .paddle {
- paymentMethod = .paypal
- }
- } else {
- wechatPayButton2.isHidden = true
- cardButton.isHidden = false
- wechatPayButton.isHidden = false
- }
- amountTextField1.stringValue = String(pdfCount)
- if extendedButton.state == .on {
- amountTextField2.stringValue = String(pdfCount * 2)
- } else {
- amountTextField2.stringValue = String(pdfCount * 1)
- }
- amountTextField3.stringValue = String(pdfCount)
- }
-
- // 价格刷新
- priceRefresh(productsModel: _product_Info)
-
- let model = KMProductModel.shared
- isBatchProductPriceGetFinsed = false
- model.getDMGBatchProductPriceInfosForMember(productId: _product_Info.id, num: pdfCount) { [weak self] success, result in
- guard let pricesArrays : KMMemberProductResult = result else {
- return
- }
- guard let batchProductPrice : KMBatchProductPriceModel = pricesArrays.batchProductPrice else {
- return
- }
- //原价更新
- let priceString = batchProductPrice.price
- if let priceDouble = Double(priceString) {
- self?.product_Info.price = NSNumber(value: priceDouble)
- }
-
- let cnyPriceString = batchProductPrice.cnyPrice
- if let cnyPriceDouble = Double(cnyPriceString) {
- self?.product_Info.cnyPrice = NSNumber(value: cnyPriceDouble)
- }
-
- let batchPriceString = batchProductPrice.batchPrice
- if let batchPriceDouble = Double(batchPriceString) {
- self?.product_Info.displayPrice = NSNumber(value: batchPriceDouble)
- }
-
- let cnyBatchPriceString = batchProductPrice.cnyBatchPrice
- if let cnyBatchPriceDouble = Double(cnyBatchPriceString) {
- self?.product_Info.displayCnyPrice = NSNumber(value: cnyBatchPriceDouble)
- }
-
- self?.product_Info.totalPrice = batchProductPrice.totalPrice
- self?.product_Info.cnyTotalPrice = batchProductPrice.cnyTotalPrice
-
-
- self?.isBatchProductPriceGetFinsed = true
- self?.priceRefresh(productsModel: self?.product_Info ?? KMListingProductsModel())
- }
- }
-
- @IBAction func aiAddOnButtonAction(_ sender: NSButton) {
- let type: ProductType = productToType(originalProductID)
- aiAddOnButton.state = sender.state
- if sender.state == .on {
- amountView2.isHidden = false
- aiAddOnButton.image = NSImage(named: "EmbeddedPayment07")
- if extendedButton.state == .on {
- if type == .ipaPremium {
- productType = .ipaPermanentAI
- } else if type == .ipaPermanent {
- productType = .ipaPermanentCrossPlatformAI
- }
- } else {
- if type == .ipaPremium {
- productType = .ipaPremiumAI
- } else if type == .ipaPermanent {
- productType = .ipaPermanentAI
- }
- }
- } else {
- amountView2.isHidden = true
- aiAddOnButton.image = NSImage(named: "EmbeddedPayment06")
- if extendedButton.state == .on {
- if type == .ipaPremium {
- productType = .ipaPermanent
- } else if type == .ipaPermanent {
- productType = .ipaPermanentCrossPlatform
- }
- } else {
- if type == .ipaPremium {
- productType = .ipaPremium
- } else if type == .ipaPermanent {
- productType = .ipaPermanent
- }
- }
- }
-
- discountScale = ""
- discountAmount = ""
- coupomTextField.isEnabled = true
- // 价格刷新
- priceRefresh()
- }
-
- @IBAction func extendedButtonAction(_ sender: NSButton) {
- let type: ProductType = productToType(originalProductID)
- extendedButton.state = sender.state
- if sender.state == .on {
- amountView3.isHidden = false
- if type == .ipaPremium {
- amountTextField2.stringValue = String(pdfCount)
- } else {
- amountTextField2.stringValue = String(pdfCount * 2)
- }
- extendedButton.image = NSImage(named: "EmbeddedPayment07")
- if aiAddOnButton.state == .on {
- if type == .ipaPremium {
- productType = .ipaPermanentAI
- } else if type == .ipaPermanent {
- productType = .ipaPermanentCrossPlatformAI
- }
- } else {
- if type == .ipaPremium {
- productType = .ipaPermanent
- } else if type == .ipaPermanent {
- productType = .ipaPermanentCrossPlatform
- }
- }
- } else {
- amountView3.isHidden = true
- amountTextField2.stringValue = String(pdfCount)
- extendedButton.image = NSImage(named: "EmbeddedPayment06")
- if aiAddOnButton.state == .on {
- if type == .ipaPremium {
- productType = .ipaPremiumAI
- } else if type == .ipaPermanent {
- productType = .ipaPermanentAI
- }
- } else {
- if type == .ipaPremium {
- productType = .ipaPremium
- } else if type == .ipaPermanent {
- productType = .ipaPermanent
- }
- }
- }
-
- discountScale = ""
- discountAmount = ""
- coupomTextField.isEnabled = true
- // 价格刷新
- priceRefresh()
- }
-
- @IBAction func payButtonAction(_ sender: NSButton) {
- emailErrorLabel(isReveal: false)
- confirmPayment(isConfirm: false)
- paymentMethod = KMPaymentType(rawValue: uint32(sender.tag)) ?? .paypal
- // 价格刷新
- priceRefresh(productsModel: _product_Info)
- }
-
- @IBAction func couponButtonAction(_ sender: NSButton) {
- couponButton.isHidden = true
- couponBox.isHidden = false
- applyBox.isHidden = false
- }
-
- @IBAction func applyButtonAction(_ sender: NSButton) {
- if coupomTextField.stringValue == "" {
- let alert = NSAlert()
- alert.alertStyle = .critical
- alert.messageText = NSLocalizedString("Error Information", comment: "")
- alert.informativeText = NSLocalizedString("Please enter a coupon code.", comment: "")
- alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- alert.runModal()
- return
- }
- self.refreshCouponError(isReveal: false)
- applyButton.isEnabled = false
- coupomTextField.isEnabled = false
- self._getDiscount(productId: productID, discountId: coupomTextField.stringValue) { [weak self] info, err in
- guard let self = self else { return }
- if err == nil {
- if let dataInfo = info {
- if dataInfo.keys.contains("status") {
- let status = dataInfo["status"] as? String ?? ""
- if status == "" {
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code is invalid. Please try again.", comment: "")
- self.refreshCouponError(isReveal: true)
- return
- }
- if status == "unused" {
- if dataInfo["discount"] is NSNull && dataInfo["price"] is NSNull {
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code is invalid. Please try again.", comment: "")
- self.refreshCouponError(isReveal: true)
- return
- } else {
- if dataInfo.keys.contains("coupon_provider") {
- if let coupon = dataInfo["coupon_provider"] {
- if let swiftDict = coupon as? [String: Any] {
- let limit_product_code = swiftDict["limit_product_code"]
- if let limitCode = limit_product_code as? String {
- if limitCode.count > 0 {
- if self.productID != limitCode {
- self.couponClearButton.isHidden = false
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code is invalid. Please try again.", comment: "")
- self.refreshCouponError(isReveal: true)
- return
- }
- }
- }
- }
- }
- }
- if dataInfo["discount"] is NSNull {
- if dataInfo["price"] is NSNull {
-
- } else {
- if let price1 = dataInfo["price"] {
- self.discountAmount = String(format: "%@", price1 as! CVarArg)
- }
- }
- } else {
- if let discount1 = dataInfo["discount"] {
- self.discountScale = String(format: "%@", discount1 as! CVarArg)
- }
- }
- }
- } else if status == "used" || status == "expired" {
- self.couponClearButton.isHidden = false
- if status == "used" {
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code has been used, please change your coupon code.", comment: "")
- } else {
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code has expired.", comment: "")
- }
- self.refreshCouponError(isReveal: true)
- }
- } else {
- if dataInfo.keys.contains("limit_product_code") {
- if let limit_product_code = dataInfo["limit_product_code"] {
- if let limitCode = limit_product_code as? String {
- if limitCode.count > 0 {
- if self.productID != limitCode {
- self.couponClearButton.isHidden = false
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code is invalid. Please try again.", comment: "")
- self.refreshCouponError(isReveal: true)
- return
- }
- }
- }
- }
- }
- if dataInfo["discount"] is NSNull && dataInfo["price"] is NSNull {
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code is invalid. Please try again.", comment: "")
- self.refreshCouponError(isReveal: true)
- } else {
- self.couponClearButton.isHidden = true
- if dataInfo["discount"] is NSNull {
- if dataInfo["price"] is NSNull {
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code is invalid. Please try again.", comment: "")
- self.refreshCouponError(isReveal: true)
- } else {
- if let price1 = dataInfo["price"] {
- self.discountAmount = String(format: "%@", price1 as! CVarArg)
- }
- }
- } else {
- if let discount1 = dataInfo["discount"] {
- self.discountScale = String(format: "%@", discount1 as! CVarArg)
- }
- }
- }
- }
- }
-
- self.priceRefresh()
- } else {
- self.couponClearButton.isHidden = false
- self.coupomErrorLabel.stringValue = NSLocalizedString("The coupon code is invalid. Please try again.", comment: "")
- self.refreshCouponError(isReveal: true)
- }
- }
- }
-
- @IBAction func paddlePopUpAction(_ sender: NSPopUpButton) {
-
- }
-
- @IBAction func couponClearButton(_ sender: NSButton) {
- coupomTextField.stringValue = ""
- couponClearButton.isHidden = true
- applyButton.isEnabled = true
- coupomTextField.isEnabled = true
- refreshCouponError(isReveal: false)
- }
-
- @IBAction func buyAction(_ sender: NSButton) {
- if emailTextField.stringValue == "" {
- emailErrorLabel(isReveal: true)
- return
- }
- if paymentMethod == .paddle {
- if !isNumeric(paddleTextField.stringValue) && paddleTextField.stringValue != "" {
- let alert = NSAlert()
- alert.alertStyle = .critical
- alert.messageText = NSLocalizedString("Error Information", comment: "")
- alert.informativeText = NSLocalizedString("Please enter the correct postcode.", comment: "")
- alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- alert.runModal()
- return
- }
- }
- confirmPayment(isConfirm: true)
- if paymentMethod == .paypal {
- paypalBox.fillColor = NSColor(named: "KMPurchaseBoxColor1") ?? NSColor.blue
- } else if paymentMethod == .paddle {
- paddleView.wantsLayer = true
- paddleView.layer?.backgroundColor = NSColor(named: "KMPurchaseBoxColor1")?.cgColor ?? NSColor.blue.cgColor
- } else if paymentMethod == .wxpay {
- weChatBox.fillColor = NSColor(named: "KMPurchaseBoxColor1") ?? NSColor.blue
- } else if paymentMethod == .alipay {
- weChatBox.fillColor = NSColor(named: "KMPurchaseBoxColor1") ?? NSColor.blue
- }
- DispatchQueue.main.asyncAfter(deadline: .now() + 1.0) { [weak self] in
- guard let strongSelf = self else { return }
- if strongSelf.paymentMethod == .paypal {
- strongSelf.paypalBox.fillColor = NSColor(named: "KMPurchaseBoxColor") ?? NSColor.blue
- } else if strongSelf.paymentMethod == .paddle {
- strongSelf.paddleView.wantsLayer = true
- strongSelf.paddleView.layer?.backgroundColor = NSColor(named: "KMPurchaseBoxColor")?.cgColor ?? NSColor.blue.cgColor
- } else if strongSelf.paymentMethod == .wxpay {
- strongSelf.weChatBox.fillColor = NSColor(named: "KMPurchaseBoxColor") ?? NSColor.blue
- } else if strongSelf.paymentMethod == .alipay {
- strongSelf.weChatBox.fillColor = NSColor(named: "KMPurchaseBoxColor") ?? NSColor.blue
- }
- }
- // var licenseCode = ""
- // if productID == "com.brother.pdfreaderpro.mac.product_2" {
- // if licenseCodeTextField.stringValue.count > 0 {
- // licenseCode = licenseCodeTextField.stringValue
- // } else {
- // let alert = NSAlert()
- // alert.alertStyle = .critical
- // alert.messageText = NSLocalizedString("Error Information", comment: "")
- // alert.informativeText = NSLocalizedString("Input license code previously activated the app", comment: "")
- // alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- // alert.runModal()
- //
- // return
- // }
- // if let license = VerificationManager.default().originLicenseCode, license.count > 0 {
- // licenseCode = license
- // }
- // }
- var couponCode = ""
- if coupomErrorLabel.isHidden {
- couponCode = coupomTextField.stringValue
- }
-
- let model = KMProductModel.shared
- if isOneTimePurchase(_product_Info) {
- var price = _product_Info.totalPrice
- if self.paymentMethod == .wxpay {
- if NSLocalizedString("USD", comment: "") == "CNY" {
- price = _product_Info.cnyTotalPrice
- }
- }
- if self.paymentMethod == .alipay {
- if NSLocalizedString("USD", comment: "") == "CNY" {
- price = _product_Info.cnyTotalPrice
- }
- }
-
- model.creatOrder(productId: _product_Info.id,
- paymentMethod: getPurchasePaymentMethod(),
- price: price,
- discountFlag: getOneTimePurchaseDiscountFlag(),
- couponCode: couponCode,
- num: pdfCount) { success, result in
- //写定时器查询结果
- }
- } else {
- var price = _product_Info.price
- let displayPriceString = String(format: "%.2@", _product_Info.displayPrice)
- if displayPriceString == "0" {
-
- } else {
- price = _product_Info.displayPrice
- }
- if self.paymentMethod == .wxpay {
- if NSLocalizedString("USD", comment: "") == "CNY" {
- price = _product_Info.cnyPrice
- let displayCnyPriceString = String(format: "%.2@", _product_Info.displayCnyPrice)
- if displayCnyPriceString == "0" {
-
- } else {
- price = _product_Info.displayCnyPrice
- }
- }
- }
- if self.paymentMethod == .alipay {
- if NSLocalizedString("USD", comment: "") == "CNY" {
- price = _product_Info.cnyPrice
- let displayCnyPriceString = String(format: "%.2@", _product_Info.displayCnyPrice)
- if displayCnyPriceString == "0" {
-
- } else {
- price = _product_Info.displayCnyPrice
- }
- }
- }
-
- let priceString = String(format: "%.2@", price)
- model.createSubscriber(productId: _product_Info.id,
- paymentMethod: getPurchasePaymentMethod(),
- price: priceString,
- discountFlag: getPurchaseDiscountFlag(),
- couponCode: couponCode,
- num: pdfCount) { success, result in
- //写定时器查询结果
- }
- }
- // 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 {
- switch self.paymentMethod {
- case .paypal:
- return 0;
- case .alipay:
- return 1;
- case .wxpay:
- return 2;
- case .paddle:
- return 3;
- default:
- return 1;
- }
- }
-
- func getOneTimePurchaseDiscountFlag() -> Int {
- if pdfCount > 1 {
- return 4
- } else {
- var couponCode = ""
- if coupomErrorLabel.isHidden {
- couponCode = coupomTextField.stringValue
- }
- if couponCode == "" {
- if _dmgProductType == .advanced_annual_subscription_blackFive ||
- _dmgProductType == .advanced_permanent_blackFive {
- return 5
- }
- if _dmgProductType == .advanced_annual_subscription_trail ||
- _dmgProductType == .ai_subscription_year_trail {
- return 5
- }
- return 0
- } else {
- if _dmgProductType == .advanced_annual_subscription_blackFive ||
- _dmgProductType == .advanced_permanent_blackFive {
- return 11
- }
- return 1
- }
- }
- }
-
- func getPurchaseDiscountFlag() -> Int {
- var couponCode = ""
- if coupomErrorLabel.isHidden {
- couponCode = coupomTextField.stringValue
- }
- if couponCode == "" {
- if _dmgProductType == .advanced_annual_subscription_blackFive ||
- _dmgProductType == .advanced_permanent_blackFive {
- return 5
- }
- if _dmgProductType == .advanced_annual_subscription_trail ||
- _dmgProductType == .ai_subscription_year_trail {
- return 5
- }
- return 0
- } else {
- if _dmgProductType == .advanced_annual_subscription_blackFive ||
- _dmgProductType == .advanced_permanent_blackFive {
- return 11
- }
- return 1
- }
- }
-
- @IBAction func notFoundAction(_ sender: NSButton) {
- var url = URL(string: "https://www.pdfreaderpro.com/mac/license-retrieval")!
- NSWorkspace.shared.open(url)
- }
-
- // MARK: get & set
-
- var product_code : String {
- get {
- return _product_code
- }
-
- set {
- _product_code = newValue
-
- let model = KMProductModel.shared
- let products : [KMListingProductsModel] = model.dmgProductDatas?.listingProducts ?? []
- if products.count > 0 {
- for product in products {
- if product.code == _product_code {
- self.product_Info = product;
- //更新价格
- self.updateProduct_Info()
- break
- }
- }
- } else {
- model.getDMGProductDatas() { [weak self] success, result in
- let products : [KMListingProductsModel] = model.dmgProductDatas?.listingProducts ?? []
- if products.count > 0 {
- for product in products {
- if product.code == self?.product_code {
- self?.product_Info = product;
- //更新价格
- self?.updateProduct_Info()
- break
- }
- }
- }
- }
- }
-
- }
- }
-
- var product_Info: KMListingProductsModel {
- get {
- return _product_Info
- }
- set {
- _product_Info = newValue
- updateKMDMGProductType(_product_Info)
- if isWindowDidLoad {
-
- xibInitialization()
- priceRefresh(productsModel: _product_Info)
-
- confirmPayment(isConfirm: false)
- }
- }
- }
-
- var dmgProductType: KMDMGProductType {
- get {
- return _dmgProductType
- }
- set {
- _dmgProductType = newValue
- if isWindowDidLoad {
-
- xibInitialization()
- priceRefresh(productsModel: _product_Info)
-
- confirmPayment(isConfirm: false)
- }
- }
- }
-
- private var paymentMethod : KMPaymentType {
- get {
- return _paymentMethod
- }
- set {
- _paymentMethod = newValue
-
- paypalButton.image = NSImage(named: "EmbeddedPayment19")
- cardButton.image = NSImage(named: "EmbeddedPayment21")
- wechatPayButton.image = NSImage(named: "EmbeddedPayment23")
- wechatPayButton2.image = NSImage(named: "EmbeddedPayment23")
- alipayButton.image = NSImage(named: "EmbeddedPayment25")
- if _paymentMethod == .paypal {
- paypalButton.image = NSImage(named: "EmbeddedPayment18")
- payBox.contentView = paypalView
- paypalBox.fillColor = NSColor(named: "KMPurchaseBoxColor") ?? NSColor.blue
- payBoxHeight.constant = 60.0
- } else if _paymentMethod == .paddle {
- cardButton.image = NSImage(named: "EmbeddedPayment20")
- payBox.contentView = cardView
- paddleView.wantsLayer = true
- paddleView.layer?.backgroundColor = NSColor(named: "KMPurchaseBoxColor")?.cgColor ?? NSColor.blue.cgColor
- payBoxHeight.constant = 150.0
- } else if _paymentMethod == .wxpay {
- wechatPayButton.image = NSImage(named: "EmbeddedPayment22")
- wechatPayButton2.image = NSImage(named: "EmbeddedPayment22")
- payBox.contentView = weChatPayView
- weChatBox.fillColor = NSColor(named: "KMPurchaseBoxColor") ?? NSColor.blue
- payBoxHeight.constant = 92.0
- } else if _paymentMethod == .alipay {
- alipayButton.image = NSImage(named: "EmbeddedPayment24")
- payBox.contentView = weChatPayView
- weChatBox.fillColor = NSColor(named: "KMPurchaseBoxColor") ?? NSColor.blue
- payBoxHeight.constant = 92.0
- }
- }
- }
-
- var productType: ProductType {
- get {
- return _productType
- }
- set {
- _productType = newValue
-
- if _productType == .ipaConvert {
- productID = "com.brother.pdfreaderpro.mac.product_2"
- } else if _productType == .ipaConvert_checkout {
- productID = "com.brother.pdfreaderpro.mac.product_2.checkout"
- } else if _productType == .ipaPremium {
- productID = "com.brother.pdfreaderpro.mac.product_1"
- } else if _productType == .ipaPermanent {
- productID = "com.brother.pdfreaderpro.mac.product_3"
- } else if _productType == .ipaPremiumCrossPlatform {
- productID = "com.brother.pdfreaderpro.cross.platform.product_1"
- } else if _productType == .ipaPermanentCrossPlatform {
- productID = "com.brother.pdfreaderpro.cross.platform.product_3"
- } else if _productType == .ipaAI {
- productID = "com.brother.pdfreaderpro.ai.product_1"
- } else if _productType == .ipaPremiumAI {
- productID = "com.brother.pdfreaderpro.mac.product_1+com.brother.pdfreaderpro.ai.product_1"
- } else if _productType == .ipaPermanentAI {
- productID = "com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1"
- } else if _productType == .ipaPermanentCrossPlatformAI {
- productID = "com.brother.pdfreaderpro.cross.platform.product_3+com.brother.pdfreaderpro.ai.product_1"
- }
- }
- }
-
- // MARK: ——
-
- // 获取价格
- private func _getProductDatas(callback: @escaping (([String:Any]?, Any?)->Void)) {
- // func getPriceUrl() {
- let urlString = kVerificationServer + "/api/product/get-price/v2"
- KMAdvertisementRequestServer.requestServer.request(urlString: urlString, method: "GET", params: nil) { task, responseObject, error in
- if (error == nil && responseObject != nil) {
- let array = responseObject?["data"] as? NSDictionary
- if array != nil {
- //解析数据
- let productsDict = array?.object(forKey: "data") as? NSDictionary
- callback(productsDict as? [String : Any], nil)
- } else {
- callback([:], error.debugDescription)
- }
- } else {
- callback(nil, error.debugDescription)
- }
- }
- }
-
- // 获取优惠卷
- private func _getDiscount(productId: String, discountId: String, callback: @escaping (([String : Any]?, Any?)->Void)) {
- let urlString = kVerificationServer + "/api/coupons/retrieval"
- let app_code = MainBundle.km_infoDictionary()?["CFBundleIdentifier"] ?? ""
- let params = [
- // 优惠卷id
- "code" : discountId,
- "app_code" : app_code,
- "product_code" : productId]
- KMAdvertisementRequestServer.requestServer.request(urlString: urlString, method: "GET", params: params) { task, responseObject, error in
- if (error == nil && responseObject != nil) {
- if let dataDict = responseObject?["data"] as? NSDictionary {
- if let swiftDict = dataDict as? [String: Any] {
- if swiftDict.keys.contains("price") || swiftDict.keys.contains("discount") {
- callback(dataDict as? [String : Any], nil)
- } else if swiftDict.keys.contains("coupon_provider") {
- if let couponDict = swiftDict["coupon_provider"] as? [String: Any] {
- callback(couponDict, nil)
- }
- }
- }
- } else if let coupon_provider = responseObject?["coupon_provider"] as? NSDictionary {
- callback(coupon_provider as? [String : Any], nil)
- } else {
- callback([:], error.debugDescription)
- }
- } else {
- callback(nil, error.debugDescription)
- }
- }
- }
-
- // 获取订单状态
-
- private func _getOrderStatus(tradeNo: String, callback: @escaping (([String:Any]?, Any?)->Void)) {
- let urlString = kVerificationServer + "/api/orders/getOrderStatus"
- var jsonStr: String = ""
- if let jsonData = try?JSONSerialization.data(withJSONObject: ["trade_no" : tradeNo], options:[]),
- let data = String(data: jsonData, encoding: .utf8) {
- jsonStr = data
- }
-
- let rsa = KMVerificationRSA()
- let publicKey = rsa.loadPublicKey()
- let encryptedData = rsa.encrypt(plainText: jsonStr, publicKey: publicKey!)
- let tokenStr = encryptedData?.base64EncodedString()
-
- var postData = try!JSONSerialization.data(withJSONObject: ["token" : tokenStr])
- var request = URLRequest(url: URL(string: urlString)!,timeoutInterval: Double.infinity)
- request.addValue("Apifox/1.0.0 (https://www.apifox.cn)", forHTTPHeaderField: "User-Agent")
- request.addValue("application/json", forHTTPHeaderField: "Content-Type")
- request.httpMethod = "POST"
- request.httpBody = postData
- let task = URLSession.shared.dataTask(with: request) { data, response, error in
- guard let data = data else {
- callback(nil, String(describing: error))
- return
- }
- if let jsonDict = try?JSONSerialization.jsonObject(with: data, options: []) as? NSDictionary ?? [:] {
- let dataStr = jsonDict["data"] as? String
-
- let rsa = KMVerificationRSA()
- if let deData = (rsa.decrypt(source: dataStr as? NSString ?? "") as? String)?.data(using: .utf8) {
- if let dict = try?JSONSerialization.jsonObject(with: deData, options: []) as? NSDictionary ?? [:] {
- return callback(dict as? [String : Any], nil)
- }
- }
- callback([:], String(describing: error))
- } else {
- // 数据错误
- callback([:], String(describing: error))
- }
- }
- task.resume()
- }
-
- private func _buyProduct(_ productId: String, count: Int, discountId: String = "", payment: KMPaymentType, license: String = "", email: String, username: String = "", callback: @escaping (([String:Any]?, Any?)->Void)) {
- let urlString = kVerificationServer + "/api/subscriptions"
- let app_code = MainBundle.km_infoDictionary()?["CFBundleIdentifier"] ?? ""
- let paymentStr = self._paymentTypeString(type: payment)
- let country = countryAbbreviationValues[paddlePopUpButton.indexOfSelectedItem]
- let postcode = paddleTextField.stringValue
- let paraDict = ["data" :
- ["product_code": productId,
- "app_code": app_code,
- // 购买数量
- "amount": "\(count)",
- // 优惠卷id
- "coupon_code": discountId,
- // 支付类型 paypal alipay wxpay paddle
- "payment": paymentStr,
- // 地区
- "customer_country": country,
- // 邮编码
- "customer_postcode" : postcode,
- "unique_sn" : uuid(),
- // 序列码 标准包 升级 高级包 需要
- "upgrade_cdkey" : license,
- "email" : email,
- // 用户名
- "contact_name" : username,
- "platform" : "DMG"]]
- var postData = try! JSONSerialization.data(withJSONObject: paraDict)
- var request = URLRequest(url: URL(string: urlString)!,timeoutInterval: Double.infinity)
- request.addValue("Apifox/1.0.0 (https://www.apifox.cn)", forHTTPHeaderField: "User-Agent")
- request.addValue("application/json", forHTTPHeaderField: "Content-Type")
- request.httpMethod = "POST"
- request.httpBody = postData
- let task = URLSession.shared.dataTask(with: request) { data, response, error in
- guard let theData = data else {
- callback(nil, String(describing: error))
- return
- }
- if let jsonDict = try? JSONSerialization.jsonObject(with: theData, options: []) as? NSDictionary ?? [:] {
- let data1: NSDictionary = jsonDict["data"] as? NSDictionary ?? [:]
- let subscriptionInfo = data1.object(forKey: "subscription") as? NSDictionary
- let orderKey = self._paymentTypeString(type: payment) + "_order"
- let order_info = subscriptionInfo?.object(forKey: orderKey) as? NSDictionary
- if let dataInfo = order_info, dataInfo.count > 0 {
- callback(dataInfo as? [String : Any], nil)
- } else {
- // 数据错误
- callback([:], String(describing: error))
- }
- } else {
- // 数据错误
- callback([:], String(describing: error))
- }
- }
- task.resume()
- }
-
- // MARK: Private
-
- private func uuid() -> String {
- return GetHardwareUUID()!
- }
-
- private func _paymentTypeString(type: KMPaymentType) -> String {
- if type == .paddle {
- return "paddle"
- } else if type == .alipay {
- return "alipay"
- } else if type == .wxpay {
- return "wxpay"
- } else if type == .paypal {
- return "paypal"
- }
- return ""
- }
-
- private func _trackEvent_paid() {
- self.trackEvent_dmg(eventName: self.kEventName, params: self.kEventParams, platform: .AppCenter)
- }
-
- private let tabDict: [ProductType: String] = [
- .ipaConvert: "com.brother.pdfreaderpro.mac.product_2",
- .ipaConvert_checkout: "com.brother.pdfreaderpro.mac.product_2.checkout",
- .ipaPremium: "com.brother.pdfreaderpro.mac.product_1",
- .ipaPermanent: "com.brother.pdfreaderpro.mac.product_3",
- .ipaPremiumCrossPlatform: "com.brother.pdfreaderpro.cross.platform.product_1",
- .ipaPermanentCrossPlatform: "com.brother.pdfreaderpro.cross.platform.product_3",
- .ipaAI: "com.brother.pdfreaderpro.ai.product_1",
- .ipaPremiumAI: "com.brother.pdfreaderpro.mac.product_1+com.brother.pdfreaderpro.ai.product_1",
- .ipaPermanentAI: "com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1",
- .ipaPermanentCrossPlatformAI: "com.brother.pdfreaderpro.cross.platform.product_3+com.brother.pdfreaderpro.ai.product_1"
- ]
-
- private func getProductID() -> String {
- return GetHardwareUUID()!
- }
-
- private func productToType(_ productId: String) -> ProductType {
- if productId == "com.brother.pdfreaderpro.mac.product_2" {
- return .ipaConvert
- } else if productId == "com.brother.pdfreaderpro.mac.product_2.checkout" {
- return .ipaConvert_checkout
- } else if productId == "com.brother.pdfreaderpro.mac.product_1" {
- return .ipaPremium
- } else if productId == "com.brother.pdfreaderpro.mac.product_3" {
- return .ipaPermanent
- } else if productId == "com.brother.pdfreaderpro.cross.platform.product_1" {
- return .ipaPremiumCrossPlatform
- } else if productId == "com.brother.pdfreaderpro.cross.platform.product_3" {
- return .ipaPermanentCrossPlatform
- } else if productId == "com.brother.pdfreaderpro.ai.product_1" {
- return .ipaAI
- } else if productId == "com.brother.pdfreaderpro.mac.product_1+com.brother.pdfreaderpro.ai.product_1" {
- return .ipaPremiumAI
- } else if productId == "com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1" {
- return .ipaPermanentAI
- } else if productId == "com.brother.pdfreaderpro.cross.platform.product_3+com.brother.pdfreaderpro.ai.product_1" {
- return .ipaPermanentCrossPlatformAI
- }
- return .ipaConvert
- }
-
- private func isNumeric(_ text: String) -> Bool {
- return !text.isEmpty && text.rangeOfCharacter(from: CharacterSet.decimalDigits.inverted) == nil
- }
-
- private func openWebView(_ urlPath: String) -> Void {
- DispatchQueue.main.async { [weak self] in
- guard let self = self else { return }
- // let wc = KMEmbeddedPaymentPopWC.init(windowNibName: "KMEmbeddedPaymentPopWC")
- self.pollCount = 0
- self.embeddedPaymentPopWC = KMEmbeddedPaymentPopWC.currentFirstTrialWC(urlPath)
- if self.paymentMethod == .paddle {
- self.embeddedPaymentPopWC?.isPaddle = true
- self.embeddedPaymentPopWC?.countryCode = self.countryAbbreviationValues[self.paddlePopUpButton.indexOfSelectedItem]
- self.embeddedPaymentPopWC?.postCode = self.paddleTextField.stringValue
- }
- self.embeddedPaymentPopWC?.showWindow(nil)
- self.embeddedPaymentPopWC?.callback = { isClose in
- // let alert = NSAlert()
- // alert.alertStyle = .critical
- // alert.messageText = NSLocalizedString("Checking payment status", comment: "")
- //// alert.informativeText = NSLocalizedString("Get License Code is empty.", comment: "")
- // alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- // if alert.responds(to: #selector(alert.beginSheetModal(for:completionHandler:))) {
- // alert.beginSheetModal(for: self.window!, completionHandler: nil)
- // } else {
- // alert.runModal()
- // }
- }
- }
- startPolling()
- }
-
- private func scanCode(_ urlPath: String) -> Void {
- DispatchQueue.main.async { [weak self] in
- guard let self = self else { return }
- self.payBox.contentView = self.payResult
- self.payBoxHeight.constant = 262
- if self.paymentMethod == .wxpay {
- self.scanLabel.stringValue = NSLocalizedString("Scan QR Code with WeChat", comment: "")
- self.payTypeImageView.image = NSImage(named: "EmbeddedPayment27")
- } else if self.paymentMethod == .alipay {
- 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.")
- }
- }
- }
-
- private func pollingResult() -> Void {
- DispatchQueue.main.asyncAfter(deadline: .now() + 1) { [weak self] in
- guard let self = self else { return }
- if self.orderID == "" { return }
- self._getOrderStatus(tradeNo: self.orderID, callback: { [self] info, err in
- if err == nil {
- if let dataInfo = info {
- if dataInfo.keys.contains("status") {
- let status = dataInfo["status"] as? Int
- if status == 2 {
- if self.originalProductID == "com.brother.pdfreaderpro.mac.product_2" {
- VerificationManager.default().verification { status, info, error in
- if (error != nil) {
- let alert = NSAlert.init()
- alert.messageText = NSLocalizedString("Failed to Refresh", comment: "")
- alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- alert.runModal()
- }
- if KMMemberInfo.shared.isPermitConvert {
- self.close()
- }
- }
- } else {
- self.orderID = ""
- self.stopPolling()
- if (dataInfo.keys.contains("license") && dataInfo.keys.contains("ai_license")) {
- self.successfulPaymentsNumber = 2
- if dataInfo.keys.contains("license") {
- let license = dataInfo["license"] as? [String]
- if license!.count > 0 {
- self.verificationActivate(license: license![0])
- }
- }
- if dataInfo.keys.contains("ai_license") {
- let ai_license = dataInfo["ai_license"] as? [String]
- if ai_license!.count > 0 {
- self.verificationActivateAIInfo(license: ai_license![0])
- }
- }
- } else {
- self.successfulPaymentsNumber = 1
- if dataInfo.keys.contains("license") {
- let license = dataInfo["license"] as? [String]
- if license!.count > 0 {
- self.verificationActivate(license: license![0])
- }
- } else if dataInfo.keys.contains("ai_license") {
- let ai_license = dataInfo["ai_license"] as? [String]
- if ai_license!.count > 0 {
- if !KMMemberInfo.shared.isPermitAI {
- self.verificationActivateAIInfo(license: ai_license![0])
- }
- }
- }
- }
- }
- } else {
- if self.originalProductID == "com.brother.pdfreaderpro.mac.product_2" {
- VerificationManager.default().verification { status, info, error in
- if (error != nil) {
- let alert = NSAlert.init()
- alert.messageText = NSLocalizedString("Failed to Refresh", comment: "")
- alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- alert.runModal()
- }
- if KMMemberInfo.shared.isPermitConvert {
- self.close()
- }
- }
- } else {
- self.startPolling()
- }
- }
- }
- }
- } else {
- self.startPolling()
- }
- })
- }
- }
-
- private func startPolling() {
- timer = Timer(timeInterval: interval, repeats: false) { [weak self] _ in
- guard let self = self else { return }
- self.performTask()
- }
- RunLoop.main.add(timer!, forMode: .common)
- }
- @objc private func performTask() {
- guard pollCount < maxPolls else {
- timer?.invalidate()
- timer = nil
- return
- }
-
- // 执行你的轮询任务
- print("Performing polling task \(pollCount + 1)/\(maxPolls)")
-
- pollCount += 1
- pollingResult()
- }
-
- private func stopPolling() {
- timer?.invalidate()
- timer = nil
- print("Polling task completed.")
- if productID == "com.brother.pdfreaderpro.ai.product_1" ||
- productID == "com.brother.pdfreaderpro.mac.product_1+com.brother.pdfreaderpro.ai.product_1" ||
- productID == "com.brother.pdfreaderpro.mac.product_3+com.brother.pdfreaderpro.ai.product_1" ||
- productID == "com.brother.pdfreaderpro.cross.platform.product_3+com.brother.pdfreaderpro.ai.product_1"{
- if !KMMemberInfo.shared.isPermitAI {
- if self.embeddedPaymentPopWC != nil {
- DispatchQueue.main.async { [weak self] in
- guard let self = self else { return }
- self.embeddedPaymentPopWC?.close()
- self.embeddedPaymentPopWC = nil
- }
- }
- }
- } else {
- if self.embeddedPaymentPopWC != nil {
- DispatchQueue.main.async { [weak self] in
- guard let self = self else { return }
- self.embeddedPaymentPopWC?.close()
- self.embeddedPaymentPopWC = nil
- }
- }
- }
- pollCount = 0
- }
-
- private func verificationActivateAIInfo(license: String) {
- guard !license.isEmpty else {
- return
- }
-
- let infoDic = ["cdkey": license]
- AIInfoManager.default().activateAI(withInfo: infoDic) { info, error in
- if info.isEmpty == false {
- self._trackEvent_paid()
- }
- self.successfulPaymentsNumber -= 1
- if self.paymentMethod == .wxpay || self.paymentMethod == .alipay {
- self.qrCodeImageView.isHidden = true
- self.successfullyView.isHidden = false
-
- if self.successfulPaymentsNumber == 0 {
- if let blockSelf = self.activityAlertViewController {
- blockSelf.alertTitle = NSLocalizedString("Successful Activation!", comment: "")
- blockSelf.alertMessage = NSLocalizedString("Congratulations! You can start using PDF Reader Pro AI features.", comment: "")
-
- var frame = self.window?.frame
- frame!.origin.y -= blockSelf.view.frame.size.height-frame!.size.height
- frame!.origin.x -= (blockSelf.view.frame.size.width-frame!.size.width)/2.0
- frame!.size.width = blockSelf.view.frame.size.width
- frame!.size.height = blockSelf.view.frame.size.height
- self.mainBox.contentView = blockSelf.view
- self.window?.setFrame(frame!, display: true, animate: true)
-
- self.embeddedPaymentPopWC?.close()
- self.embeddedPaymentPopWC = nil
- }
- }
- } else {
- if self.successfulPaymentsNumber == 0 {
- if let blockSelf = self.activityAlertViewController {
- blockSelf.alertTitle = NSLocalizedString("Successful Activation!", comment: "")
- blockSelf.alertMessage = NSLocalizedString("Congratulations! You can start using PDF Reader Pro AI features.", comment: "")
-
- var frame = self.window?.frame
- frame!.origin.y -= blockSelf.view.frame.size.height-frame!.size.height
- frame!.origin.x -= (blockSelf.view.frame.size.width-frame!.size.width)/2.0
- frame!.size.width = blockSelf.view.frame.size.width
- frame!.size.height = blockSelf.view.frame.size.height
- self.mainBox.contentView = blockSelf.view
- self.window?.setFrame(frame!, display: true, animate: true)
-
- self.embeddedPaymentPopWC?.close()
- self.embeddedPaymentPopWC = nil
- }
- }
- }
- }
- }
- private func verificationActivate(license: String) {
- guard !license.isEmpty else {
- return
- }
-
- let infoDic = ["cdkey": license]
- VerificationManager.default().activateDevice(withInfo: infoDic) { status, info, error in
- if error != nil {
- DispatchQueue.main.async {
- let alert = NSAlert()
- alert.alertStyle = .critical
- alert.messageText = NSLocalizedString("Activation Error", comment: "")
- alert.addButton(withTitle: NSLocalizedString("OK", comment: ""))
- alert.runModal()
- }
- return
- } else {
- if let data = info, data.isEmpty == false {
- self._trackEvent_paid()
- }
- self.successfulPaymentsNumber -= 1
- if self.paymentMethod == .wxpay || self.paymentMethod == .alipay {
- self.qrCodeImageView.isHidden = true
- self.successfullyView.isHidden = false
-
- if self.successfulPaymentsNumber == 0 {
- if let blockSelf = self.activityAlertViewController {
- blockSelf.alertTitle = NSLocalizedString("Successful Activation!", comment: "")
- blockSelf.alertMessage = NSLocalizedString("Congratulations! You can start using PDF Reader Pro features.", comment: "")
-
- var frame = self.window?.frame
- frame!.origin.y -= blockSelf.view.frame.size.height-frame!.size.height
- frame!.origin.x -= (blockSelf.view.frame.size.width-frame!.size.width)/2.0
- frame!.size.width = blockSelf.view.frame.size.width
- frame!.size.height = blockSelf.view.frame.size.height
- self.mainBox.contentView = blockSelf.view
- self.window?.setFrame(frame!, display: true, animate: true)
-
- self.embeddedPaymentPopWC?.close()
- self.embeddedPaymentPopWC = nil
- }
- }
- } else {
- if self.successfulPaymentsNumber == 0 {
- if let blockSelf = self.activityAlertViewController {
- blockSelf.alertTitle = NSLocalizedString("Successful Activation!", comment: "")
- blockSelf.alertMessage = NSLocalizedString("Congratulations! You can start using PDF Reader Pro features.", comment: "")
-
- var frame = self.window?.frame
- frame!.origin.y -= blockSelf.view.frame.size.height-frame!.size.height
- frame!.origin.x -= (blockSelf.view.frame.size.width-frame!.size.width)/2.0
- frame!.size.width = blockSelf.view.frame.size.width
- frame!.size.height = blockSelf.view.frame.size.height
- self.mainBox.contentView = blockSelf.view
- self.window?.setFrame(frame!, display: true, animate: true)
-
- self.embeddedPaymentPopWC?.close()
- self.embeddedPaymentPopWC = nil
- }
- }
- }
- }
- }
- }
-
- private func confirmPayment(isConfirm: Bool) {
- if isConfirm {
- removeButton1.isEnabled = false
- addButton1.isEnabled = false
- aiAddOnButton1.isEnabled = false
- extendedButton1.isEnabled = false
- couponButton.isEnabled = false
- coupomTextField.isEnabled = false
- applyButton.isEnabled = false
- emailTextField.isEnabled = false
- licenseCodeTextField.isEnabled = false
- } else {
- removeButton1.isEnabled = true
- addButton1.isEnabled = true
- aiAddOnButton1.isEnabled = true
- extendedButton1.isEnabled = true
- coupomTextField.isEnabled = true
- couponButton.isEnabled = true
- emailTextField.isEnabled = true
- licenseCodeTextField.isEnabled = true
- }
- }
-
- private func emailErrorLabel(isReveal: Bool) {
- errorView.isHidden = !isReveal
- errorLabelTopLayout.constant = errorView.isHidden ? -CGRectGetHeight(errorView.bounds) : 4
- }
-
- private func refreshApplyButton(isReveal: Bool) {
- self.applyButton.isEnabled = isReveal
- }
-
- private func refreshLicenseCodeView(isReveal: Bool) {
- licenseCodeView.isHidden = !isReveal
- licenseCodeTopLayout.constant = licenseCodeView.isHidden ? -CGRectGetHeight(licenseCodeView.bounds)-8 : 8.0
- imageBottomLayout.constant = licenseCodeView.isHidden ? 16.0 : 8.0
- image2BottomLayout.constant = licenseCodeView.isHidden ? 20.0 : 8.0
- }
-
- private func refreshLicenseCodeErrorView(isReveal: Bool) {
- licenseCodeErrorView.isHidden = !isReveal
- licenseCodeErrorTopLayout.constant = licenseCodeErrorView.isHidden ? -CGRectGetHeight(licenseCodeErrorView.bounds) : 4.0
- }
-
- private func refreshCouponError(isReveal: Bool) {
- coupomErrorLabel.isHidden = !isReveal
- coupomErrorTopLayout.constant = coupomErrorLabel.isHidden ? -CGRectGetHeight(coupomErrorLabel.bounds) : 8.0
- }
-
- var activityAlertViewController: KMActivityALertViewController? {
- if _activityAlertViewController == nil {
- let blockSelf = self
- _activityAlertViewController = KMActivityALertViewController()
- _activityAlertViewController?.callback = {
- blockSelf.close()
- }
- }
- return _activityAlertViewController
- }
- // MARK: Show Methods
-
- // @IBAction private func dismissSheet(_ sender: NSButton) {
- // NSApp.endSheet(window!)
- // window!.orderOut(self)
- // }
- //
- //
- // @objc private func didEndSheet(_ sheet: NSWindow?, returnCode: Int, contextInfo: UnsafeMutableRawPointer?) {
- // if contextInfo != nil && self.handler != nil {
- // self.handler!(returnCode)
- // }
- // }
- //
- // @objc func beginSheetModal(for window: NSWindow?, completionHandler handler: ((Int) -> Void)?) {
- // if window != nil {
- // window!.beginSheet(self.window!) { ModalResponse in
- // self.handler?(ModalResponse.rawValue)
- // }
- // }
- // self.handler = handler
- // }
- }
- extension KMPurchaseEmbeddedWindowController: NSTextFieldDelegate {
- func controlTextDidEndEditing(_ obj: Notification) {
- let textField = obj.object as? NSTextField
- if textField == amountTextField1 {
- if !isNumeric(textField!.stringValue) {
- if textField == amountTextField1 { textField?.stringValue = String(pdfCount) }
- } else {
- if textField == amountTextField1 {
- pdfCount = Int(textField!.stringValue) ?? 1
- if Int(textField!.stringValue)! > 9999 {
- pdfCount = 9999
- textField?.stringValue = String(pdfCount)
- } else if Int(textField!.stringValue)! < 1 {
- pdfCount = 1
- textField?.stringValue = String(pdfCount)
- }
- }
- if pdfCount > 100 {
- wechatPayButton2.isHidden = false
- cardButton.isHidden = true
- wechatPayButton.isHidden = true
- if _paymentMethod == .paddle {
- paymentMethod = .paypal
- }
- } else {
- wechatPayButton2.isHidden = true
- cardButton.isHidden = false
- wechatPayButton.isHidden = false
- }
- }
- priceRefresh()
- } else if textField == emailTextField {
- emailErrorLabel(isReveal: false)
- } else if textField == paddleTextField {
-
- }
- }
-
- func controlTextDidChange(_ obj: Notification) {
- let textField = obj.object as? NSTextField
- if textField == amountTextField1 {
- if !isNumeric(textField!.stringValue) {
- if textField == amountTextField1 { textField?.stringValue = String(pdfCount) }
- } else {
- if Int(textField!.stringValue)! > 9999 {
- textField?.stringValue = String(pdfCount)
- } else if Int(textField!.stringValue)! < 1 {
- textField?.stringValue = String(pdfCount)
- }
- }
- priceRefresh()
- } else if textField == licenseCodeTextField {
- if textField!.stringValue.count > 0 {
- refreshLicenseCodeErrorView(isReveal: false)
- } else {
- refreshLicenseCodeErrorView(isReveal: false)
- }
- }
- }
- }
- extension KMPurchaseEmbeddedWindowController: NSWindowDelegate {
- func windowWillClose(_ notification: Notification) {
- if orderID != "" {
- pollingResult()
- }
- if self.embeddedPaymentPopWC != nil {
- self.embeddedPaymentPopWC?.close()
- self.embeddedPaymentPopWC = nil
- }
- KMPurchaseEmbeddedWindowController.currentWindowController = nil
- }
- }
- #endif
|