Sto cercando di implementare Apple Pay per la mia app. Ho il PKPaymentAuthorizationViewController che prova a caricare Apple Pay View. Questo controller di visualizzazione veniva restituito come Nil dal costruttore se non avevo già alcune carte nel mio portafoglio. Quindi, ho deciso di guidare l'utente attraverso il processo in cui inserivano le informazioni della carta. Sono stato in grado di ottenere questo utilizzandoRilevazione pagamento Apple Il portafoglio non ha carte di credito
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
[lib openPaymentSetup];
Qui è la parte dove ho l'inizializzazione del PKPaymentAuthorizationViewController. Questo restituisce un oggetto valido su Simulator che mostra la vista. Ma su un dispositivo reale senza una carta di credito configurata restituisce nil e si imbatte in un'eccezione di runtime. Ecco il codice di inizializzazione:
if ([PKPaymentAuthorizationViewController canMakePayments]) {
// init arr
[arr addObject:total];
request.paymentSummaryItems = arr;
PKPaymentAuthorizationViewController *paymentPane = [[PKPaymentAuthorizationViewController alloc] initWithPaymentRequest:request];
paymentPane.delegate = self;
[self presentViewController:paymentPane animated:TRUE completion:nil];
}
Qui la matrice è una valida NSArray di PKPaymentSummaryItem che è il motivo per cui si lavora con successo sul simulatore.
Devo chiamare il metodo precedente di openPaymentSetup, ogni volta che vedo un utente senza la carta di credito nel proprio portafoglio. C'è un modo per scoprirlo?
Attualmente sto usando
if ([PKPassLibrary isPassLibraryAvailable]) {
PKPassLibrary* lib = [[PKPassLibrary alloc] init];
if ([lib passesOfType:PKPassTypePayment].count == 0) {
[lib openPaymentSetup];
}
}
Ma questo non funziona da quando sto guardando il conteggio dei passaggi in portafoglio. Che può essere come carta d'imbarco per compagnia aerea, o di passaggio Eventbrite, ecc
Guardato: PKPaymentAuthorizationViewController present as nil view controller
Apple pay PKPaymentauthorizationViewController always returning nil when loaded with Payment request
c'è un motivo per cui non è possibile utilizzare il metodo canMakePayments dalla documentazione Apple? (https://developer.apple.com/library/ios/documentation/PassKit/Reference/PKPaymentAuthorizationViewController_Ref/#//apple_ref/occ/clm/PKPaymentAuthorizationViewController/canMakePayments) – bplattenburg
@bplattenburg Restituisce sempre true. Controlla la modifica. – Rushabh
È necessario utilizzare il metodo 'canMakePaymentsUsingNetworks:', non il metodo 'canMakePayments'. – rmaddy