2014-11-18 2 views
2

Я пытаюсь интегрировать Apple Pay в свое демо-приложение после this link & Я столкнулся this issue вопрос. Я обновил свою версию iphone 6+ os до версии 8.1.1, но все еще не смог правильно представить PKPaymentAuthorizationViewController & Я получаю эту ошибку «Приложение попыталось представить nil modal view controller на цель». Пожалуйста, предложите что-нибудь, поскольку я застрял на этом .Здесь есть код, который я написал: -PKPaymentAuthorizationViewController присутствует как контроллер представления nil

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]; 


} 

спасибо & с уважением

+0

Контроллер просмотра nil означает, что объект 'PKPaymentRequest' был плохо сформирован и отсутствовала информация. Можете ли вы разместить свой код здесь? – lxt

+0

У меня такая же проблема .... пожалуйста, кто-то поможет. – iAnurag

ответ

1

ли вы реализуете эти методы, чтобы проверить, прежде чем пытаться представить ViewController?

// Determine whether this device can process payment requests. 
// YES if the device is generally capable of making in-app payments. 
// NO if the device cannot make in-app payments or if the user is restricted from authorizing payments. 
+ (BOOL)canMakePayments; 

// Determine whether this device can process payment requests using specific payment network brands. 
// Your application should confirm that the user can make payments before attempting to authorize a payment. 
// Your application may also want to alter its appearance or behavior when the user is not allowed 
// to make payments. 
// YES if the user can authorize payments on this device using one of the payment networks supported 
// by the merchant. 
// NO if the user cannot authorize payments on these networks or if the user is restricted from 
// authorizing payments. 
+ (BOOL)canMakePaymentsUsingNetworks:(NSArray *)supportedNetworks; 
+0

Должен ли я переопределить эти два метода и вернуть ДА? – iAnurag

+0

Нет, когда вы выполняете эти методы, они ответят «да» или «нет», что поможет устранить проблему, почему плата Apple не может работать на этом устройстве. – hybrdthry911

+0

PKPaymentAuthorizationViewController canMakePaymentsUsingNetworks: @ [PKPaymentNetworkAmex, PKPaymentNetworkMasterCard, PKPaymentNetworkVisa] возвращает всегда НЕТ ... любая идея, почему ??? Iphone 6 + iOS 8.1.1 ... – Femina

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