# GoAllPay Integration Specification V5.1.0
[Shanghai GoAllPay Technology Co., Ltd.](https://www.goallpayx.com)
* Version: English V5.1.0
* Update Time: 2021 / 07
## Table of Contents:
- [1. Overview](#1-overview)
- [2. Transaction process](#2-transaction-process)
- [3. Signature rules](#3-signature-rules)
- [4. API description](#4-api-description)
- [4.1 API list](#41-api-list)
- [4.2 Purchase](#42-purchase)
- [4.3 Inqiury](#43-inqiury)
- [4.4 Refund](#44-refund)
- [4.5 Pre-authorization](#45-pre-authorization)
- [4.6 Pre-authorization completion interface](#46-pre-authorization-completion-interface)
- [4.7 Cancellation interface](#47-cancellation-interface)
- [4.8 Manual refund application interface](#48-manual-refund-application-interface)
- [4.9 Card binding interface](#49-card-binding-interface)
- [4.10 Card payment interface](#410-card-payment-interface)
- [4.11 Card unbundling interface](#411-card-unbundling-interface)
- [5. RespCode](#5-respcode)
- [6. APP mode integration specification](#6-app-mode-integration-specification)
- [7. Technical support](#7-technical-support)
## 1. Overview
GoAllPay provides customers with unified API access to help them implement fast, secure and centralized access payment channels.
## 2. Transaction process
![image](https://git.allpayx.com/OpenAPI/b2c/raw/master/images/pc_flowsheet.png)
## 3. Signature rules
```html
1. For the request message sent to the GoAllPay system, in which all incoming parameters (except parameter signature) according to the field name of ASCII smallest sequence (dictionary), using the format of the URL key/value pair (key1 = value1 & key2 = value2... ) spliced into a string String1.
2. At the end of String1, the signature Key (assigned at GoAllPay upon access) agreed by both parties is spliced directly (no need to connect with "&"), resulting in a stringSignTemp string, and an encryption on stringSignTemp to get the value of signature (The encryption algorithm is subject to the parameter "signType" value).
3. Example of signing process:
String1: acqID=99020344&backURL=https://testapi.allpayx.com/test&charSet=UTF-8&detailInfo=W3siZ29vZHNfbmFtZSI6IuiLueaenCIsInF1YW50aXR5IjoiMyJ9LHsiZ29vZHNfbmFtZSI6IuapmOWtkCIsInF1YW50aXR5IjoiNyJ9XQ==&frontURL=http://114.80.87.249/cashier/estore/j&goodsInfo=pingguo&merID=600039259442068&merReserve=er&orderAmount=1&orderCurrency=CNY&orderNum=20200601140953&paymentSchema=UP&signType=MD5&tradeFrom=H5&transTime=20200601140953&transType=PURC&version=VER000000005
stringSignTemp: acqID=99020344&backURL=https://testapi.allpayx.com/test&charSet=UTF-8&detailInfo=W3siZ29vZHNfbmFtZSI6IuiLueaenCIsInF1YW50aXR5IjoiMyJ9LHsiZ29vZHNfbmFtZSI6IuapmOWtkCIsInF1YW50aXR5IjoiNyJ9XQ==&frontURL=http://114.80.87.249/cashier/estore/j&goodsInfo=pingguo&merID=600039259442068&merReserve=er&orderAmount=1&orderCurrency=CNY&orderNum=20200601140953&paymentSchema=UP&signType=MD5&tradeFrom=H5&transTime=20200601140953&transType=PURC&version=VER000000005fzxego5kgo248dsv9566fo8wz98f8bqk
signature: 1e0f24d39cdc8236d17a5f6f17672611
```
## 4. API description
**Request method:** POST
**Message format:** JSON
**Test environment host:** https://testapi.allpayx.com
**Production environment host:** https://api.allpayx.com
### 4.1 API list
| API name | URL path |
| ------- | ------------------------------------------- |
| Purchase | /api/createorder |
| Inquiry | /api/orderquery |
| Refund | /api/refund |
| Pre-authorization | /api/createorder |
| Pre-authorization completed | /api/pauc |
| Cancellation | /api/canc |
| Manual refund application | /api/refdreq |
| Card binding | /api/bindCard |
| Card payment | /api/bindPay |
| Card unbundling | /api/unBindCard |
### 4.2 Purchase
**1. Interface specification**
This interface provides the function of purchase transaction for access merchants.
**2. Request parameters**
It consists of general fields and channel exclusive fields. All upload fields must be signed.
***Channel exclusive fields:*** [Click to view](payExclusive_EN.md)
***General fields:***
| Parameter | Type | Required | Description |
| ------------- | ------------ | ---- | ------------------------------------------------------------ |
| paymentSchema | String(10) | Yes | Channel ID:[Click Here](paymentSchema.md) |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "PURC" |
| orderNum | String(60) | Yes | Order number: it is defined by the merchant itself, and the order number must not be repeated for the same merchant number |
| orderAmount | String(12) | Yes | Order amount: if 100CNY, it will be 100 or 100.00 |
| orderCurrency | String(3) | Yes | Currency of the order: ISO standard, such as RMB filling in "CNY", US dollar filling in "USD" |
| frontURL | String(400) | Yes | When the payment is complete, jump to the URL. |
| backURL | String(400) | Yes | Payment results are asynchronously notified to this URL. After the payment is successful, the GoAllPay server will call the backURL by POST method to notify the payment result (See callback parameters for details). When merchant receive the notification, it is required to response String "OK".
If we didn't receive "OK" from merchant,GoAllPay will resend the response message to merchant.Time interval is[15, 15, 30, 180, 1800, 3600, 7200, 14400, 14400], the unit is second. |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| acqID | String(11) | Yes | "99020344" |
| goodsInfo | String(60) | Yes | Commodity information. Note: Don't include special symbols, such as "#", "&", "+", etc. |
| detailInfo | String(400) | Yes | Product details.
Format: [{"goods_name":"iPhone X","quantity":"2"},{"goods_name":"iPhone 8","quantity":"4"}], and required Base64 encoding before incoming. Note: "goods_name" can't include special symbols, such as "#", "&", "+", etc. |
| transTime | String(14) | Yes | Transaction time. Format: "yyyyMMddHHmmss" |
| merReserve | String(1024) | No | Reserved content, customized by the merchant. Note: Don't include special symbols, such as "#", "&", "+", etc. |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| parameter | Type | Required | Description |
| ------------- | ------------ | ---- | ------------------------------------------------------------ |
| RespCode | String(2) | Yes | Response code. 00 stands for success. |
| RespMsg | String(256) | Yes | Response message |
| merID | String(15) | No | Merchant ID. |
| orderNum | String(60) | No | Order number. |
| transID | String(32) | No | GoAllPay serial number. |
| parameter | Object | No | Payment parameters. Returned when RespCode is 00 and not background mode payment. For details, please visit [Channel exclusive fields](payExclusive_EN.md) |
**4. Callback parameters**
| parameter | Type | Required | Description |
| ------------- | ------------ | ---- | ------------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "PURC" |
| orderNum | String(60) | Yes | Order number |
| orderAmount | String(12) | Yes | Order amount |
| orderCurrency | String(3) | Yes | Currency of the order |
| merID | String(15) | Yes | Merchant ID |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | Response code. 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| transID | String(32) | Yes | GoAllPay serial number. |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time. |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| merReserve | String(1024) | No | Merchant reserved content. |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.3 Inqiury
**1. Interface specification**
This interface provides the function of inqiury transaction for access merchants.
**2. Request parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ------------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "INQY" |
| orderNum | String(60) | Yes | Order number |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID:[Click Here](paymentSchema.md) |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ------------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | Transaction type |
| orderNum | String(60) | Yes | Order number |
| transID | String(32) | Yes | GoAllPay serial number. |
| merID | String(15) | Yes | Merchant ID |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.4 Refund
**1. Interface specification**
This interface provides access to merchants with a refund of transactions.
(1) Interface supplement
* The interface is initiated after the consumer transaction is successful, and the original order number is required to be specified.
* International credit card transactions cannot be refunded on the same day, can be revoked, and can only be refunded every other day.
* Under normal circumstances, the refund amount of the merchant on the day shall not be greater than the successful transaction amount on the day.
(2) Interface transaction process
![](https://allpayfile-hd2.oss-cn-shanghai.aliyuncs.com/git/b2c/15665469966231.jpg)
**2. Request parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ------------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "REFD" |
| orderNum | String(60) | Yes | Refund order number: it is defined by the merchant, and the refund order number under the same merchant number cannot be repeated |
| origOrderNum | String(60) | Yes | Original trade order number |
| returnAmount | String(12) | Yes | Refund amount: if 100CNY, it is 100 or 100.00 |
| orderCurrency | String(3) | Yes | Currency of the order: ISO standard, such as RMB filling in "CNY", us dollar filling in "USD" |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| paymentSchema | String(10) | Yes | Channel ID:[Click Here](paymentSchema.md) |
| acqID | String(11) | Yes | "99020344" |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| Parameter | Type | Required | Description |
| --------- | ---------- | ---- | ---------------------------------------------- |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "REFD" |
| orderNum | String(60) | Yes | Refund order number |
| transID | String(32) | Yes | GoAllPay serial number. |
| merID | String(15) | Yes | Merchant ID |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.5 Pre-authorization
**1. Interface specification**
The pre-authorization interface is applicable to foreign card (including VISA, MasterCard, JCB and other card brands) and UnionPay card transactions. Pre-authorized transactions will not participate in liquidation, and the issuing bank will temporarily freeze user funds.
**2. Request parameters**
It consists of general fields and channel exclusive fields. All upload fields must be signed.
***Channel exclusive fields:*** [Click to view](preAuthorizationExclusive_EN.md)
***General fields:***
| Parameter | Type | Required | Description |
| ------------- | ------------ | ---- | ------------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "PAUT" |
| orderNum | String(60) | Yes | Order number: it is defined by the merchant itself, and the order number must not be repeated for the same merchant number |
| orderAmount | String(12) | Yes | Order amount: if 100CNY, it will be 100 or 100.00 |
| orderCurrency | String(3) | Yes | Currency of the order: ISO standard, such as RMB filling in "CNY", US dollar filling in "USD" |
| frontURL | String(400) | Yes | When the payment is complete, jump to the address |
| backURL | String(400) | Yes | Payment results are asynchronously notified to this URL. After the payment is successful, the GoAllPay server will call the backURL by POST method to notify the payment result (See callback parameters for details). When merchant receive the notification, it is required to response String "OK".
If we didn't receive "OK" from merchant,GoAllPay will resend the response message to merchant.Time interval is[15, 15, 30, 180, 1800, 3600, 7200, 14400, 14400], the unit is second. |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID: [Click Here](paymentSchema.md) |
| goodsInfo | String(60) | Yes | Commodity information. Note: Don't include special symbols, such as "#", "&", "+", etc. |
| detailInfo | String(400) | Yes | Product details.
Format: [{"goods_name":"iPhone X","quantity":"2"},{"goods_name":"iPhone 8","quantity":"4"}], and required Base64 encoding before incoming. Note: "goods_name" can't include special symbols, such as "#", "&", "+", etc. |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| merReserve | String(1024) | No | Reserved content, customized by the merchant. Note: Don't include special symbols, such as "#", "&", "+", etc. |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| parameter | Type | Required | Description |
| ------------- | ------------ | ---- | ------------------------------------------------------------ |
| RespCode | String(2) | Yes | Response code. 00 stands for success. |
| RespMsg | String(256) | Yes | Response message |
| merID | String(15) | No | Merchant ID. |
| orderNum | String(60) | No | Order number. |
| transID | String(32) | No | GoAllPay serial number. |
| parameter | Object | No | Payment parameters. Return it when RespCode is 00. |
**4. Callback parameters**
| Parameter | Type | Required | Description |
| ------------- | ------------ | ---- | ------------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "PAUT" |
| orderNum | String(60) | Yes | Order number |
| orderAmount | String(12) | Yes | Order amount |
| orderCurrency | String(3) | Yes | Currency of the order |
| merID | String(15) | Yes | Merchant ID |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| transID | String(32) | Yes | GoAllPay serial number. |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time. |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| merReserve | String(1024) | No | Merchant reserved content. |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.6 Pre-authorization completion interface
**1. Interface specification**
The pre-authorization completion interface is applicable to foreign card (including VISA, MasterCard, JCB and other card brands) and UnionPay card transactions. The pre-authorized transaction is similar to the consumer transaction. After the transaction is successful, the merchant will be cleared of funds.
(1) Interface supplement
* The interface is initiated after the pre-authorization transaction is successful, and the original pre-authorization order number is required to be specified, and the time is separated by no more than 30 days.
* The pre-authorization completion transaction amount cannot be greater than the pre-authorized transaction amount.
* Pre-authorized transactions that only support one successful pre-authorization completion transaction.
(2) Interface transaction process
![](https://allpayfile-hd2.oss-cn-shanghai.aliyuncs.com/git/b2c/15665464464405.jpg)
**2. Request parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "PAUC" |
| orderNum | String(60) | Yes | Order number: it is defined by the merchant itself, and the order number must not be repeated for the same merchant number |
| origOrderNum | String(60) | Yes | Pre-authorized order number |
| orderAmount | String(12) | Yes | Order amount: if 100CNY, it will be 100 or 100.00 |
| orderCurrency | String(3) | Yes | Currency of the order: ISO standard, such as RMB filling in "CNY", US dollar filling in "USD" |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID: [Click Here](paymentSchema.md) |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ---------------------------------------------- |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "PAUC" |
| orderNum | String(60) | Yes | Order number |
| transID | String(32) | Yes | GoAllPay serial number. |
| merID | String(15) | Yes | Merchant ID |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time. |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.7 Cancellation interface
**1. Interface specification**
The revocation interface is applicable to foreign cards (including VISA, MasterCard, JCB and other card brands), UnionPay cards and Alipay Philippines wallet.
(1) Interface supplement
* This interface supports external card consumption, pre-authorization, and pre-authorization to complete transactions, UnionPay pre-authorization transactions, and Alipay Filipino wallet consumer transaction cancellation.
* When withdrawing consumption, you can only support the cancellation of the day's trading (note: For CIL international card, after 23:00 Beijing time, it is considered the next day. For RDP international card, after 24:00 Beijing time, it is considered the next day.). For non-day trading, it can be processed through the refund interface.
(2) Interface transaction process
![](https://allpayfile-hd2.oss-cn-shanghai.aliyuncs.com/git/b2c/15665464582903.jpg)
**2. Request parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ---------- |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "VOID" |
| orderNum | String(60) | Yes | Order number: it is defined by the merchant itself, and the order number must not be repeated for the same merchant number |
| origOrderNum | String(60) | Yes | Original transaction order number: The order number to be revoked, which can be consumption, pre-authorization, pre-authorization completed orderNum |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID: [Click Here](paymentSchema.md) |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | --------------- |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "VOID" |
| orderNum | String(60) | Yes | Order number of cancellation |
| transID | String(32) | Yes | GoAllPay serial number. |
| merID | String(15) | Yes | Merchant ID |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time. |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.8 Manual refund application interface
**1. Interface specification**
To refund the payments which are more than 90 days ago, the merchant can't process the online refund interface, but need to call the interface to initiate the refund application. After the application is successful, our business staff will handle it manually. The processing period is about 3 to 5 working days. The refund application transaction will be successfully refunded after manual processing, and the transaction will be liquidated.
**2. Request parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ------------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "REFDREQ" |
| orderNum | String(60) | Yes | Refund order number: it is defined by the merchant, and the refund order number under the same merchant number cannot be repeated |
| origOrderNum | String(60) | Yes | Original trade order number |
| returnAmount | String(12) | Yes | Refund amount: if 100CNY, it is 100 or 100.00 |
| orderCurrency | String(3) | Yes | Currency of the order: ISO standard, such as RMB filling in "CNY", us dollar filling in "USD" |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| paymentSchema | String(10) | Yes | Channel ID: [Click Here](paymentSchema.md) |
| acqID | String(11) | Yes | "99020344" |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| Parameter | Type | Required | Description |
| --------- | ---------- | ---- | ---------------------------------------------- |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "REFDREQ" |
| orderNum | String(60) | Yes | Refund order number |
| transID | String(32) | Yes | GoAllPay serial number. |
| merID | String(15) | Yes | Merchant ID |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 means the application has been accepted |
| RespMsg | String(20) | Yes | Response message |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.9 Card binding interface
**1. Interface specification**
Provide users with card binding function, suitable for foreign card transactions.
**2. Request parameters**
| Parameter | Type | Required | Description |
| ------------- | ----------- | ---- | ---------------------------------------------------------- |
| version | String(12) | Yes | "VER000000005" |
| transType | String(10) | Yes | "BIND" |
| orderNum | String(60) | Yes | Order number: it is defined by the merchant itself, and the order number must not be repeated for the same merchant number |
| orderCurrency | String(3) | Yes | Currency of the order: ISO standard, such as RMB filling in "CNY", us dollar filling in "USD" |
| customerId | String(60) | Yes | User ID: It is defined by the merchant, and it cannot be repeated under the same merchant number. |
| frontURL | String(400) | Yes | Binding result front-end jump address |
| backURL | String(400) | Yes | After binding successfully, it will be notified to this address asynchronously |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| paymentSchema | String(10) | Yes | Channel ID: [Click Here](paymentSchema.md) |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| tradeFrom | String(20) | Yes | "PAN-BINGDING" |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ---------------------------------------------------------- |
| version | String(12) | Yes | "VER000000005" |
| transType | String(10) | Yes | "BIND" |
| orderNum | String(60) | Yes | Order number |
| transID | String(32) | Yes | GoAllPay serial number. |
| merID | String(15) | Yes | Merchant ID |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| token | String(32) | No | Returned when the response code is 00 |
| customerId | String(60) | No | User ID. |
| cardNoTail | String(4) | No | The last four digits of the card number, return when the channel is FC |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.10 Card payment interface
**1. Interface specification**
Card-tied consumer payment, debits the user based on the token returned when the card was tied.
**2. Request parameters**
It consists of general fields and channel exclusive fields. All upload fields must be signed.
***Channel exclusive fields:*** [Click to view](bindCardPayExclusive_EN.md)
***General fields:***
| Parameter | Type | Required | Description |
| ------------- | ------------ | ---- | ------------------------------------------------------------ |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "PURC" |
| orderNum | String(60) | Yes | Order number: it is defined by the merchant itself, and the order number must not be repeated for the same merchant number |
| orderAmount | String(12) | Yes | Order amount: if 100CNY, it will be 100 or 100.00 |
| orderCurrency | String(3) | Yes | Currency of the order: ISO standard, such as RMB filling in "CNY", us dollar filling in "USD" |
| backURL | String(400) | Yes | Payment results are asynchronously notified to this URL. After the payment is successful, the GoAllPay server will call the backURL by POST method to notify the payment result (See callback parameters for details). When merchant receive the notification, it is required to response String "OK".
If we didn't receive "OK" from merchant,GoAllPay will resend the response message to merchant.Time interval is[15, 15, 30, 180, 1800, 3600, 7200, 14400, 14400], the unit is second. |
| customerId | String(60) | Yes | User ID: It is defined by the merchant, and it cannot be repeated under the same merchant number. |
| token | String(32) | Yes | The token returned after the card is successfully bound |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID: [Click Here](paymentSchema.md) |
| goodsInfo | String(60) | Yes | Commodity information. Note: Don't include special symbols, such as "#", "&", "+", etc. |
| detailInfo | String(400) | Yes | Product details.
Format: [{"goods_name":"iPhone X","quantity":"2"},{"goods_name":"iPhone 8","quantity":"4"}], and required Base64 encoding before incoming. Note: "goods_name" can't include special symbols, such as "#", "&", "+", etc. |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| tradeFrom | String(20) | Yes | "PAN-BINGDING" |
| merReserve | String(1024) | No | Reserved content, customized by the merchant. Note: Don't include special symbols, such as "#", "&", "+", etc. |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| Parameter | Type | Required | Description |
| ------------- | ------------ | ---- | ---------- |
| version | String(12) | Yes | "VER000000005" |
| charSet | String(6) | Yes | "UTF-8" |
| transType | String(10) | Yes | "PURC" |
| orderNum | String(60) | Yes | Order number |
| orderAmount | String(12) | Yes | Order amount|
| orderCurrency | String(3) | Yes | Currency of the order |
| merID | String(15) | Yes | Merchant ID |
| acqID | String(11) | Yes | "99020344" |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| transID | String(32) | Yes | GoAllPay serial number. |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| merReserve | String(1024) | No | Merchant reserved content. |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
### 4.11 Card unbundling interface
**1. Interface specification**
Unbound card
**2. Request parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ---------------------------------------------------------- |
| version | String(12) | Yes | "VER000000005" |
| transType | String(10) | Yes | "UNBIND" |
| orderNum | String(60) | Yes | Order number: it is defined by the merchant itself, and the order number must not be repeated for the same merchant number |
| customerId | String(60) | Yes | User ID: It is defined by the merchant, and it cannot be repeated under the same merchant number. |
| token | String(32) | Yes | The token returned after the card is successfully bound |
| merID | String(15) | Yes | Merchant ID, assigned by GoAllPay |
| paymentSchema | String(10) | Yes | Channel ID: [Click Here](paymentSchema.md) |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| tradeFrom | String(20) | Yes | "PAN-BINGDING" |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
**3. Response parameters**
| Parameter | Type | Required | Description |
| ------------- | ---------- | ---- | ---------------------------------------------------------- |
| version | String(12) | Yes | "VER000000005" |
| transType | String(10) | Yes | "UNBIND" |
| orderNum | String(60) | Yes | Order number |
| transID | String(32) | Yes | GoAllPay serial number. |
| merID | String(15) | Yes | Merchant ID |
| paymentSchema | String(10) | Yes | Channel ID |
| RespCode | String(2) | Yes | 00 stands for success; 01 stands for fail. See Chapter 6 Response Codes in this document for details. |
| RespMsg | String(20) | Yes | Response message |
| customerId | String(60) | No | User ID. |
| cardNoTail | String(4) | No | The last four digits of the card number, return when the channel is FC |
| token | String(32) | No | token |
| transTime | String(14) | Yes | Transaction time, format: "yyyyMMddHHmmss" |
| GWTime | String(14) | Yes | yyyyMMddHHmmss this should be a GWtime, currently is local transaction time |
| signType | String(10) | Yes | "MD5" or "SHA256" |
| signature | String(32) | Yes | MD5 or SHA256 signature |
## 5. RespCode
| RespCode | Description |
| ------ | --------- |
| 00 | Success |
| 01 | Fail |
| 04 | Processing |
| 61 | Exceed the limit |
| U1 | Merchant ID is not exist |
| U2 | Signature error |
| U3 | Message is tampered |
| U4 | Missing parameter |
| U5 | Invalid parameter |
| U6 | Repeat order number |
| U7 | Order is not exist |
| U8 | Parameter is null |
| U9 | System error |
| P1 | Channel is not setted |
| P2 | Currency is not setted |
| P3 | Balance is not enough |
| P4 | Function is not supported |
| P5 | Channel returns "Error" |
| A3 | Channel merchant is not exist |
## 6. APP mode integration specification
Android Integration Specification:[Click Here](/v5/android/Android_Integration_Specification_EN.md)
iOS Integration Specification:[Click Here](/v5/ios/iOS_Integration_Specification_EN.md)
## 7. Technical support
If you have problems with debugging, please contact us: support@allpayx.com