Симулятор iOS зависает при оплате с помощью пароля при попытке Apple Pay

Я пытаюсь настроить Apple Pay в своем приложении, но в данный момент у меня нет с собой iPhone 6. Так что я пытаюсь все настроить и запустить с помощью симулятора, прежде чем я смогу купить его или попытаться попросить кого-нибудь одолжить его мне.

Во всяком случае, я дошел до того, что показал контроллер представления ApplePay:

введите здесь описание изображения

Но когда я нажимаю «Оплатить с помощью пароля», ничего не происходит, поэтому я не могу пойти дальше и закончить тестирование всего с сервером.

Вот соответствующие части моего кода:

class PaymentVC: UIViewController,PKPaymentAuthorizationViewControllerDelegate {

@IBAction func onPaymentSubmit(sender: AnyObject) {
    if PKPaymentAuthorizationViewController.canMakePaymentsUsingNetworks(supportedPaymentNetworks) {
        let applePayMerchantID = "merchant.com.id"

        let request = PKPaymentRequest()
        request.merchantIdentifier = applePayMerchantID
        request.supportedNetworks = supportedPaymentNetworks
        request.merchantCapabilities = PKMerchantCapability.Capability3DS
        request.countryCode = "US"
        request.currencyCode = "USD"
        request.paymentSummaryItems = [
            PKPaymentSummaryItem(label: "Custom Order", amount: NSDecimalNumber(float: total))
        ]
        let applePayController = PKPaymentAuthorizationViewController(paymentRequest: request)
        applePayController.delegate = self
        self.presentViewController(applePayController, animated: true, completion: nil)
    }
}

//MARK: Apple Pay

func paymentAuthorizationViewController(controller: PKPaymentAuthorizationViewController, didAuthorizePayment payment: PKPayment, completion: (PKPaymentAuthorizationStatus) -> Void) {

}

func paymentAuthorizationViewControllerDidFinish(controller: PKPaymentAuthorizationViewController) {
    controller.dismissViewControllerAnimated(true, completion: nil)
}

}

Есть идеи, что может быть не так?


person Jan    schedule 31.08.2015    source источник


Ответы (1)


Вам необходимо вернуть статус платежа в paymentAuthorizationViewController. Вы увидите, что у метода делегата есть обработчик завершения, который вы должны вызвать, чтобы указать, смогли ли вы успешно обработать платеж или нет.

person lxt    schedule 01.09.2015
comment
Это так странно, я готов поклясться, что у меня там была точка останова, и она не вызывалась. Но да, это заработало. Спасибо! Если кому-то интересно, строка, которую нужно добавить для проверки успешного платежа, — completion(PKPaymentAuthorizationStatus.Success). - person Jan; 01.09.2015