
我正在尝试在我的应用程序中使用Apple Pay。显示PKPaymentAuthorizationViewController很好。然而,在我填写了信用卡和账单信息后,它只是显示了一个纺车和‘处理’,如图中所示。
显示Apple Pay视图控制器的代码如下:
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)!)委托永远不会被调用。
证书状态看起来没问题。我在这里错过了什么让它发挥作用?
发布于 2015-12-15 02:51:08
应该有一个完成块,您需要调用。它应该位于PKPaymentAuthorizationViewController上的委托方法PKPaymentAuthorizationViewController中,您需要使用这个完成块并将成功或失败消息传递给它。它应该看起来有点像这样
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
发布于 2016-01-21 00:30:47
我的问题是采用这种委托方法:
func paymentAuthorizationViewController(controller: PKPaymentAuthorizationViewController, didSelectPaymentMethod paymentMethod: PKPaymentMethod, completion: ([PKPaymentSummaryItem]) -> Void) {
}移开它,它就会停止无止境的旋转。
https://stackoverflow.com/questions/28239635
复制相似问题