我在启动PKPaymentAuthorizationViewController时遇到问题,在其中一个设备中返回nil。
设备区域设置为英国,我在 Apple 钱包中添加了一张英国发行的卡。
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
设备: 苹果手机 6操作系统:10.2.2
注意:同一张卡在另一台设备上为同一应用程序工作正常。
尝试如下链接和其他几个博客中提到的 - 没有运气Apple pay PKPaymentauthorizationViewController 在加载付款请求时始终返回 nil
寻找建议。
我遇到了同样的问题,原因是当它未包含在受支持的支付网络时,请使用 Discover 卡进行测试。确保您传递了您的用户群可能使用的所有信用卡类型。
尝试更改此行:
request.supportedNetworks = [PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex]
到以下内容:
request.supportedNetworks = [PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex, PKPaymentNetwork.discover]
在 Swift3 中,PKPaymentAuthorizationViewController
init()
的声明没有定义为可选的,即使它在失败时确实返回nil
。