2017-01-23 3 views
0

У меня возникла проблема с инициализацией PKPaymentAuthorizationViewController, возвращающей нуль на одном из устройств.PKPaymentAuthorizationViewController (paymentRequest: requestObject) возвращает nil

Регион устройства настроен на Великобританию, и я добавил карточку, выпущенную в Великобритании в Apple Wallet.

The 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

У меня была эта же проблема, и причина заключалась в использовании карты Discover для тестирования, когда она не включена в качестве поддерживаемой платежной сети. Убедитесь, что вы передаете все типы кредитных карт, которые могут использовать ваша пользовательская база.

Попробуйте изменить эту строку:

request.supportedNetworks = [PKPaymentNetworkVisa, PKPaymentNetworkMasterCard, PKPaymentNetworkAmex] 

Чтобы следующее:

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

В Swift3, Декларация для PKPaymentAuthorizationViewControllerinit() не определен как необязательный, даже если он вернется nil, когда он терпит неудачу ,

Смежные вопросы