I am trying to integrate Apple Pay into my demo application after this link, and I came across this question . I upgraded the iphone 6+ os version to version 8.1.1 but still couldn’t correctly represent PKPaymentAuthorizationViewController and I get this error. "The application tried to present the nil modal view controller to the target." Please suggest something as I am stuck on this. Here is the code I wrote: -
PKPaymentRequest *request = [[PKPaymentRequest alloc] init]; request.currencyCode = @"USD"; request.countryCode = @"US"; // This is a test merchant id to demo the capability, this would work with Visa cards only. request.merchantIdentifier = @"merchant.com.procharge"; // replace with YOUR_APPLE_MERCHANT_ID request.applicationData = [@"" dataUsingEncoding:NSUTF8StringEncoding]; request.merchantCapabilities = PKMerchantCapability3DS; request.supportedNetworks = @[PKPaymentNetworkMasterCard, PKPaymentNetworkVisa, PKPaymentNetworkAmex]; request.requiredBillingAddressFields = PKAddressFieldPostalAddress|PKAddressFieldPhone|PKAddressFieldEmail; request.requiredShippingAddressFields = PKAddressFieldPostalAddress|PKAddressFieldPhone|PKAddressFieldEmail; ///Set amount here NSString *amountText = @"0.01"; // Get the payment amount NSDecimalNumber *amountValue = [NSDecimalNumber decimalNumberWithString:amountText]; PKPaymentSummaryItem *item = [[PKPaymentSummaryItem alloc] init]; item.amount = amountValue; //item.amount = [[NSDecimalNumber alloc] initWithInt:20]; item.label = @"Test Payment Total"; request.paymentSummaryItems = @[item]; PKPaymentAuthorizationViewController *vc = nil; // need to setup correct entitlement to make the view to show @try { vc = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request]; } @catch (NSException *e) { NSLog(@"Exception %@", e); } if (vc != nil) { vc.delegate = self; [self presentViewController:vc animated:YES completion:CompletionBlock]; } else { //The device cannot make payments. Please make sure Passbook has valid Credit Card added. UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"PassKit Payment Error" message:NSLocalizedString(@"The device cannot make payment at this time. Please check Passbook has Valid Credit Card and Payment Request has Valid Currency & Apple MerchantID.", @"") delegate:nil cancelButtonTitle:NSLocalizedString(@"OK", @"") otherButtonTitles:nil]; [alert show]; }
Thanks and Regards
source share