Guest user checkout
This page describes how to embed a Full Featured Card Element on your payment page to accept payments.
How it works
The diagram below depicts the information flow in a Full Featured Card Element integration.
Before you begin
Before you implement the integration, consider the following:
Ensure your Airwallex account is activated for online payments.
Obtain your access token API by authenticating to Airwallex using your unique Client ID and API key. You will need the access token to make API calls.
Explore the
airwallex-payment-elements
JavaScript client library reference to familiarize yourself with the Embedded Elements methods, parameters, and properties.Install the package
- Using Yarn or NPM
yarn add airwallex-payment-elements
npm install airwallex-payment-elements
- Using CDN
<script src="https://checkout.airwallex.com/assets/elements.bundle.min.js"></script>
- Using Yarn or NPM
Step 1: Set up the server to create a PaymentIntent
When the shopper begins the checkout process, you will need to create a PaymentIntent object to indicate your intent to collect payment from the shopper.
When the checkout page loads, on your server, call Create a PaymentIntent API with an amount and currency. Always decide how much to charge on the server side, a trusted environment, as opposed to the client. This prevents malicious shoppers from being able to alter the payment amount.
Provide return_url
in Create a PaymentIntent API to indicate where Airwallex should redirect the shopper after completing the payment, whether successful or otherwise.
The PaymentIntent’s id
and client_secret
are returned in the response — these parameters let you confirm the payment and update card details on the client, without allowing manipulation of sensitive information, like payment amount.
Step 2: Initialize legacy Airwallex element on your checkout page
First, you will need to import the legacy airwallex-payment-elements SDK and then initialize the package. For details, see Initialize Airwallex .
Step 3: Add the Full Featured Card Element to your checkout page
To embed the Full Featured Card Element into your checkout page, you will need to create an empty container, create the Element and then mount the Element to the container.
Define the payment form
First, create an empty container div
with a unique id in your payment form. Ensure that the payment form only contains one Element with this unique id. Airwallex inserts an iframe into this div
on mounting the Element.
Create the Full Featured Card Element
When the payment form has loaded, call createElement(type, options)
by specifying the Element type as fullFeaturedCard
to create the Element. Ensure that the payment form only contains one Element with fullFeaturedCard
id.
Mount the Full Featured Card Element
Call mount()
with the id of the div
to mount the Element to the DOM. This creates a multi-line input container that collects the card number, expiry date, CVC, name on card, and the checkout button. The Element should only be mounted once in a single payment flow.
Add onReady
event listener to ensure the Element is mounted. Use this event to prepare and load the checkout page.
Full Featured Card props
You can also pass options in createElement()
to overwrite styles and other functions as shown in the following table. All properties are optional. For details, see fullFeaturedCard props .
Step 4: Handle the response
Add success
and error
event listeners to handle error and success events received from Airwallex.
If no error occurred, display a message that the payment was successful. If payment fails with an error, display the appropriate message to your shopper so they can take action and try again.
Retrieve the payment result
For any actions subsequent to the payment such as shipping goods or sending email receipts, you can retrieve the payment result using the following options:
Set up webhooks to receive notifications on whether the payment has succeeded. Airwallex sends
payment_intent.succeeded
event when a payment succeeds. Listen to these events rather than waiting on a callback from the client. On the client, the shopper could close the browser window or quit the app before the callback executes. For information on how to set up webhooks and listen to events, see Getting started with webhooksOn your server, call Retrieve a PaymentIntent API to check the PaymentIntent status.
Check Payment Activity screen on your Airwallex web app.
Test your integration
Use test card numbers and the test and go-live checklist to test your integration for various success and error scenarios in the demo environment and then go live in the production environment.
Example integrations
Explore a full, working code sample of an integration built using various web frameworks .
Supported features
You can use the following features in your Drop-in Element integration.
Style and appearance customization
There are three ways to customize the Drop-in Element JS with theme
, style
, and appearance
options.
theme
Configure the color palette using the theme
object.
style
Provide base styling for the iframe using CSS properties. You can also customize the width and height of a pop-up overlay, e.g., payment with 3-D Secure authentication.
appearance
Fine tune individual Elements and states by specifying custom CSS properties using rules. The following classes and pseudo-classes can be styled using rules.
.Button
: CSSProperties.Button:hover
: CSSProperties.GooglePayButton
: CSSProperties.GooglePayButton:hover
: CSSProperties.ApplePayButton
: CSSProperties.ApplePayButton:hover
: CSSProperties.Input
: CSSProperties.Input:hover
: CSSProperties.Input:active
: CSSProperties
layout
The default Drop-in Element layout is in accordion, but you may customize whether you would want to display either the tab or accordion layout. To do so, you can pass your preference under layout
in createElement()
.
Accordion layout on Desktop
Accordion layout on Mobile
Tab layout on Desktop
Tab layout on Mobile
Localization
You can configure the Element to display localized text of the payment fields based on the locale
set in init()
. See supported locales JS.
Save card details for future payments
Airwallex allows you to create a PaymentConsent with the shopper to initiate future payments using shopper’s saved card details. For more information, see Save payment details for future payments.
3D Secure authentication
Airwallex automatically handles 3D Secure authentication offering either frictionless or challenge flow depending on the card issuer’s requirements. You can optionally pass the following fields in createElement()
to support 3DS:
authFormContainer
JS: A container for the authentication form. If a challenge flow is required to authenticate the shopper, an iframe will be rendered in this container to display the authentication page provided by the issuing bank. If not provided, Airwallex will create adiv
afterbody
tag and use it as the container.withBilling
JS: If applicable set this totrue
to collect billing information from the shopper, which increases the likelihood of frictionless checkout.
Device fingerprinting
Device fingerprinting uniquely tracks and identifies devices used for transacting on your shopping site, increasing your protection from fraud. Airwallex.js automatically handles device fingerprinting, so no additional integration is needed.
Payments for platforms
You can accept payments as a platform via Drop-in Element. Example platforms include marketplaces, SaaS platforms, on-demand service providers. For more information on payments for platforms with Airwallex as an acquirer, see Airwallex payment gateway.
If you want the shopper to see the available payment methods activated by the connected account, specify the Connected Account ID in the platformConnectedAccount
field in createElement()
.
To use Connected Account information to process the payment, e.g., statement descriptor displayed on the shopper's credit card or bank statement, provide connected_account_id
in Create a Payment Intent API.
Troubleshooting
Some common error scenarios include :
Error | Next steps |
---|---|
Airwallex is not defined | Check if you have initialized Airwallex (Step 2) before using Airwallex functions. If you are using CDN, check if you have changed the bundle version from x.x.x to the latest version in the package.json file. For example, https://checkout.airwallex.com/assets/elements.bundle.min.js is invalid |
Access denied, authentication failed | Check if you have replaced your intent id and client_secret in createElement() and optionally confirm() . |
The PaymentIntent with ID int_xxxxxxxxx cannot be found | Check if the environment you initialized Airwallex in, for example, demo or prod, matches the environment you retrieved your intent id and client_secret from. In other words, if you ran init in the demo environment, you must also create your PaymentIntent in the demo environment. |