Zorg ervoor dat u aan alle eisen voldoet voordat u verder gaat.
Klik hier voor meer informatie.
De instantie configureren
Voordat u een betalingsverzoek kunt uitvoeren, moet u de username, gateway en environment, zoals in onderstaand voorbeeld:
TrustPayments.instance.configure(
username: username_from_trustpayments,
gateway: .eu,
environment: .staging,
translationsForOverride: nil
)
Controllers bekijken
Er zijn drie methoden om Apple Pay toe te voegen aan uw kassa:
- Apple Pay toevoegen aan bestaande drop-in view controller, zodat Apple Pay kan worden gepresenteerd als betalingsoptie naast het formulier waarin om de kaartgegevens van de klant wordt gevraagd.
- Laat uw kassa alleen Apple Pay weergeven als betalingsoptie.
- Apple Pay toevoegen aan een aangepaste weergave.
1. Apple Pay toevoegen aan bestaande drop-in view controller
Deze sectie demonstreert hoe je de knop Apple Pay opneemt in de drop-in view controller.
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
}
)
Veld | Formaat | Beschrijving | |
supportedNetworks
|
Lijst | De door de handelaar ondersteunde betalingsnetwerken. De waarde moet een of meer van de volgende zijn: "amex", "masterCard" of "visa". | |
merchantCapabilities
|
Lijst |
Het veld moet "supports3DS" bevatten (om Touch ID / Face ID verificatie mogelijk te maken), en ten minste een van de volgende extra waarden:
|
|
countryCode | Alpha (2) | De landcode van de handelaar in ISO2a-formaat. | |
currencyCode | Alpha (3) | De transactie Munt code in ISO3a formaat. | |
buttonDarkModeStyle
|
Alfanumeriek |
Wordt gebruikt om het uiterlijk van de knop Apple Pay te wijzigen wanneer het toestel in de donkere modus staat. |
|
buttonStyle | Alfanumeriek |
Wordt gebruikt om het uiterlijk van de knop Apple Pay te wijzigen wanneer het apparaat in de lichtstand staat. |
|
buttonType | Alfanumeriek |
Wordt gebruikt om de tekst op de knop Apple Pay te wijzigen voor verschillende betalingsscenario's. |
Nuttige bronnen met betrekking tot de knop Apple Pay
U kunt de kleur van de knop en de weergegeven tekst aanpassen aan de behoeften van uw kassa.
Klik hier voor meer informatie (link naar externe site).
Apple heeft richtlijnen gepubliceerd voor de beste positie van de Apple Pay knop op uw kassa.
Klik hier voor meer informatie (link naar externe site).
2. Configuratie van drop-in view controller om alleen te tonen Apple Pay
Dit gedeelte laat zien hoe de drop-in view controller geconfigureerd kan worden om alleen Apple Pay te tonen met het minimum aantal parameters. Als u meer voorbeelden nodig hebt, kunt u de voorbeeld-app bekijken die u kunt vinden in de GitLab repository (link naar externe site).
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. Toevoegen van Apple Pay knop aan aangepaste weergave
Extra veld toevoegen wallettoken aan de performWalletTransaction() methode, die de stringrepresentatie van de PKPayment token dat je krijgt na de Apple autorisatie:
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
}
)
De wallettoken veld dat naar de gateway wordt gestuurd, moeten de volgende door Apple in het PKPayment. Het volgende is een voorbeeld van hoe de verwachte JSON kan worden gegenereerd, die in de wallettoken veld:
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
]
]
]
Als u wilt, hebben we ook een hulpprogramma dat wordt gedemonstreerd in onze voorbeeld-app in de GitLab repository, die de PKPayment verstrekt door Apple en geeft de verwachte JSON terug die nodig is om een portemonneetransactie uit te voeren:
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)
}
}
Verwerking van gegevensupdate
Als u gebruikers toestaat hun verzendadres en betalingsmethode bij te werken op het Apple Pay formulier, moet u voldoen aan de TPApplePayConfigurationHandler protocol en hanteren de juiste methoden:
shippingMethodChanged(to method: PKShippingMethod, updatedWith: @escaping ([PKPaymentSummaryItem]) -> Void)
shippingAddressChanged(to address: CNPostalAddress, updatedWith: @escaping ([Error]?, [PKPaymentSummaryItem]) -> Void)
Wanneer u zich aan die methoden conformeert, moet u het volgende aanroepen updateWith sluiting met nieuwe PKPaymentSummaryItemanders loopt de autorisatie uit.
Ook moet u luisteren naar de didAuthorizedPayment(payment: PKPayment, updatedRequestParameters: @escaping ((_ jwt: String?, _ walletToken: String?, [Error]?) -> Void))
methode en verstrekt een bijgewerkt JWT op basis van het ontvangen PKPayment object.
Dit kan nuttig zijn als u de adresgegevens moet kunnen verifiëren voordat het betalingsverzoek naar de gateway wordt verzonden voor bestellingen van uw klanten.
Waar nu?
Aanvullende verzoeken uitvoeren
Voor meer geavanceerde configuraties kan in de drop-in view controller worden verwezen naar extra verzoeken om extra acties uit te voeren.