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 | |
| Verplicht | supportedNetworks |
Lijst | De door de handelaar ondersteunde betalingsnetwerken. De waarde moet een of meer van de volgende zijn: "amex", "masterCard" of "visa". |
| Verplicht | 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:
Raadpleeg voor de volledige specificaties de documentatie van Apple (link naar externe site). |
| Verplicht | countryCode | Alpha (2) | Het landcode van de handelaar landcode in ISO2a-formaat. |
| Verplicht | currencyCode | Alpha (3) | De transactie Munt in ISO3a-formaat. |
| Optioneel | buttonDarkModeStyle |
Alfanumeriek |
Wordt gebruikt om het uiterlijk van de knop Apple Pay te wijzigen wanneer het toestel in de donkere modus staat. |
| Optioneel | buttonStyle | Alfanumeriek |
Wordt gebruikt om het uiterlijk van de knop Apple Pay te wijzigen wanneer het apparaat in de lichtstand staat. |
| Optioneel | 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
In dit gedeelte wordt uitgelegd hoe u de drop-in view controller kunt configureren om alleen Apple Pay weer te geven Apple Pay een minimaal aantal parameters. Als u meer voorbeelden nodig hebt, kunt u de voorbeeldapp bekijken in de GitLab (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.