Initialisieren Sie das SDK in Ihrer iOS-App für Apple Pay

  Zuletzt aktualisiert: 

 

Vergewissern Sie sich, dass Sie alle Anforderungen erfüllt haben, bevor Sie fortfahren.
Klicken Sie hier für weitere Informationen.

 

Konfigurieren Sie die Instanz

Bevor Sie eine Zahlungsanforderung durchführen können, müssen Sie die username, gateway und environment, wie im folgenden Beispiel gezeigt:

TrustPayments.instance.configure(
username: username_from_trustpayments,
gateway: .eu,
environment: .staging,
translationsForOverride: nil
)

 

 

1. Hinzufügen von Apple Pay in den bestehenden Drop-in-View-Controller

In diesem Abschnitt wird gezeigt, wie die Schaltfläche Apple Pay in den Drop-in-View-Controller eingebunden wird.

let dropInVC = try ViewControllerFactory.shared.dropInViewController(

jwt: jwt,
customDropInView: dropInCustomView,
visibleFields: [.securityCode3],
applePayConfiguration: applePayConfiguration,
dropInViewStyleManager: dropInViewStyleManager,
dropInViewDarkModeStyleManager: dropInViewDarkModeStyleManager,
cardinalStyleManager: cardinalStyleManager,
cardinalDarkModeStyleManager: cardinalDarkModeStyleManager,

payButtonTappedClosureBeforeTransaction: {
(
controller: DropInController
)
in
},

transactionResponseClosure: {
(
jwt: [String],
threeDResponse: ThreeDResponse?,
error: APIClientError?
)
in
}

)
  Feld Format Beschreibung
X1-EN.png
supportedNetworks
Liste Die vom Händler unterstützten Zahlungsnetze. Der Wert muss einer oder mehrere der folgenden sein: "amex", "masterCard" oder "visa".
X1-EN.png
merchantCapabilities
Liste Das Feld muss "supports3DS" (um die Überprüfung von Touch ID / Face ID zu ermöglichen) und mindestens einen der folgenden zusätzlichen Werte enthalten:
  • "supportsCredit" - Um Kreditkartenzahlungen zu ermöglichen.
  • "supportsDebit" - Um Debitkartenzahlungen zu ermöglichen.
Eine vollständige Spezifikation finden Sie in der Apple-eigenen Dokumentation (Link zu externer Seite).
X1-EN.png countryCode Alpha (2) Der Ländercode des Händlers im ISO2a-Format.
X1-EN.png currencyCode Alpha (3) Der Code der Transaktion Währung im ISO3a-Format.
X3-EN.png
buttonDarkModeStyle
Alphanumerisch

Dient zur Änderung des Aussehens der Taste Apple Pay , wenn sich das Gerät im Dunkelmodus befindet.

  Klicken Sie hier für weitere Informationen (Link zu externer Seite).

X3-EN.png buttonStyle Alphanumerisch

Dient zur Änderung des Aussehens der Taste Apple Pay , wenn sich das Gerät im Lichtmodus befindet.

  Klicken Sie hier für weitere Informationen (Link zu externer Seite).

X3-EN.png buttonType Alphanumerisch

Wird verwendet, um den auf der Schaltfläche Apple Pay angezeigten Text für verschiedene Zahlungsszenarien zu ändern.

  Klicken Sie hier für weitere Informationen (Link zu externer Seite).

  Nützliche Informationen über die Schaltfläche Apple Pay


Sie können die Farbe der Schaltfläche und den angezeigten Text ändern, um sie besser an die Bedürfnisse Ihrer Kasse anzupassen.
Klicken Sie hier, um mehr zu erfahren (Link zu externer Seite).


Apple hat Richtlinien veröffentlicht, wie Sie die Schaltfläche Apple Pay auf Ihrer Kasse am besten positionieren.
Klicken Sie hier, um mehr zu erfahren (Link zu externer Seite).

 

2. Konfigurieren des Drop-in-View-Controllers, um nur die Apple Pay

In diesem Abschnitt wird gezeigt, wie Sie den Drop-in-View-Controller so konfigurieren, dass er nur Apple Pay mit der Mindestanzahl von Parametern anzeigt. Wenn Sie weitere Beispiele benötigen, können Sie sich die Beispielanwendung im GitLab Repository ansehen (Link zu externer Seite).

let request = PKPaymentRequest()

request.supportedNetworks = [.visa, .masterCard, .amex]
request.merchantCapabilities = [.capability3DS, .capabilityCredit, .capabilityDebit]
request.merchantIdentifier = "merchant.ios.trustpayments.test"
request.countryCode = "GB"
request.currencyCode = "GBP"

let applePayConfiguration = TPApplePayConfiguration(
handler: self,
request: request,
buttonStyle: .black,
buttonDarkModeStyle: .white,
buttonType: .plain
)

