Skip to main content

Direct Checkout — Mode: URL

Returns a redirect URL for the selected payment method. Redirect the customer to this URL to complete payment.

When to Use

Use this mode when:

  • Integrating Alipay+, Boost, or other URL-redirect payment methods
  • Integrating Google Pay or Apple Pay via their wallet SDKs (pass the encrypted payment token in wallet.token)
  • Driving payment from your own checkout UI
note

Poll Query Payment Checkout every 3-5 seconds to track payment status.

How to Use

Endpoint
POST/v3/payment/online/checkout

Step 1: Create a Checkout

Call Hosted Payment Checkout to obtain checkoutId.

Step 2: Request the Redirect URL

POST with type: "URL" and the desired method.

Step 3: Redirect the Customer

Send the customer to the returned url. Poll Query Payment Checkout for status updates.

Google Pay / Apple Pay

For method: "GOOGLE_PAY" or method: "APPLE_PAY", also pass the encrypted payment token returned by the wallet SDK in wallet.token. This is the paymentMethodData.tokenizationData.token value from the Google Pay (or Apple Pay) response — itself a JSON object — sent as a stringified JSON inside wallet.token.

Decoded, the token has this shape:

wallet.token (decoded)
JSON
1{
2"signature": "MEUCID9QZJoOB83h7t6WkAQ8sBLhXj+jfzYfXzmelHPPrg9f...",
3"intermediateSigningKey": {
4 "signedKey": "{\"keyValue\":\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...\",\"keyExpiration\":\"1787074723781\"}",
5 "signatures": ["MEYCIQChx9HTXpjHf3ma5qBK1eygwc4s20z5zEpiCKBxE2..."]
6},
7"protocolVersion": "ECv2",
8"signedMessage": "{\"encryptedMessage\":\"l9FEv/4so6kVNYFfN5IPJG3Rt9gxXWgs9...\",\"ephemeralPublicKey\":\"BIsm4mMzbnVrN3...\",\"tag\":\"...\"}"
9}

Sent on the wire, wallet.token is that whole object escaped into a single string:

Request
JSON
1{
2"checkoutId": "1786442259270666450",
3"type": "URL",
4"method": "GOOGLE_PAY",
5"wallet": {
6 "token": "{\"signature\":\"MEUCID9QZJoOB83h7t6WkAQ8sBLhXj+jfzYfXzmelHPPrg9f...\",\"intermediateSigningKey\":{\"signedKey\":\"{\\\"keyValue\\\":\\\"MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE...\\\",\\\"keyExpiration\\\":\\\"1787074723781\\\"}\",\"signatures\":[\"MEYCIQChx9HTXpjHf3ma5qBK1eygwc4s20z5zEpiCKBxE2...\"]},\"protocolVersion\":\"ECv2\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"l9FEv/4so6kVNYFfN5IPJG3Rt9gxXWgs9...\\\",\\\"ephemeralPublicKey\\\":\\\"BIsm4mMzbnVrN3...\\\",\\\"tag\\\":\\\"...\\\"}\"}"
7}
8}

The response may return action: "3DS_CHALLENGE" — redirect the customer to url to complete 3DS authentication before the payment is confirmed.

Response
JSON
1{
2"item": {
3 "action": "3DS_CHALLENGE",
4 "type": "URL",
5 "url": "https://sb-pg.revenuemonster.my/3ds/..."
6},
7"code": "SUCCESS"
8}

Request Parameters

checkoutIdSTRINGrequired

Checkout ID from the Hosted Payment Checkout response.

typeSTRINGrequired

Checkout type. Set to "URL".

methodSTRINGrequired

Payment method (e.g., ALIPAYPLUS_MY, GOOGLE_PAY, APPLE_PAY).

sourceSTRING

Accepted value: "H5". Only works when method is "WECHATPAY_CN".

walletOBJECT

Required when method is "GOOGLE_PAY" or "APPLE_PAY".

tokenSTRINGrequired

Encrypted payment token (stringified JSON) returned by the Google Pay / Apple Pay SDK.

Response Parameters

itemOBJECT

Response item

actionSTRING

Present when additional action is required (e.g., "3DS_CHALLENGE" for Google Pay / Apple Pay).

typeSTRING

Checkout session type.

urlSTRING

Checkout session URL.

codeSTRING

"SUCCESS" if the request succeeded.

errorOBJECT

Error details

codeSTRING

Error code.

messageSTRING

Error message.

debugSTRING

Debug message (sandbox only).