Я вставил ваш фрагмент в свое приложение, в котором используется ApplePay, и я запустил его на тестовом устройстве с изолированной программной средой, в котором включена ApplePay, и кнопка ApplePay не работала.
Что я нашелдовольно удивительно.
Когда вы смотрите на документы для PKPaymentSummaryItem, у него есть только два инициализатора:
init(label: String, amount: NSDecimalNumber)
init(label: String, amount: NSDecimalNumber, type:PKPaymentSummaryItemType)
И ни один не имеет значений по умолчанию, но вы инициализируете его с помощьюпустой инициализатор. Удивительно, но нет ошибок или предупреждений, и это даже появляется в завершении кода. Поэтому я изменил инициализатор:
let item = PKPaymentSummaryItem(label: "Our Label",
amount: NSDecimalNumber(mantissa: UInt64(totalPrice),
exponent: -2,
isNegative: false))
request.paymentSummaryItems = [items]
if let applePayController = PKPaymentAuthorizationViewController(paymentRequest: request) {
applePayController.delegate = self
present(applePayController, animated: true)
}
И он работает (только на устройстве - не на симуляторе)!
Это удивило меня, поэтому я просто изменил ваш элемент с let
на var
и это тоже работает. Я бы все равно пошел с документированным инициализатором.