2017-02-17 26 views
0

當我嘗試使用present(completion: _)提供PKPaymentAuthorizationController時,它會失敗,並且沒有任何進一步的信息。無法呈現Apple Pay授權控制器

這裏是我是如何介紹它:

let paymentSummaryItems: [PKPaymentSummaryItem] = <HIDDEN> 

let paymentRequest = PKPaymentRequest() 
paymentRequest.paymentSummaryItems = paymentSummaryItems 
paymentRequest.merchantIdentifier = <HIDDEN> 
paymentRequest.merchantCapabilities = .capability3DS 
paymentRequest.countryCode = "US" 
paymentRequest.currencyCode = "USD" 
paymentRequest.supportedNetworks = [.visa, .amex, .masterCard, .discover] 
paymentRequest.requiredShippingAddressFields = [.email] 

let paymentController = PKPaymentAuthorizationController(paymentRequest: paymentRequest) 
paymentController.delegate = self 

paymentController.present { success in 
    if success { 
     print("Presented payment controller") 
    } else { 
     print("Failed to present payment controller") 
    } 
} 

每次我嘗試,我得到「無法出示支付控制器」的消息,並沒有蘋果授權付費模式的出現。

我添加了PKPaymentAuthorizationController.canMakePayments()檢查,並且返回true。我不確定會出現什麼問題。相同的代碼(使用不同的merchantIdentifier)可以在我的其他Apple Pay項目中正常工作,而不會出現任何問題。

回答

0

我想明白了,對於任何遇到這個問題的人來說。

事實證明,我的PKPaymentSummaryItems數組中有一個NSDecimalNumbers存在問題,它沒有正確轉換爲小數,導致amount被設置爲NaN。一旦我修好了,控制器就出現了。

0

我使用以下步驟修復它:其中1個可能是正確的答案。

  • 在應用目標的能力,使蘋果的錢包和蘋果支付
  • 包括正確的商家ID,請在蘋果的工資單
  • 變化待遇商家ID
  • 如果provisining任何錯誤,使得「自動管理簽署」供應曲線(取消/檢查REQD。)

App target capabilities screenshot