Both Tap to Pay on iPhone and the card reader solution use the same Adyen SDK. That's why the instructions include remarks for both solutions.
To enable the Adyen SDK to handle payments, you need to add code to your POS app. This code starts a transaction with:
- A Terminal API payment request.
- The payment interface you want to use: your iPhone for Tap to Pay, or the card reader.
- The presentation mode you want to use.
After you have added this code, payments take place as follows:
- Your POS app creates a Terminal API payment request that is serialized to JSON, or you receive the Terminal API payment request from your backend.
- You pass the payment request to the Adyen SDK.
- The Adyen SDK checks if the session is still valid, and if necessary establishes a new session.
- The transaction starts on your mobile device.
In the card reader solution, the Adyen SDK shows instructions on your mobile device to guide the customer. - The Adyen SDK passes the Terminal API payment response to your POS app.
Add code to start a transaction
In your POS app, add code for the following steps:
-
If you create the Terminal API payment request in your POS app, use
PaymentService.installationId
asPOIID
in the MessageHeader of the payment request. (If you create the payment request in the backend, the backend uses theinstallationId
from the/sessions
response.) -
Create an instance of
Transaction.Request
usingTransaction.Request(data:)
, and pass the Terminal API payment request from your POS app or backend.let transaction = try Transaction.Request(data: requestData)
-
Get a
PaymentInterface
from an instance ofPaymentService
, usingPaymentService.getPaymentInterface(with:)
.Value Description tapToPay
Use the iPhone for Tap to Pay. cardReader
Use the card reader. let paymentService = PaymentService(...) let paymentInterface = try paymentService .getPaymentInterface(with: .cardReader)
-
Specify a
TransactionPresentationMode
that matches the UI framework of the POS app.Value Description viewModifier
The UI is embedded in a View
as aViewModifier
.presentingViewController
The UI is presented on top of the provided UIViewController
.let presentationMode: TransactionPresentationMode = .viewModifier
-
Invoke
PaymentService.performTransaction(with:paymentInterface:presentationMode:)
on your instance ofPaymentService
:
The Adyen SDK now checks for a session, and starts the transaction. In the card reader solution, the Adyen SDK shows screens on your mobile device to guide the customer.let transactionResponse = await paymentService.performTransaction( with: transaction, paymentInterface: paymentInterface, presentationMode: presentationMode )
- Pass the
transactionResponse
to your POS app. This is the Terminal API payment response, including data you can use to generate a receipt.