0

May I please ask how can I write the presentationWindow function in the PKPaymentAuthorizationControllerDelegate protocol of the PassKit? I wrote as below, it worked in iOS when the presentationWindow function is optional, so I did not write it at all, but in Mac catalyst, it must included, so it does not work when I wrote this, may I please ask what is wrong? Thank you very much for your time!

  func presentationWindow(for controller: PKPaymentAuthorizationController) -> UIWindow? {
  let paymentWindow:UIWindow=UIWindow(frame: CGRect(x: 0,y: 0,width: 200,height: 200))
  return paymentWindow
  }

and startPayment function I wrote:

func startPayment(completion: @escaping PaymentCompletionHandler) {

let amount = PKPaymentSummaryItem(label: "Ammount", amount: NSDecimalNumber(string: price), type: .final)
let tax = PKPaymentSummaryItem(label: "Tax", amount: NSDecimalNumber(string: "1.12"), type: .final)
let total = PKPaymentSummaryItem(label: "ToTal", amount: NSDecimalNumber(string: "10.00"), type: .pending)

paymentSummaryItems = [amount, tax, total];
completionHandler = completion

// Create our payment request
let paymentRequest = PKPaymentRequest()
paymentRequest.paymentSummaryItems = paymentSummaryItems
paymentRequest.merchantIdentifier = "merchant.com.YOURDOMAIN.YOURAPPNAME"
paymentRequest.merchantCapabilities = .capability3DS
paymentRequest.countryCode = "US"
paymentRequest.currencyCode = "USD"
paymentRequest.requiredShippingContactFields = [.phoneNumber, .emailAddress]
paymentRequest.supportedNetworks = PaymentHandler.supportedNetworks

// Display our payment request
paymentController = PKPaymentAuthorizationController(paymentRequest: paymentRequest)
paymentController?.delegate = self
    //self.presentationWindow(for: paymentController!)
paymentController?.present(completion: { (presented: Bool) in
    if presented {
        NSLog("Presented payment controller")
    } else {
        NSLog("Failed to present payment controller")
        self.completionHandler!(false)
     }
 })

}

0 Answers0