WechatPay integration guide

WechatPay WechatPay through NihaoPay is a payment provider allowing customers to pay using payment methods saved to their WechatPay account. This section is intended to help you implement WechatPay based on your preferred integration workflow.

Services and compatibility

Payment method gateway nameNihaoPay
Supported transaction types
Supported integration methods
Supported processing currenciesCAD, CNY, EUR, GBP, HKD, JPY, USD*
Webhook event types
  • TRANSACTION_REFUNDED
  • TRANSACTION_SETTLED

*WechatPay cannot be used from inside the United States of America.

Gateway-specific information

The following are not supported with NihaoPay:

  • Kount
  • Recurring billing
  • Automatic payments

Configuration

Apart from working with Integrations to add WechatPay as a payment method, you do not need to do any other configuration steps.

Required fields

The following table shows the required and optional fields for WechatPay transactions in the Create APM one-time-use token request.

FieldRequired?Description
data.amountYesThe transaction amount.
data.currencyYesThe three-character ISO currency code for the transaction. For WechatPay, supported currencies are CAD, CNY, EUR, GBP, HKD, JPY, and USD.
data.customer.orderNumberYesThe order number. This must be less than 30 characters for WechatPay.
data.customer.firstNameYesThe customer's first name, as it is set for the payment method.
data.customer.lastNameYesThe customer's last name, as it is set for the payment method.
data.customer.emailYesThe customer's email address.
customerRedirectUrlConditionalThe URL to which the customer will be redirected after completing their payment. The customer will be sent here upon successful or failed payment. This URL must use the HTTPS protocol. This field is required if you intend to use Nexio’s redirectUrls with your own buttons.
data.cart.items[n].itemNoItem number or code.
data.cart.items[n].descriptionNoA description of the item.
data.cart.items[n].quantityNoThe quantity sold.
data.cart.items[n].priceNoThe price per item.
data.customer.billToAddressOneNoThe street address for the customer.
data.customer.billToCityNoThe city for the address record.
data.customer.billToStateNoThe state or province on file with the payment provider. (If in the US, this must be the two-character state abbreviation).
data.customer.billToPostalNoThe postal code on file.
data.customer.billToCountryNoThe two-character (Alpha-2) ISO country code . Note: WechatPay cannot be used from inside the United States of America.
data.customer.billToPhoneNoThe billing phone number.
data.customer.billToAddressTwoNoAdditional street address information, if required.
data.customer.customerRefNoCustomer identifier. You can use this field to pass a customer ID to the APM or to manage user subscriptions.
data.customer.invoiceNoThe invoice number.
data.customer.shipToAddressOneNoThe shipping address, if different from the billing address.
data.customer.shipToAddressTwoNoAdditional shipping address information, if required.
data.customer.shipToCityNoThe shipping city.
data.customer.shipToStateNoThe shipping state or province. (If in the US, this must be the two-character state abbreviation).
data.customer.shipToPostalNoThe shipping postal code.
data.customer.shipToCountryNoThe two-character (Alpha-2) ISO shipping country code.
data.customer.shipToPhoneNoThe shipping phone number.
data.descriptionNoA description of the transaction.
data.descriptorNoInclude this parameter to dynamically change the descriptor on the customer's statement.
data.paymentMethodNoThe identifier for the alternative payment method. Use this parameter when you want to only return the WechatPay iframe button URL (rather than data for all payment methods associated with the account).

The value to use is nihaoPayWechatPay.
data.totalTaxAmountNoTotal tax amount.
processingOptions.merchantIdNoThe Nexio merchant ID (MID).
processingOptions.paymentOptionTagNoA custom value used to route transactions to a specific gateway or merchant account.
uiOptions.displaySubmitButtonNoSet to true to include a submit button in the iframe.
uiOptions.cssNoThe URL where your custom CSS file is hosted.

Example requests

The following are example one-time-use token requests for WechatPay.

curl -X POST https://api.nexiopaysandbox.com/apm/v3/token \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json' \
  -H 'Authorization: Basic [Base64_encoded_login]'
  -d '{
  "data": {
    "amount": 4.00,
    "currency": "USD",
    "paymentMethod": "nihaoPayWechatPay",
    "customer": {
      "orderNumber": "12345678",
      "firstName": "John",
      "lastName": "Doe",
      "email": "[email protected]"
    }
  }
}'

