1

我在初始化 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 在加载付款请求时总是返回 nil

寻找建议。

4

1 回答 1

2

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

尝试更改此行:

request.supportedNetworks = [PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex]

到以下:

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

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

于 2017-04-13T20:48:45.390 回答