![](/img/trans.png)
[英]Unable to access Phone no, First-Last Name, Street from PKContact inside PKPaymentAuthorizationViewController delegate method didSelectShippingContact
[英]PKPaymentAuthorizationViewController not calling delegate
我已經使用有效的 PKPaymentRequest 設置了一個 PKPaymentAuthorizationViewController,並使用有效的測試卡和送貨地址從沙箱登錄了一個帳戶。 我已將地區更改為美國,但沒有任何變化。 該應用程序具有所有有效的證書和權利。
func getApplePayController(request: PKPaymentRequest) -> PKPaymentAuthorizationViewController? {
guard let vc = PKPaymentAuthorizationViewController(paymentRequest: request) else {
return nil
}
//Set ourselves as delegate to get callbacks on the transaction status
vc.delegate = self
//we keep a weak reference to the controller to be able to dismiss it if necessary
self.applePayViewController = vc//This is weak
return vc
}
並介紹:
//Show Apple Pay screen with configured PKPaymentRequest object
guard let vc = getApplePayController(request: paymentRequest) else {
dLog("Error instantiating Apple Pay screen")
handleEventType(.status(.failed))
return
}
assert(delegate != nil)
assert(applePay.didAuthorize == false)
assert(vc.delegate != nil)
//disable swipe to dismiss
if #available(iOS 13.0, *) {
vc.isModalInPresentation = true
}
if var topController = UIApplication.shared.keyWindow?.rootViewController {
while let presentedViewController = topController.presentedViewController {
topController = presentedViewController
}
// topController should now be your topmost view controller
topController.present(vc, animated: true, completion: nil)
}
屏幕出現,如果我點擊取消,一切都會凍結。 如果我點擊背景,屏幕會自動關閉,但視圖的其余部分不是交互式的(PKPaymentAuthorizationViewController 沒有關閉,但它的 ui 被隱藏)。 如果我點擊“支付”,它會要求輸入密碼,但它會卡住處理。 在任何一種情況下都不會調用委托。
我的實現:
public func paymentAuthorizationViewControllerDidFinish(_ controller: PKPaymentAuthorizationViewController) {
print("Dismiss")
}
public func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController,
didAuthorizePayment payment: PKPayment,
completion: @escaping (PKPaymentAuthorizationStatus) -> Void) {
completion(.success)
return;
}
@available(iOS 11.0, *)
public func paymentAuthorizationViewController(_ controller: PKPaymentAuthorizationViewController,
didAuthorizePayment payment: PKPayment,
handler: @escaping (PKPaymentAuthorizationResult) -> Void) {
handler(PKPaymentAuthorizationResult(status: .success, errors: nil))
return;
}
無論我做什么,都不會調用這三種方法中的任何一種。 我已經檢查過並且委托設置正確。
任何的想法?
我現在也實現了 PKPaymentAuthorizationControllerDelegate 即使我沒有使用它並且它可以工作......
public func paymentAuthorizationControllerDidFinish(_ controller: PKPaymentAuthorizationController) {
return
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.