PKPaymentAuthorizationViewController在iOS 8.4上意外崩溃
背景:我在iOS 8.2、8.3上使用了相同的代码,工作正常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
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是否有效
- 检查我用于请求的所有代码是否有效
信用卡
信息添加到设备存折
中目标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"); }