Airwallex logo
Airwallex logo

Apple Pay

This guide describes how to add Apple Pay to your Airwallex iOS SDK integration.

Step 1: (Optional) Create a Customer

Create a Customer object and pass it to your server if you want to save your customer's details and attach payment information to this object. Note that this step is compulsory when you process recurring payments for a new customer.

From your server, access Airwallex API to Create a Customer API.

Step 2: Create a PaymentIntent

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

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

Step 3: Create a PaymentSession

Create a PaymentSession with all the order related information and payment type information. Ensure you include the merchant identifier information received after registering on Apple developer portal. See Enable Apple Pay for iOS.

swift
1let session = AWXOneOffSession()
2session.countryCode = "Your country code"
3session.billing = "Your shipping address"
4session.returnURL = "App return url"
5session.paymentIntent = paymentIntent; // PaymentIntent created for this order
1// Required for ApplePay
2let options = AWXApplePayOptions(merchantIdentifier: applePayMerchantId)
3options.additionalPaymentSummaryItems = [
4 .init(label: "goods", amount: 10),
5 .init(label: "tax", amount: 1)
6]
7options.merchantCapabilities = [.threeDSecure, .debit]
8options.requiredBillingContactFields = [.postalAddress]
9options.supportedCountries = ["AU"]
10options.totalPriceLabel = "COMPANY, INC."
11
12session.applePayOptions = AWXApplePayOptions(merchantIdentifier: "Your Merchant Identifier")

Step 4: Present payment flow to the shopper

Present payment flow with the Session created in the previous step. Airwallex SDK will then process the payment flow and return payment status to a delegate when the shopper completes or cancels payment.

Swift
1AWXUIContext.launchPayment(
2 from: "hosting view controller which also handles AWXPaymentResultDelegate",
3 session: "The session created above"
4)

Step 5: 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 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}

A completed flow does NOT imply a successful transaction. You will 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 and pass it to the client app.

Was this page helpful?