Airwallex logo
Airwallex logo

iOS SDK

Copy for LLMView as Markdown

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.

  2. (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.

  3. 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
  4. 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)
  5. 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.

  2. 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"
  3. 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)
  4. 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 paid 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 auto-debit 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?