let dropInVC = try ViewControllerFactory.shared.dropInViewController(
jwt: jwt,
customDropInView: nil,
visibleFields: [],
applePayConfiguration: applePayConfiguration,
dropInViewStyleManager: dropInViewStyleManager,
dropInViewDarkModeStyleManager: dropInViewDarkModeStyleManager,
payButtonTappedClosureBeforeTransaction: nil,
transactionResponseClosure: { (jwt, threeDResponse, error) in }
)

 

3. Hinzufügen der Schaltfläche Apple Pay zur benutzerdefinierten Ansicht

Zusätzliches Feld hinzufügen wallettoken zum performWalletTransaction() Methode, die die String-Darstellung der PKPayment Token, das Sie nach dem Apple Autorisierung erhalten:

let claim = TPClaims(
iss: keys.merchantUsername,
iat: Date(timeIntervalSinceNow: 0),
payload: Payload(
accounttypedescription: "ECOM",
sitereference: keys.merchantSiteReference,
currencyiso3a: "GBP",
baseamount: 299,
requesttypedescriptions: ["THREEDQUERY", "AUTH"],
termurl: "https://payments.securetrading.net/process/payments/mobilesdklistener"
)
)

guard let jwt = JWTHelper.createJWT(
basedOn: claim, signWith: keys.jwtSecretKey
), let token = payment.stringRepresentation else { return }
paymentTransactionManager.performWalletTransaction(
walletSource: .applePay, walletToken: token, jwt: jwt, transactionResponseClosure: {
(jwt, threeDResponse, error) in
}
)

Die wallettoken Feld, das an das Gateway übermittelt wird, muss die folgenden von Apple in der Datei PKPayment. Es folgt ein Beispiel dafür, wie das erwartete JSON generiert werden kann, das in der wallettoken Feld:

let expectedJson: [String: Any] = [
"token":[
"transactionIdentifier": self.token.transactionIdentifier,
"paymentData": paymentDataJson,
"paymentMethod":[
"network": self.token.paymentMethod.network?.rawValue,
"type": self.token.paymentMethod.type.description,
"displayName": self.token.paymentMethod.displayName
]
]
]

Wenn Sie es vorziehen, haben wir auch ein Dienstprogramm, das in unserer Beispielanwendung im GitLab Repository demonstriert wird, das die PKPayment die von Apple bereitgestellt werden, und geben das erwartete JSON zurück, das für die Durchführung einer Wallet-Transaktion benötigt wird:

extension PKPayment {
var stringRepresentation: String? {
let paymentData = self.token.paymentData
guard let paymentDataJson = try? JSONSerialization.jsonObject(
with: paymentData,
options: JSONSerialization.ReadingOptions(rawValue: 0)
) as? [String: Any] else { return nil }
let expectedJson: [String: Any] = [
"token":[
"transactionIdentifier": self.token.transactionIdentifier,
"paymentData": paymentDataJson,
"paymentMethod":[
"network": self.token.paymentMethod.network?.rawValue,
"type": self.token.paymentMethod.type.description,
"displayName": self.token.paymentMethod.displayName
]
]
]
guard let expectedJsonData = try? JSONSerialization.data(
withJSONObject: expectedJson,
options: JSONSerialization.WritingOptions(rawValue: 0)
) else { return nil }
return String(data: expectedJsonData, encoding: .utf8)
}
}

 

Handhabung der Datenaktualisierung

Wenn Sie Nutzern erlauben, ihre Lieferadresse und Zahlungsmethode auf dem Apple Pay Formular zu aktualisieren, müssen Sie die TPApplePayConfigurationHandler Protokolls und die entsprechenden Methoden zu behandeln:

shippingMethodChanged(to method: PKShippingMethod, updatedWith: @escaping ([PKPaymentSummaryItem]) -> Void)

shippingAddressChanged(to address: CNPostalAddress, updatedWith: @escaping ([Error]?, [PKPaymentSummaryItem]) -> Void)

Wenn Sie sich an diese Methoden halten, müssen Sie Folgendes aufrufen updateWith Verschluss mit neuen PKPaymentSummaryItem, andernfalls wird die Autorisierung nicht mehr funktionieren.

Außerdem müssen Sie sich die didAuthorizedPayment(payment: PKPayment, updatedRequestParameters: @escaping ((_ jwt: String?, _ walletToken: String?, [Error]?) -> Void)) Methode und liefern aktualisierte JWT auf der Grundlage des empfangenen PKPayment Objekts.

Dies kann nützlich sein, wenn Sie in der Lage sein müssen, die Adressdaten zu überprüfen, bevor die Zahlungsanforderung an das Gateway für die Bestellungen Ihrer Kunden übermittelt wird.

 

Wie geht es weiter?

  Ausführen zusätzlicher Anfragen

Bei fortgeschrittenen Konfigurationen können im Drop-in-View-Controller zusätzliche Anforderungen referenziert werden, um zusätzliche Aktionen durchzuführen.

Klicken Sie hier, um zu erfahren, wie.

War dieser Artikel hilfreich?
0 von 0 Personen fanden dies hilfreich