AlipayCN & AlipayHK

1. Required Tools or Apps

Method A - Register Your Own Test Account

  • Install the Alipay test wallet app AWallet at here.
  • Register an Alipay sandbox account at here.

Method B - Use a Shared Test Account

  • Install the Alipay test wallet app AWallet at here.
  • Contact technical support to obtain test account credentials.

2. General Guidelines

  • For payment code scenarios, set is_present to true.

3. Initiating a Payment Request

3.1 QR Code

Sample Request Payload

{
    "amount": "7.77",
    "currency": "SGD",
    "payment_method": {
        "type": "alipaycn",
        "alipaycn": {
            "flow": "qrcode",
            "is_present": false
        }
    },
    "merchant_order_id": "{{$guid}}",
    "description": "acquiring sandbox testing",
    "metadata": {
        "request_id": "{{$guid}}"
    },
    "return_url": "https://127.0.0.1:8080/api/v1/callback"
}

Sample Response Payload

{
    "amount": 7.77,
    "available_payment_method_types": null,
    "cancel_time": "",
    "cancellation_reason": "",
    "captured_amount": "7.77",
    "client_secret": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtYXN0ZXJfaWQiOiIwIiwiYWNjb3VudF9pZCI6ImE3YjkyYTE5LWJmYzMtNGM4Yi04YTRmLWNmY2Y3NGNhYjM0NSIsImludGVudF9pZCI6IlBJMTkzNTU4MDU1MTgzNDUwNTIxNiIsImV4cCI6MTc1MDMxNTEzOSwiaWF0IjoxNzUwMzEzMzM5fQ.tWrR1JjQbdAoNN7TiynKK2I77mEdA8apcBXl6fkhoeU",
    "complete_time": "",
    "create_time": "2025-06-19T14:08:59+08:00",
    "currency": "SGD",
    "description": "acquiring sandbox testing",
    "intent_status": "REQUIRES_CUSTOMER_ACTION",
    "latest_payment_attempt": {
        "amount": 7.77,
        "attempt_id": "PA1935580551901614080",
        "attempt_status": "AUTHENTICATION_REDIRECTED",
        "captured_amount": 7.77,
        "complete_time": "",
        "create_time": "2025-06-19T14:08:59+08:00",
        "currency": "SGD",
        "failure_code": "",
        "refunded_amount": 0,
        "update_time": "2025-06-19T14:08:59+08:00"
    },
    "merchant_order_id": "f2c98168-2f07-4459-853a-329655ebf90e",
    "metadata": {
        "request_id": "16cfe523-ac95-4f02-9e31-58bb090a0138"
    },
    "next_action": {
        "display_qr_code": {
            "expires_at": "2025-06-19T14:38:59.563+08:00",
            "qr_code": "https://global.alipay.com/281002040092rZoN1k6ln7O91r9fwjb2tUo2",
            "qr_code_url": "https://global.alipay.com/merchant/order/showQrImage.htm?code=https%3A%2F%2Fglobal.alipay.com%2F281002040092rZoN1k6ln7O91r9fwjb2tUo2&picSize=M"
        }
    },
    "payment_intent_id": "PI1935580551834505216",
    "return_url": "https://127.0.0.1:8080/api/v1/callback",
    "update_time": "2025-06-19T14:08:59+08:00"
}

Testing Steps

  1. Open the QR code URL provided in the qr_code_url field of response.
  2. Use the AWallet app to scan the QR code and complete the payment.

Note: The value of "intent_status" will be "REQUIRES_CUSTOMER_ACTION", indicating that customer interaction (i.e., scanning and confirming the payment) is required to proceed.

3.2 PaymentCode

Sample Request Payload

{
    "amount": "1.11",
    "currency": "SGD",
    "payment_method": {
        "type": "alipaycn",
        "alipaycn": {
            "flow": "qrcode",
            "os_type": "ios",
            "is_present": true,
            "payment_code": "284057804613761079"
        }
    },
    "merchant_order_id": "{{$guid}}",
    "description": "acquiring sandbox testing",
    "metadata": {
        "request_id": "{{$guid}}"
    },
    "return_url": "https://127.0.0.1:8080/api/v1/callback"
}

Sample Response Payload

{
    "amount": 1.11,
    "available_payment_method_types": null,
    "cancel_time": "",
    "cancellation_reason": "",
    "captured_amount": "1.11",
    "client_secret": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJtYXN0ZXJfaWQiOiIwIiwiYWNjb3VudF9pZCI6ImE3YjkyYTE5LWJmYzMtNGM4Yi04YTRmLWNmY2Y3NGNhYjM0NSIsImludGVudF9pZCI6IlBJMTkzNTI3NTQyODQ5MTAzODcyMCIsImV4cCI6MTc1MDI0MjM5MiwiaWF0IjoxNzUwMjQwNTkyfQ.4xy27scaYXdxjUc16OJ0CnujNdZ1DF9CqWEfF1jphxI",
    "complete_time": "2025-06-18T17:56:32+08:00",
    "create_time": "2025-06-18T17:56:32+08:00",
    "currency": "SGD",
    "description": "acquiring sandbox testing",
    "intent_status": "SUCCEEDED",
    "latest_payment_attempt": {
        "amount": 1.11,
        "attempt_id": "PA1935275428566536192",
        "attempt_status": "CAPTURE_REQUESTED",
        "captured_amount": 1.11,
        "complete_time": "2025-06-18T17:56:32+08:00",
        "create_time": "2025-06-18T17:56:32+08:00",
        "currency": "SGD",
        "failure_code": "",
        "refunded_amount": 0,
        "update_time": "2025-06-18T17:56:32+08:00"
    },
    "merchant_order_id": "59f89515-e9f6-4ce5-a83c-9d70605d30c5",
    "metadata": {
        "request_id": "48f4c0f0-5c08-4624-95c2-e63518afb435"
    },
    "next_action": null,
    "payment_intent_id": "PI1935275428491038720",
    "return_url": "https://127.0.0.1:8080/api/v1/callback",
    "update_time": "2025-06-18T17:56:32+08:00"
}

Testing Steps

  1. Open the AWallet app and tap "Payment Code"
  2. Tap the Barcode to view the numeric payment code.
  3. Set the retrieved code as the payment_code field in your API request payload.

Note: The returned "intent_status" will be "SUCCEEDED", indicating that the payment was successfully completed.
Unlike QR code scenarios, no further customer interaction is required—the payment is confirmed immediately upon submission.


Did this page help you?