Initialiseer SDK in uw iOS-app voor Apple Pay

  Laatst bijgewerkt: 

 

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
)

 

 

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
X1-EN.png
supportedNetworks
Lijst De door de handelaar ondersteunde betalingsnetwerken. De waarde moet een of meer van de volgende zijn: "amex", "masterCard" of "visa".
X1-EN.png
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:
  • "supportsCredit" - Om betalingen met een kredietkaart mogelijk te maken.
  • "supportsDebit" - Om pinbetalingen mogelijk te maken.
Zie voor een volledige specificatie Apple's eigen documentatie (link naar externe site).
X1-EN.png countryCode Alpha (2) De landcode van de handelaar in ISO2a-formaat.
X1-EN.png currencyCode Alpha (3) De transactie Munt code in ISO3a formaat.
X3-EN.png
buttonDarkModeStyle
Alfanumeriek

Wordt gebruikt om het uiterlijk van de knop Apple Pay te wijzigen wanneer het toestel in de donkere modus staat.

  Klik hier voor meer informatie (link naar externe site).

X3-EN.png buttonStyle Alfanumeriek

Wordt gebruikt om het uiterlijk van de knop Apple Pay te wijzigen wanneer het apparaat in de lichtstand staat.

  Klik hier voor meer informatie (link naar externe site).

X3-EN.png buttonType Alfanumeriek

Wordt gebruikt om de tekst op de knop Apple Pay te wijzigen voor verschillende betalingsscenario's.

  Klik hier voor meer informatie (link naar externe site).

  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.

Klik hier om te leren hoe.

Was dit artikel nuttig?
0 van de 0 vonden dit nuttig