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.