Airwallex logo
Airwallex logo

iOS SDK

When capturing a Stored Credential for the first time

iOS Recurring first time

  1. Create a customer object and pass it to your server if it is a new customer. Recurring payment requires a customer ID to be initiated.

From your server, Create a Customer API with customer data received from client app and save the Customer ID returned.

  1. (Optional) If the shopper wishes to pay for the first order

Your client app will need a PaymentIntent to form a payment session for Airwallex SDK to present payment flow.

From your server, access Airwallex API to Create a Payment Intent API and pass the PaymentIntent returned to client app.

  1. Create an AWXRecurringSession (if No payment is to be made here), or an AWXRecurringWithIntentSession (if Payment Intent was created for this order)

Parameters required when creating a Session are listed as follows:

AWXRecurringSession

swift
1let session = AWXRecurringSession()
2session.setCurrency(ExamplesKeys.currency)
3session.setAmount(NSDecimalNumber(string: ExamplesKeys.amount))
4session.setCustomerId(ExamplesKeys.customerId)
5session.nextTriggerByType = ExamplesKeys.nextTriggerByType
6session.merchantTriggerReason = .unscheduled
7session.countryCode = ExamplesKeys.countryCode
8session.returnURL = ExamplesKeys.returnUrl

AWXRecurringWithIntentSession

swift
1let session = AWXRecurringWithIntentSession()
2session.paymentIntent = paymentIntent
3session.nextTriggerByType = ExamplesKeys.nextTriggerByType
4session.autoCapture = ExamplesKeys.autoCapture
5session.merchantTriggerReason = .scheduled
6session.countryCode = ExamplesKeys.countryCode
7session.returnURL = ExamplesKeys.returnUrl
  1. Present payment/authentication flow by creating an AWXUIContext with the Session created in the last step
swift
1AWXUIContext.launchPayment(
2 from: "hosting view controller which also handles AWXPaymentResultDelegate",
3 session: "The session created above",
4 filterBy: "An optional array of payment method names used to filter the payment methods returned by the server",
5 launchStyle: ".push/.present",
6 layout: ".tab/.accordion"
7)
  1. Handle authentication result

In AWXPaymentResultDelegate, handle authentication result to present it to the shopper.

swift
1# MARK: - AWXPaymentResultDelegate
2func paymentViewController(_ controller: UIViewController?, didCompleteWith status: AirwallexPaymentStatus, error: Error?) {
3 // call back for status success/in progress/ failure / cancel
4}

If PaymentIntent was created for this order, retrieve the Payment Intent API from your server to query payment result and pass it to client app.

When initiating a subsequent one-click transaction (CIT)

iOS Recurring CIT (card)

  1. Create a Payment Intent

Your client app will need a PaymentIntent to form a payment session for Airwallex SDK to present payment flow.

From your server, access Airwallex API to Create a Payment Intent API and pass the PaymentIntent returned to client app.

  1. Create an AWXOneOffSession with the PaymentIntent created in the previous step, a returnURL to your app, and shipping address and shopper country code of this order.
swift
1let session = AWXOneOffSession()
2session.countryCode = "Your country code"
3session.billing = "Your shipping address"
4session.returnURL = "App return url"
5session.paymentIntent = "payment intent"
6session.countryCode = "countryCode"
7session.returnURL = "universalLink of your app - required for payments like wechat pay"
  1. Present payment flow by with the Session created in the previous step, Airwallex SDK will handle the rest of the payment process and let you know when the payment flow is completed or cancelled.
swift
1AWXUIContext.launchPayment(
2 from: "hosting view controller which also handles AWXPaymentResultDelegate",
3 session: "The session created above",
4 filterBy: "An optional array of payment method names used to filter the payment methods returned by the server",
5 launchStyle: ".push/.present",
6 layout: ".tab/.accordion"
7)
  1. Query and present payment result

After the PaymentIntent is confirmed by SDK, this delegate will be called by the SDK automatically and you can check the status to see whether the payment process has been completed or not.

swift
1# MARK: - AWXPaymentResultDelegate
2func paymentViewController(_ controller: UIViewController?, didCompleteWith status: AirwallexPaymentStatus, error: Error?) {
3 // call back for status success/in progress/ failure / cancel
4}

Note that a completed flow does NOT imply a successful transaction, you need to query the payment result afterwards through your server to know whether the order is paied or not. Inside AWXPaymentResultDelegate, ask your server to retrieve the PaymentIntent.

On your server, retrieve the Payment Intent API, get the payment result within it and pass it to client app.

When initiating a subsequent subscription and autodebit transaction (MIT)

MIT (card & E-wallet)

  1. From your server, Create a Payment Intent API to request for a subsequent payment.

  2. Confirm the Payment Intent API with reference to Payment Consent ID of the stored Payment Consent

Was this page helpful?