Airwallex logo
Airwallex logo

Desktop/Mobile Website Browser

Accept Thailand online banking payments on your website by redirecting shopper to bank pages. See checkout experience as below:

  1. The shopper chooses to pay with online banking
  2. The shopper selects their preferred bank on checkout page
  3. The shopper is redirected to selected bank
  4. The shopper logs in to online banking and review the order
  5. The shopper authorizes the payment
  6. The shopper is redirected to payment confirmation page

Step 1. Initialize a Payment Intent

Create a PaymentIntent object with a request_id, amount, currency and a merchant_order_id from your backend server.

Shell
1curl -X POST \
2 https://api.airwallex.com/api/v1/pa/payment_intents/create \
3 -H 'Content-Type: application/json' \
4 -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhNDc...' \
5 -d '{
6
7 "request_id": "ed11e38a-7234-11ea-aa94-7fd44ffd1b89",
8 "amount": 20,
9 "currency": "THB",
10 "merchant_order_id": "85d7b0e0-7235-11ea-862e-9f6aa1adfca6"
11 "return_url": "https://www.airwallex.com"
12 }'

Step 2. Get available banks

Thailand Online Banking requires bank_name when confirming the Payment Intent, you can call this API endpoint /api/v1/pa/config/banks with payment_method_type, country_code and lang to get available bank names based on the payment method selected.

Request:

1/api/v1/pa/config/banks?payment_method_type=online_banking&country_code=TH&lang=en

Response:

Shell
1{
2 "has_more": false,
3 "items": [
4 {
5 "name": "bangkok", // Bank name to be passed to our API
6 "display_name": "Bangkok Bank", // For front-end to display
7 "recources": {
8 "logo_url": "" // .svg
9 }
10 }
11 ]
12}

Note for available banks:

Alternatively, you can maintain a list of available banks locally on your server for payment methods that require bank_name if you do not want to use this API endpoint. However, we highly recommend you get the banks dynamically from this API to avoid any trouble when bank information or availability gets updated.

Supported banks:

bank_nameDisplay Name
bangkokBangkok Bank
krungsriKrungsri Bank
krungthaiKrungthai Bank
kasikornKasikorn Bank

Step 3. Redirect to Thailand Online Banking to complete payment

When a shopper selects to pay with Thailand Online Banking on their desktop/mobile browser, call the following API endpoints to get the URL in next_action to redirect the shopper to bank payment page to complete the payment.

  1. Obtain URL from Airwallex and redirect shopper to Thailand Onling Banking

Request:

Shell
1curl -X POST \
2 https://api.airwallex.com/api/v1/pa/payment_intents/{id}/confirm \
3 -H 'Content-Type: application/json' \
4 -H 'Authorization: Bearer eyJhbGciOiJIUzI1NiJ9.eyJqdGkiOiJhNDc...' \
5 -d '{
6 "request_id": "ed11e38a-7234-11ea-aa94-7fd44ffd1b89",
7 "payment_method":
8 {
9 "type": "online_banking",
10 "online_banking": {
11 "country_code": "TH",
12 "bank_name": "krungsri",
13 "shopper_name": "xxxxxx"
14 "shopper_email": "[email protected]",
15 "shopper_phone": "01234567"
16 }
17 }
18 }'

Response:

Shell
1{
2 "id": "int_hkstnp6nhg1rvlqn7bb",
3 "request_id": "65f37438-202e-4d3e-99c4-70eb71d16c7b",
4 "amount": 200,
5 "currency": "THB",
6 "merchant_order_id": "af38b82a-451c-4405-bee6-d4715bd50908",
7 "descriptor": "vip8888",
8 "status": "REQUIRES_CUSTOMER_ACTION",
9 "captured_amount": 0,
10 "latest_payment_attempt": {
11 ...
12 },
13 "created_at": "2021-08-26T08:04:03+0000",
14 "updated_at": "2021-08-26T08:06:23+0000",
15 "next_action": {
16 "type": "redirect",
17 "method": "GET",
18 "url": "https://pci-api.airwallex.com/pa/webhook/molpay/my/redirect?reference_id=...",
19 }
20}
  1. Wait for notification from Airwallex

Airwallex will notify you on the payment result asynchronously via the webhook API. Please refer to webhook documentation to set up your webhook accordingly. Although subscribing to different events is optional, it is recommended to at least subscribe to the payment_intent.succeeded which indicates that the shopper has successfully paid for the order via Thailand Online Banking.

  1. Query the PaymentIntent status

You may also query the status of a payment anytime via the PaymentIntents API

Shell
1 GET /payment_intents/{id}
Was this page helpful?