A successful request returns a response similar to the following:
{
  "expiration": "2018-09-18T15:43:05.664Z",
  "token": "830d36f6-a5e3-4455-9600-3a55b63e2fc2",
  "asyncTraceId": "830d36f6-a5e3-4455-9600-3a55b63e2fc2",
  "expressIFrameUrl": "https://www.api.nexiopaysandbox.com/v3?token=830d36f6-a5e3-4455-9600-3a55b63e2fc2",
  "redirectUrls": [
    {
      "paymentMethod": "nihaoPayAliPay",
      "url": "https://www.api.nexiopaysandbox.com/v3/popup?token=830d36f6-a5e3-4455-9600-3a55b63e2fc2&paymentMethod=nihaoPayAliPay"
    },
    {
      "paymentMethod": "nihaoPayUnionPay",
      "url": "https://www.api.nexiopaysandbox.com/v3/popup?token=830d36f6-a5e3-4455-9600-3a55b63e2fc2&paymentMethod=nihaoPayUnionPay"
    },
    {
      "paymentMethod": "nihaoPayWechatPay",
      "url": "https://www.api.nexiopaysandbox.com/v3/popup?token=830d36f6-a5e3-4455-9600-3a55b63e2fc2&paymentMethod=nihaoPayWechatPay"
    }
  ],
  "buttonIFrameUrls": [
    {
      "paymentMethod": "nihaoPayAliPay",
      "url": "https://api.nexiopaysandbox.com/apm/v3?token=830d36f6-a5e3-4455-9600-3a55b63e2fc2&paymentMethod=nihaoPayAliPay"
    },
    {
      "paymentMethod": "nihaoPayUnionPay",
      "url": "https://api.nexiopaysandbox.com/apm/v3?token=830d36f6-a5e3-4455-9600-3a55b63e2fc2&paymentMethod=nihaoPayUnionPay"
    },
    {
      "paymentMethod": "nihaoPayWechatPay",
      "url": "https://api.nexiopaysandbox.com/apm/v3?token=830d36f6-a5e3-4455-9600-3a55b63e2fc2&paymentMethod=nihaoPayWechatPay"
    }
  ]
}

For the multi iframe integration method: You use the expressIFrameUrl value in the steps for the transaction.

For the individual iframe option: You use the buttonIFrameUrls.url of the nihaoPayWechatPay APM for the transaction.

For the custom redirect option: You use the redirectUrls.url of the nihaoPayWechatPay APM for the transaction.

Transaction types and implementation methods

Regardless of the implementation workflow you implement, consumers will be redirected to WechatPay to complete their transactions.

Nexio supports the following transaction types for AliPay:

Testing data

WechatPay cannot be tested from inside the United States of America.

For testing data, see WechatPay Test Info on NihaoPay's website.

Response handling

In the one-time-use token request, WechatPay gets returned in the paymentMethod parameter as nihaoPayWechatPay.

Nexio responds with transaction results in one of the following ways, depending on your integration workflow:

  • Event messages: This applies to integrations that do not pass a customerRedirectUrl in the request.
  • Response fields in the URL: This applies to integrations that do provide a customerRedirectUrl in the request.

In addition to one of the above, if your merchant account is configured to receive webhooks, Nexio provides responses to the webhook URLs that have been registered. For further explanation of the webhook event types, see the webhook Event types table.

For WechatPay, these are the possible webhook event types:

  • TRANSACTION_AUTHORIZED
  • TRANSACTION_REFUNDED
  • TRANSACTION_SETTLED

For information about how to run each of the integration workflows, see Transaction types and integration methods above.

Status workflows

The status of a successful transaction with WechatPay varies, depending on the options you choose.

SaleSuccessful sale transactions have the following statuses:
  • pending*
  • settled
RefundSuccessful refund transactions have the following status:
  • settled

*Pending status displays as "authorized" or "AUTHORIZED" in the Nexio Dashboard; it displays as 10, meaning "authorized", in the response when querying transactions (for more information about transactionStatus, see the table).

Next steps

Now, you are ready to get started with running transactions:

If you have any additional questions or feedback, see Contact us.