Airwallex logo

Website QR

Accept WeChat Pay on your website by presenting your QR code to the shopper.

Wechat - website QR code

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. \
      -H 'Content-Type: application/json' \
      -H 'Authorization: Bearer your_bearer_token \
      -d '{
      "request_id": "ed11e38a-7234-11ea-aa94-  7fd44ffd1b89",
    "amount": 100,
    "currency": "CNY",
    "merchant_order_id": "85d7b0e0-7235-11ea-862e-9f6aa1adfca6"
    "return_url": ""

Step 2. Generate QR and accept payments

When a shopper selects to pay with WeChat Pay on their desktop browser, call the following API endpoints to get a QR code in the response, which you can then render on your website through your shopper’s browser.

  • Generate a QR code or refresh a QR code on expiry

Request:{id}/confirm \
      -H 'Content-Type: application/json' \
      -H 'client-secret: Ss3thJHPE6TyI4r-8BJFlqNz1mA7DblVuN0c8GOthnchp7Sf-_JuQnuX3sqzv7_0EiTMOs2kcGopFrMoFC0w7IzPCErJ1a0P7sFnpwB6uz-H2h_6rDhhSd2tKJF-l2myVOXQV4Zou3s_OsX6thLiUKI=" \
      -d '{"request_id": "ed11e38a-7234-11ea-aa94-7fd44ffd1b89",
"type": "wechatpay",
  "wechatpay": {
     "flow": "webqr"

Response: Render the value of qrcode_url as a QR code in the browser for the customer to scan with WeChat.

      "next_action": {
      "type": "render_qrcode",
      "qrcode_url": "weixin://wxpay/5xtGdR4"
  • 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 WeChat.

  • Query the PaymentIntent status A QR code expires in 2 hours (configurable) once generated. You may also query the status of a payment anytime via the PaymentIntents API
    GET /payment_intents/{id}