Skip to content

Hosted

Introduction

The checkout product is an intelligent system that integrates multiple payment methods. It is initiated by merchants to create a checkout, where certain parameters (such as amount, currency, payment methods) can be specified without requiring any processing of the consumer flow. It supports multiple payment methods.

  • Simple development, fast deployment
  • No PCI certification required, sensitive information tokenization, ensuring consumer payment security
  • Customizable checkout page styles and logo (please contact your account manager for configuration)
  • Built-in 3DS authentication support, no need for merchant processing
  • Dynamic display of supported payment methods, no additional development required
  • Responsive page design, compatible with multiple devices, supporting multiple languages

For checkout payments, we provide three integration methods:
  1. Hosted: Single-page checkout, providing a complete URL for consumers to redirect and pay; requires minimal integration cost and simplest processing
  2. Drop-in: Embedded checkout that can be integrated into merchant pages, supporting certain customization
  3. Component: Component-based checkout that can seamlessly integrate into merchant pages with high customization

Mode Differences

HostedDrop-inComponent
Integration MethodRedirect to PayKKa's independent payment pageDirectly embedded in merchant website/App pagesDirectly embedded in merchant website/App pages
Customization LevelLow, dependent on payment provider's theme templateMedium, merchants can customize UI and interaction flow to some extentHigh, merchants can highly customize UI and interaction flow
Technical RequirementsLow, only requires API integrationModerate, requires API and frontend component integrationHigh, requires API and frontend component integration, customizable combination
FlexibilityDerived from PayKKa capabilities, relatively fixed functionalityDerived from merchant integration, can provide richer functionalityDerived from merchant integration, can provide the richest functionality
User ExperiencePage redirect, requires leaving merchant website to new pageSeamless experience, complete payment within merchant websiteSeamless experience, complete payment within merchant website
Trust LevelRelies on merchant and PayKKa brand site payment trustRelies on merchant site to establish payment trustRelies on merchant site to establish payment trust

Supported Payment Methods

  • Visa
  • MasterCard
  • JCB
  • American Express
  • Discover
  • Diners Club
  • Apple Pay
  • Google Pay
  • WechatPay
  • Alipay+
  • GCash
  • Maya (Paymaya)
  • ShopeePay
  • GrabPay
  • Zalopay
  • VietQR

Payment Process

Description of image
  1. Customers visit your checkout page, enter customer shipping and billing information, and click the payment button
  2. You initiate a payment request from the server to create a checkout, and you will receive the checkout page URL and redirect the customer to the checkout page
  3. The checkout page will dynamically display supported payment methods. After the customer selects a payment method, click the payment button
  4. After submitting the payment, we will process all possible additional operations, such as 3DS authentication or third-party redirect pages
  5. After the payment is processed, the customer is redirected to your redirect address
  6. Your webhook address will receive the payment result notification (it is recommended that you integrate transaction query to get the payment result)

Integration Process

  1. Get your transaction key
  2. Prepare your notification webhook address, provide it in the request parameters or set in the background, and notifications will be sent to the merchant at key payment nodes
  3. Prepare your redirect address, provide it in the request parameters, and it will redirect after checkout payment is completed
  4. Initiate the request: Create Session interface to create checkout, return checkout page URL
  5. Merchants can integrate the Query Session interface to get checkout results, or directly integrate the Query Transaction interface to get order results (if there is no final result, it means the consumer did not initiate a transaction)

PayKKa's checkout (identifier: session_id) represents a payment intention in page form, and the final payment result is determined by the transaction (identifier: order_id) result. Therefore, you need to focus on the final status of the order to determine the payment result.

Checkout Query: Used to query the status and payment result of the checkout. If the consumer has not initiated payment, no transaction order will be generated.

Transaction Query: Used to query the payment result of the transaction order. After the order reaches its final state, it will be notified through webhook.

Description of image

Create Checkout

When the customer is ready to pay, send a server-side request to create a Session and corresponding link, and initiate a payment request through the Session

Request Example Create Session

{
  "merchant_id": "18356675194960",
  "payment_type": "PURCHASE",
  "authorisation_type": "FINAL_AUTH",
  "capture_method": "AUTOMATIC",
  "trans_id": "m3246749195217",
  "expire_time": "2025-05-05T17:17:24+08:00",
  "session_mode": "HOSTED",  # Checkout mode, HOSTED: hosted, DROP_IN: embedded, COMPONENT: component
  "display_locale": "fr-FR",
  "currency": "HKD",
  "amount": "800",
  "return_url": "https://url", 
  "payment": {
    "store_payment_method": true,  # Whether to store card information and tokenize, will get token; true: store, false: do not store
    "token_usage": "CARD_ON_FILE" 
    "shopper_reference": "854f5baaf0a735139c583c4cea14d14c" 
  },
  "goods": [
    // Product information
  ],
  "bill": {
    // Billing information
  },
  "shipping": {
    // Shipping information, required for physical goods
  },
  "customer": {
    // Consumer/customer information
  }
}

Response Example

{
    "ret_code": "000000",
    "ret_msg": "Success",
    "data": {
        "merchant_id": "18356675194960",
        "trans_id": "m3246749195217",
        "session_id": "CS208760010022288125",
        "session_mode": "HOSTED",
        "status": "PROCESSING",
        "currency": "HKD",
        "amount": "800",
        "expire_time": "2025-05-05T17:17:24+08:00",
        "authorisation_type": "FINAL_AUTH",
        "capture_method": "AUTOMATIC",
        "session_url": "https://checkout.aq.paykka.com/hp/pay/CS208760010022288125"
    }
}

