首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ApplePay PKPaymentAuthorizationViewController总是显示处理

ApplePay PKPaymentAuthorizationViewController总是显示处理
EN

Stack Overflow用户
提问于 2015-01-30 15:50:39
回答 2查看 4.5K关注 0票数 2

我正在尝试在我的应用程序中使用Apple Pay。显示PKPaymentAuthorizationViewController很好。然而,在我填写了信用卡和账单信息后,它只是显示了一个纺车和‘处理’,如图中所示。

显示Apple Pay视图控制器的代码如下:

代码语言:javascript
运行
复制
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)!)委托永远不会被调用。

证书状态看起来没问题。我在这里错过了什么让它发挥作用?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-15 02:51:08

应该有一个完成块,您需要调用。它应该位于PKPaymentAuthorizationViewController上的委托方法PKPaymentAuthorizationViewController中,您需要使用这个完成块并将成功或失败消息传递给它。它应该看起来有点像这样

代码语言:javascript
运行
复制
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)
  }
}

在完成块中,您应该通过PKPaymentAuthorizationStatus.Success或PKPaymentAuthorizationStatus.Failure,这取决于您是否能够处理付款。

此外,您还可以在这里参考Ray Wenderlich教程。http://www.raywenderlich.com/87300/apple-pay-tutorial

票数 8
EN

Stack Overflow用户

发布于 2016-01-21 00:30:47

我的问题是采用这种委托方法:

代码语言:javascript
运行
复制
func paymentAuthorizationViewController(controller: PKPaymentAuthorizationViewController, didSelectPaymentMethod paymentMethod: PKPaymentMethod, completion: ([PKPaymentSummaryItem]) -> Void) {

}

移开它,它就会停止无止境的旋转。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28239635

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档