2017-01-23 60 views
0

我在初始化PKPaymentAuthorizationViewController時在返回nil的設備之一中遇到問題。PKPaymentAuthorizationViewController(paymentRequest:requestObject)正在返回零

設備區域設置爲英國,並且我在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 

設備:iPhone 6 OS:10.2.2

注:同一張卡在了同一個應用程序的工作正常的另一設備onboared。

嘗試作爲在下面的鏈接和其他幾個blogs-沒有運氣 Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment request

尋找的建議中提到。

回答

0

我有這個相同的問題,原因是使用發現卡進行測試,當它不包括在支持的支付網絡中時。確保您傳遞了您的用戶羣可能使用的所有信用卡類型。

嘗試修改此行:

request.supportedNetworks = [PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex] 

以下幾點:

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

在Swift3,爲PKPaymentAuthorizationViewControllerinit()聲明沒有被定義爲可選的,即使它不返回nil時失敗。