2017-02-17 29 views
0

Когда я пытаюсь представить PKPaymentAuthorizationController с present(completion: _), он не работает без какой-либо дополнительной информации.Не удалось представить Apple Pay Authorization Controller

Вот как я представляю его:

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") 
    } 
} 

Каждый раз, когда я пытаюсь, я получаю сообщение «Не удалось представить контроллер оплаты», и не появляется Apple, Pay Авторизация покадрово.

Я добавил PKPaymentAuthorizationController.canMakePayments() чек, и это возвращает true. Я не уверен, что может пойти не так. Тот же код (с другим merchantIdentifier) работает в моих других проектах Apple Pay без каких-либо проблем.

ответ

0

Я понял это для всех, кто сталкивается с этой проблемой в будущем.

Оказывается, там была проблема с одним из NSDecimalNumbers в моем массиве PKPaymentSummaryItems, это не правильно преобразовать в десятичное и в результате amount быть установлен в NaN. Как только я его исправил, контроллер появился правильно.

0

Я исправил его, выполнив следующие шаги: 1 из которых может быть правильным ответом.

  • В целевых возможностях App, позволяет компании Apple бумажника и Apple, платить
  • Включите правильный идентификатор продавца, в списке получки компании Apple
  • Измените идентификатор продавца в правах
  • Если какая-либо ошибка в provisining, включить " Автоматически управлять подписания»инициализации профиля (снимите/проверить, если reqd.)

App target capabilities screenshot