- Create a One-Time Use Token using credit card information or alternative payment methods, then create a payment.
- Create a One-Time Use Token using a
vaulted_tokenfrom a previously enrolled payment method to collect relevant information for fraud providers, then create a payment.
Step 1: Include the library in your project
The first step is to install Yuno SDK to your iOS project.Check iOS SDK VersionsTo view all available versions, visit the release page on the Yuno iOS SDK repository.
- Cocoapods: If you do not have a Podfile, follow the CocoaPods guide to create one. After creating the Podfile, you will integrate the Yuno SDK with Cocoapods by adding the line below to your Podfile:
- Swift Package Manager: Set up the Swift package, and then add Yuno SDK as a dependency, as presented in the following code block:
Step 2: Initialize Headless SDK with the public key
To initialize the Headless SDK, you need to import Yuno and provide a valid PUBLIC_API_KEY. If you don’t have your API credentials, access the Developers (Credentials) page to check how to retrieve them from the dashboard. The code block below presents an example of importing and initializing theYuno.
Swift 6 Concurrency RequirementsIf you’re using Swift 6, you’ll need to handle concurrency correctly when using the SDK’s asynchronous methods. See the Swift 6 Concurrency guide for detailed implementation options and best practices.
Step 3: Start the checkout process
Next, you will start the checkout process using theapiClientPayment function, providing the necessary configuration parameters. You need to call this function once your customer selects the payment method. As a result, the SDK will start collecting relevant information for 3DS and fraud prevention tools you have configured in your routing.
Parameters
The following table lists all required parameters and their descriptions.
| Parameter | Description |
|---|---|
countryCode | This parameter determines the country for which the payment process is being configured. The complete list of supported countries and their countryCode is available on the Country coverage page. |
checkout_session | Refers to the current payment’s checkout session created using the Create Checkout Session endpoint. Example: ‘438413b7-4921-41e4-b8f3-28a5a0141638’ |
Step 4: Generate token
After collecting all user information, you can start the payment. First, you need to create a one-time token (OTT) using the functionapiClientPayment.generateToken. As it is an asynchronous function, you can use do/catch to ensure you will correctly handle triggered errors. Below, you will find two examples of different scenarios to create a one-time token:
- Example 1: Create a one-time token utilizing a card as the payment method and including all requisite card information.
- Example 2: Create a one-time token using the
vaulted_tokeninformation.
Example 1
Example 2
apiClientPayment.generateToken function responses for both examples above. The response is a dictionary of type [String: Any].
Example 1
Example 2
Step 5: Create the payment
Once you have completed the steps described before, you can create a payment. The back-to-back payment creation must be carried out using the Create Payment endpoint. The merchant should call their backend to create the payment within Yuno, using the one-time token and the checkout session. The endpoint response includes thesdk_action_required parameter that indicates whether additional actions are needed to complete the payment:
For synchronous payment methods, the payment completes instantly. In this case, sdk_action_required will be false in the API response and the payment process ends. If the payment requires further interaction from the SDK to complete the flow, sdk_action_required will be true; in this case, proceed with Step 6 for instructions.
Step 6: Process asynchronous payments (Optional)
A payment with 3DS may require an additional challenge to check the customer’s identity, as described on the 3DS Card Verification page. If a 3DS verification challenge is necessary, the Create Payment endpoint response will contain:- Status equal to
PENDINGand sub status equal toWAITING_ADDITIONAL_STEP sdk_action_required = true
Complete the 3DS challenge
To complete the 3DS challenge of a card payment you created from your server, call thecontinueCardPayment function on your Headless client. The SDK will retrieve the payment state, present the 3DS challenge to your customer, and report every payment status update back to you.
continueCardPayment only supports CARD payments.YunoPaymentHeadless instance you used to generate the one-time token. Below is a complete example:
continueCardPayment, the SDK will:
- Retrieve the current state of the payment associated with the
checkoutSession. - Present the 3DS challenge in a secure web view, on top of your application’s current screen.
- Dismiss the challenge automatically once the customer completes it.
- Listen for the transaction result in real time and deliver each status update through the
onResultclosure, which is invoked on the main thread.
onResult closure can be called more than once: you will receive the intermediate processing status while the transaction is confirmed, followed by a terminal status (succeeded, reject, fail, userCancelled, or internalError).