// // KMApplePay.swift // PDF Reader Pro // // Created by lizhe on 2024/11/13. // import Cocoa import PassKit class KMApplePay: NSObject,PKPaymentAuthorizationViewControllerDelegate { func startApplePayProcess(viewController: NSViewController) { // 1. 检查设备是否支持 Apple Pay guard PKPaymentAuthorizationViewController.canMakePayments() else { print("Apple Pay is not available on this device.") return } // 2. 设置支付请求 let paymentRequest = PKPaymentRequest() paymentRequest.merchantIdentifier = "your.merchant.id" // 替换为你的商户 ID paymentRequest.supportedNetworks = [.visa, .masterCard, .amex] paymentRequest.merchantCapabilities = .capability3DS paymentRequest.countryCode = "US" // 设置你的国家代码 paymentRequest.currencyCode = "USD" // 设置货币代码 // 设置支付摘要项 paymentRequest.paymentSummaryItems = [ PKPaymentSummaryItem(label: "Product Name", amount: NSDecimalNumber(value: 10.00)), PKPaymentSummaryItem(label: "Total", amount: NSDecimalNumber(value: 10.00)) ] // 3. 初始化并显示支付授权界面 if let paymentVC = PKPaymentAuthorizationViewController(paymentRequest: paymentRequest) { paymentVC.delegate = self NSWindow.currentWindow().beginSheet(NSWindow(contentViewController: paymentVC)) { response in } // viewController.presentAsSheet(paymentVC) // 在 macOS 上以模态窗口方式展示 } else { print("Unable to present Apple Pay authorization view controller.") } } // MARK: - PKPaymentAuthorizationViewControllerDelegate Methods // 用户授权后调用 func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, handler completion: @escaping (PKPaymentAuthorizationResult) -> Void) { // 在此处处理支付(例如,向你的服务器发送支付数据) // 模拟成功的支付授权 let status = PKPaymentAuthorizationStatus.success completion(PKPaymentAuthorizationResult(status: status, errors: nil)) } // 用户取消支付时调用 func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) { controller.dismiss(nil) // 关闭支付界面 } func paymentAuthorizationViewControllerWillAuthorizePayment(_ controller: PKPaymentAuthorizationViewController) { } }