2015-08-01 2 views
0

Фон: Я использовал тот же код для iOS 8.2.8.3, он работал нормально.PKPaymentAuthorizationViewController неожиданно падает на iOS 8.4

PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request]; 
paymentPane.delegate = self; 

[self presentViewController:paymentPane animated:TRUE completion:nil]; 

PaymentRequest Код:

 PKPaymentRequest *request = [[PKPaymentRequest alloc] init]; 


     NSString *chargeApplePay=[NSString stringWithFormat:@"%.02f",pay]; 

     PKPaymentSummaryItem *total = [PKPaymentSummaryItem summaryItemWithLabel:@"Grand Total" 
                      amount:[NSDecimalNumber decimalNumberWithString:chargeApplePay]]; 

     request.paymentSummaryItems = @[total]; 
     request.countryCode = @"US"; 
     request.currencyCode = @"USD"; 
     request.supportedNetworks = @[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa]; 
     request.merchantIdentifier = @"valid.com.myIdentifier"; 
     request.merchantCapabilities = PKMerchantCapability3DS; 

Вопрос: Теперь на прошивке 8.4, когда я пытаюсь представить свою paymentPane его значение равно нулю какой-то образом.

Неустранимого исключение: NSInvalidArgumentException Применение попыталось настоящее нильполугруппы контроллера представления модально на мишени.

То, что я уже пробовал при поиске по ключевым словам и используя ответы из stackoverflow.

  • б Чеки как

    [PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:@[PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa]] 
    

    и

    [PKPaymentAuthorizationViewController canMakePayments]

  • Проверка мой коммерсант идентификатор является действительным или нет.

  • Проверка Весь код, который я использовал для запроса, действителен или нет.

ответ

0

У меня также были проблемы при работе внутри отладчика Xcode. В качестве обходного пути я останавливаю приложение в Xcode, а затем вручную запускаю приложение на iPhone или iPad.

Недостатком этого является то, что вы не можете отлаживать какие-либо проблемы. Мне приходилось прибегать к NSLog и читать консольный журнал.

2
  1. Проверьте вы добавили Credit card информацию в устройстве Passbook или нет.

  2. Проверьте, можете ли вы произвести платеж с помощью своего устройства.

    цель C:

    if ([PKPaymentAuthorizationViewController canMakePayments]) { 
        NSLog(@"Can Make Payments"); 
    } 
    else { 
        NSLog(@"Can't Make payments"); 
    } 
    
    Свифта:
     
    if PKPaymentAuthorizationViewController.canMakePayments() { 
        NSLog(@"Can Make Payments"); 
    } 
    else { 
        NSLog(@"Can't Make Payments"); 
    } 
    

  3. Check whether you can make payment using the allowed payment networks.

    Objective C:
    NSArray *paymentNetworks = [NSArray arrayWithObjects:PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, PKPaymentNetworkAmex, nil]; 
    if ([PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks:paymentNetworks]) { 
        NSLog(@"Can Make payment with your card"); 
    } 
    else { 
        NSLog(@"Card is not supporting"); 
    }
    Swift:
     
    let paymentNetworks = [PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa] 
    if PKPaymentAuthorizationViewController.canMakePaymentsUsingNetworks(paymentNetworks) { 
        NSLog(@"Can Make payment with your card"); 
    } 
    else { 
        NSLog(@"Card is not supporting"); 
    }
+0

Очевидно, что я сделал все это, и он работал в прошивкой 8.3. –

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