2017-02-17 4 views
0

Wenn ich versuche, einen PKPaymentAuthorizationController mit present(completion: _) zu präsentieren, schlägt es ohne weitere Informationen fehl.Apple Pay Authorization Controller kann nicht angezeigt werden

Hier ist, wie ich es bin präsentiert:

let paymentSummaryItems: [PKPaymentSummaryItem] = <HIDDEN> 

let paymentRequest = PKPaymentRequest() 
paymentRequest.paymentSummaryItems = paymentSummaryItems 
paymentRequest.merchantIdentifier = <HIDDEN> 
paymentRequest.merchantCapabilities = .capability3DS 
paymentRequest.countryCode = "US" 
paymentRequest.currencyCode = "USD" 
paymentRequest.supportedNetworks = [.visa, .amex, .masterCard, .discover] 
paymentRequest.requiredShippingAddressFields = [.email] 

let paymentController = PKPaymentAuthorizationController(paymentRequest: paymentRequest) 
paymentController.delegate = self 

paymentController.present { success in 
    if success { 
     print("Presented payment controller") 
    } else { 
     print("Failed to present payment controller") 
    } 
} 

Jedes Mal, wenn ich versuche, erhalte ich die Meldung „Fehler Zahlung Controller präsentieren“, und keine Apple-Pay Authorization modal angezeigt wird.

Ich habe eine PKPaymentAuthorizationController.canMakePayments() Prüfung hinzugefügt, und das gibt wahr zurück. Ich bin mir nicht sicher, was schief gehen könnte. Der gleiche Code (mit einem anderen merchantIdentifier) funktioniert in meinen anderen Apple Pay-Projekten ohne Probleme.

Antwort

0

Ich habe es herausgefunden, für jeden, der dieses Problem in der Zukunft begegnet.

Es stellte sich heraus, gab es ein Problem mit einer der NSDecimalNumbers in meinem Array von PKPaymentSummaryItems, es wurde nicht ordnungsgemäß in eine Dezimalzahl konvertiert und in amount wurde auf NaN festgelegt. Sobald ich es behoben hatte, erschien der Controller richtig.

0

Ich habe es mit den folgenden Schritten behoben: 1 davon könnte die richtige Antwort sein.

  • In App Zielfunktionen ermöglichen Apple-Geldbörse und Apple zahlen
  • korrekte Händler-ID einschließen, in der Apple-Pay-Liste
  • Ändern Sie den Händler-ID in Ansprüche
  • Wenn Fehler in provisining, aktivieren Sie " automatisch „Profil Bereitstellung verwalten Unterzeichnung (deaktivieren/überprüfen, ob reqd.)

App target capabilities screenshot

Verwandte Themen