Checkout Query

Query checkout status by checkout ID(session_id)

Request Example Query Session

{
  "merchant_id": "18356675194960",
  "trans_id": "m3246749195217",  # trans_id/session_id two choose one
  "session_id": "CS208760010022288125"
}

Response Example

{
  "ret_code": "000000",
  "ret_msg": "Success",
  "data": {
    "merchant_id": "18356675194960",
    "trans_id": "m3246749195217",
    "session_id": "CS208760010022288125",
    "session_mode": "HOSTED",
    "status": "PROCESSING",
    "amount": "800",
    "currency": "HKD",
    "expire_time": "2025-05-05T17:17:24+08:00",
    "authorisation_type": "FINAL_AUTH",
    "capture_method": "AUTOMATIC",
    "session_url": "https://checkout.aq.paykka.com/hp/pay/CS208760010022288125"
  }
}

Transaction Query

Query transaction status by transaction ID(order_id)

Request Example Query Transaction

{
  "merchant_id": "18356675194960",
  "trans_id": "m3246749195217",    # session_id/order_id/trans_id three choose one
  "session_id": "CS208760010022288125",
  "order_id": "GW208760010022288125"
}

Response Example

{
  "ret_code": "000000",
  "ret_msg": "Success",
  "data": {
    "merchant_id": "18356675194960",
    "trans_id": "m3246749195217",
    "order_id": "GW208760010022288125",
    "session_id": "CS208760010022288125",
    "status": "SUCCESS", # Transaction status
    "error_code": "0000", # Transaction error code
    "error_description": "request success",
    "amount": "800",
    "currency": "HKD",
    "pay_finish_time": "2025-05-05T17:17:24+08:00"
  }
}

Purchase and Recurring

If your payment requirements involve recurring charges from customers' bank cards or e-wallets at regular intervals (such as monthly, yearly, or custom time intervals) without requiring manual authorization each time, you can use PayKKa's recurring payment feature.

Integration Method

  1. Currently, PayKKa's recurring payment feature requires the merchant to initiate it periodically
  2. For the first recurring payment, PayKKa needs to store the card information of the cardholder, and subsequent recurring payments only need to provide the cardholder's token
  3. For subsequent recurring payments, only the cardholder's token needs to be provided, without repeating card information

First recurring request example Create Session

{
  "merchant_id": "18356675194960",
  "payment_type": "RECURRING",
  "authorisation_type": "FINAL_AUTH",
  "capture_method": "AUTOMATIC",
  "trans_id": "m3246749195217",
  "expire_time": "2025-05-05T17:17:24+08:00",
  "session_mode": "HOSTED",
  "display_locale": "fr-FR",
  "currency": "HKD",
  "amount": "800",
  "return_url": "https://url",
  "mit": false,
  "payment": {
    "store_payment_method": true,
    "token_usage": "SUBSCRIPTION",
    "shopper_reference": "854f5baaf0a735139c583c4cea14d14c"
  },
  "goods": [
    // Product information
  ],
  "bill": {
    // Billing information
  },
  "shipping": {
    // Shipping information, required for physical goods
  },
  "customer": {
    // Consumer/customer information
  }
}

Subsequent recurring request example Initiate Transaction

{
  "merchant_id": "18356675194960",
  "payment_type": "RECURRING",
  "authorisation_type": "FINAL_AUTH",
  "capture_method": "AUTOMATIC",
  "trans_id": "m3246749195217",
  "currency": "HKD",
  "amount": "800",
  "mit": true,
  "recurring_agreement_id": "RA4264524535435435",
  "payment": {
    "payment_method": "BANKCARD",
    "shopper_reference": "558b5cb1b8cbcc8496062155c69cf2ab",
    "token": "TK20231435132143229"
  }
}

Store Card Information

PayKKa has achieved PCI-DSS Level 1 certification, with a complete and secure cardholder data encryption storage solution, and does not store sensitive cardholder data

PayKKa currently provides two forms of card information storage to provide better experience for merchants and consumers

  • Quick Payment: Creating a checkout can request to store card information to provide a smoother payment experience for the current consumer's next payment (non-recurring). For the next payment (checkout form), no need to enter card information again, only CVV is required, as shown belowDescription of image

Request example

{
    ...
    "payment": {
        "store_payment_method": true,
        "token_usage": "CARD_ON_FILE",
        "shopper_reference": "854f5baaf0a735139c583c4cea14d14c"
    },
    ...
}
  • Recurring Payment: Creating a recurring checkout requires mandatory storage of card information, and the next payment (recurring) requires carrying the token as a payment credential

Request example

{
    ...
    "payment": {
        "store_payment_method": true,
        "token_usage": "SUBSCRIPTION",
        "shopper_reference": "854f5baaf0a735139c583c4cea14d14c"
    },
    ...
}

3DS Processing

The checkout product does not require you to handle 3DS authentication. PayKKa will automatically perform intelligent security detection and processing of payments. You only need to focus on the payment results.

Description of image

Validity Period

The maximum validity period for the checkout is 24 hours. After expiration, payment cannot be continued. Consumers can click the back button in the upper left corner to return to the merchant website.

If payment is not initiated before expiration, there will be no notification. Querying the checkout status will return status=EXPIRED, and querying the transaction status will return ret_msg=the order doesn't exist

Description of image

Error Code

See Transaction Error Code

Result Notification

Reference Webhook