PKPaymentAuthorizationViewController(paymentRequest:requestObject)返回nil

时间:2017-01-23 13:41:07

标签: ios xcode applepay passkit

我在启动PKPaymentAuthorizationViewController时遇到问题,在其中一个设备中返回nil。

设备区域设置为英国,我已在Apple Wallet中添加了英国发行的卡片。

PKPaymentRequest配置如下:

                let request = PKPaymentRequest()

                request.merchantIdentifier = "mymerchantid"
                request.supportedNetworks = [PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex]
                request.merchantCapabilities = PKMerchantCapability.Capability3DS
                request.countryCode = "US"
                request.currencyCode = "USD"

                let price: <NSDecimalNumber>

               let item : PKPaymentSummaryItem = PKPaymentSummaryItem(label: "amount", amount: price, type: .Pending)
                request.paymentSummaryItems = [
                        item
                    ]
           let paymentAuthorizationVC = PKPaymentAuthorizationViewController(paymentRequest: request) // Returning Nil

           if PKPaymentAuthorizationViewController.canMakePaymentsUsingNetworks(SupportedPaymentNetworks) // Returns true

设备:iPhone 6 操作系统:10.2.2

注意:同一个应用程序在同一个应用程序的其他设备上启动了相同的卡。

尝试如下面的链接和其他一些博客中提到的 - 没有运气 Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment request

寻找建议。

1 个答案:

答案 0 :(得分:2)

我遇到了同样的问题,原因是当它不包含在支持的支付网络中时,使用Discover卡进行测试。确保您传递了用户群可能使用的所有信用卡类型。

尝试更改此行:

request.supportedNetworks = [PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex]

以下内容:

request.supportedNetworks = [PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex, PKPaymentNetwork.discover]

在Swift3中,PKPaymentAuthorizationViewController init()的声明未定义为可选,即使它失败时返回nil