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
)
Ansicht Steuergeräte
Es gibt drei Methoden, mit denen Sie Apple Pay zu Ihrer Kasse hinzufügen können:
- Fügen Sie Apple Pay in den bestehenden Drop-in-View-Controller ein, damit Apple Pay als Zahlungsoption neben dem Formular zur Eingabe der Kartendaten des Kunden angezeigt werden kann.
- Lassen Sie Ihre Kasse nur Apple Pay als Zahlungsoption anzeigen.
- Apple Pay zu einer benutzerdefinierten Ansicht hinzufügen.
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 | |
supportedNetworks
|
Liste | Die vom Händler unterstützten Zahlungsnetze. Der Wert muss einer oder mehrere der folgenden sein: "amex", "masterCard" oder "visa". | |
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:
|
|
countryCode | Alpha (2) | Der Ländercode des Händlers im ISO2a-Format. | |
currencyCode | Alpha (3) | Der Code der Transaktion Währung im ISO3a-Format. | |
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). |
|
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). |
|
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.