12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- //
- // 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) {
-
- }
- }
|