Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PKPaymentAuthorizationViewController在iOS 8.4上意外崩溃_Ios_Objective C_Ios8_Applepay - Fatal编程技术网

PKPaymentAuthorizationViewController在iOS 8.4上意外崩溃

PKPaymentAuthorizationViewController在iOS 8.4上意外崩溃,ios,objective-c,ios8,applepay,Ios,Objective C,Ios8,Applepay,背景:我在iOS 8.2、8.3上使用了相同的代码,工作正常 PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request]; paymentPane.delegate = self; [self presentViewController:paymentPane animated:TRUE comp

背景:我在iOS 8.2、8.3上使用了相同的代码,工作正常

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

[self presentViewController:paymentPane animated:TRUE completion:nil];
付款请求代码:

        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;
问题:现在在iOS 8.4上,当我试图显示我的paymentPane时,不知何故它的值为零

致命异常:NSInvalidArgumentException应用程序试图 在目标上显示一个无模式视图控制器

我已经通过谷歌搜索和使用stackoverflow的答案尝试过了。

  • 像这样的支票

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

    [PKPaymentAuthorizationViewController可以付款]

  • 检查我的商户id是否有效

  • 检查我用于请求的所有代码是否有效

在Xcode调试器中运行时,我也遇到过类似的问题。作为一种解决方法,我在Xcode中停止应用程序,然后在iPhone或iPad上手动启动应用程序

这样做的一个缺点显然是您无法调试任何问题。我不得不求助于NSLog并阅读控制台日志

  • 检查您是否已将
    信用卡
    信息添加到设备
    存折

  • 检查您是否可以使用您的设备付款。

    目标C:
    Swift:
    
    let paymentNetworks=[PKPaymentNetworkAmex,PKPaymentNetworkMasterCard,PKPaymentNetworkVisa]
    如果PKPaymentAuthorizationViewController.CanMakeMPaymentSusingNetworks(paymentNetworks){
    NSLog(@“可以用您的卡付款”);
    }
    否则{
    NSLog(@“卡不支持”);
    }

  • 显然,我已经完成了所有这些,并且它在iOS 8.3中工作。 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"); } 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"); } let paymentNetworks = [PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa] if PKPaymentAuthorizationViewController.canMakePaymentsUsingNetworks(paymentNetworks) { NSLog(@"Can Make payment with your card"); } else { NSLog(@"Card is not supporting"); }