ios - ApplePay PKPaymentAuthorizationViewController 始终显示正在处理

标签 ios swift applepay

enter image description here我正在尝试在我的应用程序中使用 Apple Pay。呈现 PKPaymentAuthorizationViewController 效果很好。然而,在我填写信用卡和账单信息后,它只显示一个纺车和“处理中”,如图所示。

呈现Apple Pay View Controller 的代码如下:

let request = Stripe.paymentRequestWithMerchantIdentifier(DH_APPLEPAY_ID)
request.paymentSummaryItems = [PKPaymentSummaryItem(label: label, amount: amountDecimal)]

request.requiredBillingAddressFields = PKAddressField.All
request.requiredShippingAddressFields = PKAddressField.PostalAddress | PKAddressField.Email
request.countryCode = "US"
request.currencyCode = "USD"
request.merchantCapabilities = PKMerchantCapability.CapabilityEMV | PKMerchantCapability.Capability3DS
request.supportedNetworks = [PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa]

if Stripe.canSubmitPaymentRequest(request) {

    let paymentController = PKPaymentAuthorizationViewController(paymentRequest: request)

    paymentController.delegate = self

    self.navigationController?.presentViewController(paymentController, animated: true, completion: nil)
} else {
    //popup
    DHUtils.alert("Apple Pay", message: "Please add your credit card to Passbook.", inViewController: self)
}

func paymentAuthorizationViewController(controller: PKPaymentAuthorizationViewController!, didAuthorizePayment payment: PKPayment!, completion: ((PKPaymentAuthorizationStatus) -> Void)!) 委托(delegate)永远不会被调用。

证书状态看起来没问题。我在这里想念什么才能让它发挥作用?

最佳答案

应该有一个您需要调用的完成 block 。它应该在 PKPaymentAuthorizationViewController 的委托(delegate)方法 didAuthorizePayment 中,您需要使用此完成 block 并将成功或失败消息传递给它。它看起来应该有点像这样

extension BuySwagViewController: PKPaymentAuthorizationViewControllerDelegate {
  func paymentAuthorizationViewController(controller: PKPaymentAuthorizationViewController!, didAuthorizePayment payment: PKPayment!, completion: ((PKPaymentAuthorizationStatus) -> Void)!) {
    completion(PKPaymentAuthorizationStatus.Success)
  }

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

在完成 block 中,您应该传递 PKPaymentAuthorizationStatus.Success 或 PKPaymentAuthorizationStatus.Failure 取决于您是否能够处理付款。

此外,您可以在此处引用 Ray Wenderlich 教程。 http://www.raywenderlich.com/87300/apple-pay-tutorial

关于ios - ApplePay PKPaymentAuthorizationViewController 始终显示正在处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28239635/

相关文章:

ios - 我想将 Apple Pay 集成到我的应用程序中。 Apple 是否负责收款方面的事宜?

ios - 无法在 swift 2 中订阅任何对象类型的值

ios - UINavigationBar下的多个UITableView

ios - 如何删除 CocoaPods 安装的库?

ios - 如何以编程方式绕过 iOS 中的代理?

ios - 如何使用 referenceSizeForHeaderInSection 调整 collectionView header 的大小?

ios - Objective-c中有三个UITextView时如何使用UITextView委托(delegate)

ios - 如何在 iOS 中使用 swift 重新定位 View ?

ios - Swift/iOS 推出 Apple Pay 特定支付通行证

ios - Apple Pay如何添加持卡人姓名