Payment / Withdraw
API Docking Specification
version 1.0.0
pagarstar.com
copyright reserved
May. 2023
Versions
Ver. | Editor | Update at | Description |
---|---|---|---|
v1.0.0 | Reymond | 2023-05-15 | First released |
Declamation
The information contained in this document is a trade secret, and the company owns its patents (or is applying for a patent) for the technologies and products involved in the document, including copyrights for trademarks or other intellectual property rights.
Without the company's written authorization contract, no person shall obtain or hold this document in any way, and may not use part or all of the content of this document. Changes in the content of this document are subject to change at any time without notice.
Important note
- Please ask the CS team for the API Host URL
- The payment request is based on HTTPS protocol, only POST form is supported.
- The data is UTF-8 Encode.
- The parameters & participate in the signature must according to ASCII in order. Null values still need to be added to the signature.
- Please provide the Host IP to the CS team before docking for adding whitelist.
- All requests have specify header. Please follow the setting for the request header.
Request format
Please follow the guide below to produce your request:
- Prepare your request data and generate the signature.
- Convert the request body into JSON string.
- Encrypt the JSON string by AES-ECB-PKCS7. The encrypt key is your merchant safecode.
- Encode your encrypted string via base64_encode and get the final request string.
- Request Http Header Content-Type should be text/plain
Exampleโ
Signed Request Body
{
"order_id": "20210514183849",
"amount": "40000",
"currency": "PHP",
"timestamp": "1612245402",
"callback_url": "http://my.service/callback",
"redirect_url": "https://my.service/redirect",
"channel": "alipay",
"bank_code": "",
"remark": "test",
"user_id": "1",
"sign": "lOp6SoczkquxzYTDufsVTIjjTdKuCGZnGEa7โฆ."
}
Json String
{"order_id":"20210514184046","amount":"40000","currency":"PHP","timestamp":"1612245402","callback_url":"http://my.service/callback","redirect_url":"https://my.service/redirect","channel":"alipay","bank_code":"","remark":"test","user_id":"1","sign":"lOp6SoczkquxzYTDufsVTIjjTdKuCGZnGEa7..."}
AES ECS Encrypted by safecode + base64_encode
wbTkX4OdkK8xqvrnqqKalTp/XiC+svRLvgu6UGQ5gDPx9iTRSS3ng8cRkLwfrxnN3Ba4YZAtMtb2PahMj0KNz56ovbuctKsMWMjztpIn2eLCHWNzVHRrU8eJ/aG0OgDztdceON2xBGYEtzpyf1Lc9jycfnd35tANhZgWFlNvCPrTNsbTjrVA3fH1gOKzn35CfHsuyWertBQjp/FqMkDWa7G1gRxXa2L1s...
Response format
Service response (or callback) will follow this format:
Request headerโ
Parameter | Content |
---|---|
Content-Type | application/json |
Request bodyโ
Parameter | Data Type | Requied | Description |
---|---|---|---|
code | string | Yes | Status code. Success will return "1000", and other numbers are failure indexes. |
message | string | Yes | Result description |
data | array | No | Result data will be provided when "code" is "1000". |
Signarue rules
Before generate signature, please make sure the following information ready:
- Get your merchant safecode
- Get your RSA key pair. (Your can generate it via our service, or by your own)
- Your RSA public key is uploaded to our service
Signature produce steps:
- Sort your request parameters by key in ASCII order. Concate each parameter's key and value by equal(=) symbol, then join all parameters by and(&) symbol. At last, append "&" and your merchant safecode at the end of the sign string. EXAMPLE: amount=1&channel=alipayยคcy=PHP&merchantid=123456&mid=1ยฌifyurl=www.abc.com/callback&returnurl=www.abc.com/returnurl&service=Payment &safecode
- Encrypt the sign string by SHA256 and your merchant private key
- Encode encrypted string by base64 to get your final signature.
Signature verify rules
Before verify signature, please make sure the following information ready:
- Get your merchant safecode
- Get our service platform public key
Signature verification steps:
- Sort response parameters except signature by key in ASCII order. Concate each parameter's key and value by equal(=) symbol, then join all parameters by and(&) symbol. At last, append "&" and your merchant safecode at the end of the "verification string". Note: Except the sign field, other parameters should participate in the verification string.
- Get signature from response then using base64 decode to get binary signature
- Verify binary signature by platform public key and verification string. Encryption rule is SHA256.
Two stages request rule
For system security purposes, you should provide a verification token in the HTTP request header.
Step 1. fetch random codeโ
At the beginning of the request process, you should fetch a random code from our service. This random code will expire in 30 seconds.
API URL: /merchant/random_code
Requestโ
Request header
Parameter | Content |
---|---|
Content-Type | application/json |
Request body
Parameter | Data type | Requied | Description |
---|---|---|---|
user_id | String | Yes | Merchant identification |
Responseโ
Response body
Parameter | Data type | Requied | Description |
---|---|---|---|
code | String | Yes | The random code to fetch verify token |
Exampleโ
{
"code": "1000",
"message": "Accepted",
"data": {
"code": "VL4hrMLmM3THd2iQDNOoa45cGZhx2zH7"
}
}
2. Get verification tokenโ
You can get the verification token via the following process.
API URL: /merchant/token
Request header
Parameter | Content |
---|---|
Content-Type | application/json |
Request body
Parameter | Data type | Requied | Description |
---|---|---|---|
user_id | String | Yes | Merchant identification |
hash | String | Yes | Verification hash string. |
How to produce verification hash string:
- Concat {random_code} {user_id} {safecode} in given order without any separator or whitespace.
- Put the concatenated string into SHA256 Hash and get your hash code.
Response body
Parameter | Data type | Requied | Description |
---|---|---|---|
access_token | Stringr | Yes | the token to put into your request header |
token_type | String | Yes | the type of token |
expires_in | Interge | Yes | token expire time in second |
Example:
{
"code": "1000",
"message": "Accepted",
"data": {
"access_token": "cyJacasxzxc...",
"token_type": "bearer",
"expires_in": 300
}
}
Payment Request
API URL: /merchant/payment
Requestโ
Request header
Parameter | Content | Description |
---|---|---|
Content-Type | text/plain | text |
Authorization | {token_type} {access_token} | Please concat token_type and access_token with whitespace |
Request body
Parameter | Data type | Requied | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
amount | String | Yes | Yes | Transaction amount (Support up to 6 decimal places) |
currency | String | Yes | Yes | Supported currencies please refer Annex 1 |
channel | String | Yes | Yes | Supported channels please refer Annex_1 |
bank_code | String | Optional | Yes | REQUIRED if the channel is "bank2bank".If this parameter is provided, you need to add it to the sign string.Please go to the background page-API Docking, download and refer to the bank list. |
real_name | String | Optional | No | Comply with Chinese government regulations, required for RMB transactions. |
callback_url | URL | Yes | Yes | Service will send a callback request to this URL when the transaction completes. |
redirect_url | URL | Yes | Yes | When the payment process finishes, the client will be redirected to this URL. |
timestamp | Integer | Yes | Yes | Request timestamp (10 digits) |
remark | String | No | No | remark |
sign | String | Yes | No | Signature string |
Responseโ
There are three type of payment response methods:
- Redirect - return redirect javascript, then player will be redirected to payment webpage.
- HTML - return a html and submit it automatically.
- JSON - return request result in JSON format (only response code = 1000)
Response body (JSON only) |
---|
Parameter |
user_id |
order_id |
transaction_id |
channel |
submit_currency |
submit_amount |
accept_currency |
accept_amount |
exchange_rate |
pay_url |
wallet_address |
expired_at |
sign |
Exampleโ
{
"code": "1000",
"message": "Accepted",
"data": {
"user_id": 1,
"order_id": "20210521184906",
"transaction_id": "P12021052118495503889",
"channel": "PHP2TRC",
"submit_currency": "PHP",
"submit_amount": 1000,
"accept_currency": "USDT-TRC",
"accept_amount": 165.9181999999,
"exchange_rate": 0.1659182,
"sign": "jgtOKfV48sOD2NjBZ4WhiAUMwTgux9fTH53jNzNR..."
}
}
Go to Cashierโ
If you set the channel to "cashier", the system will return the URL to the cashier. Here is an example:
{
"cashier_url": "http://example.com/cashier?order_id=TP20210715135507&token=3281DCF1C8A6D7AFA0B96CFDD874F417"
}
Callback Request (Service to merchant)โ
Request header
Parameter | Content |
---|---|
Content-Type | application/json |
Request body
Paramter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
transaction_id | String | Yes | Yes | Our service transaction id |
channel | String | Yes | Yes | Supported channels please refer Annex_1 |
submit_currency | String | Yes | Yes | Submit currency |
submit_amount | Float | Yes | Yes | Submit amount (Support up to 6 decimal places) |
accept_currency | String | Yes | Yes | The currency real paid |
accept_amount | Float | Yes | Yes | Paid amount of accept currency (Support up to 6 decimal places) |
exchange_rate | Float | Yes | Yes | Exchange rate |
status | String | Yes | Yes | 0000 = Waiting1000 = Processing2000 = Success3000 = Failed4000 = Order error |
timestamp | Integer | Yes | Yes | Transaction last update timestamp (10 digits) |
submit_promo | Float | No | No | Submit amount promo(Support up to 6 decimal places) |
accept_promo | Float | No | No | Paid amount promo of accept currency (Support up to 6 decimal places) |
payment_address | String | No | No | Crypto exclusive, if need, please inform customer service staff |
receiving_address | String | No | No | Crypto exclusive, if need, please inform customer service staff |
sign | String | Yes | No | Signature string |
Callback Resultโ
Please return the string " SUCCESS" when callback is received. If there is anything wrong, please return the string " FAILED".
Payment Order
API URL: /merchant/order/payment
Requestโ
Request header
Parameter | Content | Description |
---|---|---|
Content-Type | text/plain | text |
Authorization | {token_type} {access_token} | Please concat token_type and access_token with whitespace |
Request body
Paramter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
return_hash | Boolean | No | No | Whether to return the transaction hash. |
sign | String | Yes | No | Signature string |
Responseโ
Response body
Paramter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
transaction_id | String | Yes | Yes | Our service transaction id |
channel | String | Yes | Yes | Supported channels please refer Annex_1 |
submit_currency | String | Yes | Yes | Submit currency |
submit_amount | Float | Yes | Yes | Submit amount (Support up to 6 decimal places) |
accept_currency | String | Yes | Yes | The currency real paid |
accept_amount | Float | Yes | Yes | Paid amount of accept currency (Support up to 6 decimal places) |
exchange_rate | Float | Yes | Yes | Exchange rate |
status | String | Yes | Yes | 0000 = Waiting1000 = Processing2000 = Success3000 = Failed4000 = Order error |
timestamp | Integer | Yes | Yes | Transaction last update timestamp (10 digits) |
submit_promo | Float | No | No | Submit amount promo(Support up to 6 decimal places) |
accept_promo | Float | No | No | Paid amount promo of accept currency (Support up to 6 decimal places) |
hash | String | No | No | Transaction hash.(Provided when return_hash = true) |
payment_address | String | No | No | Crypto exclusive, if need, please inform customer service staff |
receiving_address | String | No | No | Crypto exclusive, if need, please inform customer service staff |
sign | String | Yes | No | Signature string |
Exampleโ
{
"code": "1000",
"message": "Order Success",
"data": {
"user_id": 1,
"order_id": "20210521184906",
"transaction_id": "P12021052118495503889",
"channel": "PHP2TRC",
"submit_currency": "PHP",
"submit_amount": "1000.0000000000",
"accept_currency": "USDT-TRC",
"accept_amount": "165.9181999999",
"exchange_rate": "0.1659182000",
"status": "1000",
"timestamp": 1621594195,
"sign": "mG6FFzJvVh8DpQJpMUPWH619CelyDZgkgnty2HW..."
}
}
Withdraw Request
API URL: /merchant/withdraw
Requestโ
Request header
Parameter | Content | Description |
---|---|---|
Content-Type | text/plain | text |
Authorization | {token_type} {access_token} | Please concat token_type and access_token with whitespace |
Request body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
amount | String | Yes | Yes | Transaction amount (Support up to 6 decimal places) |
currency | String | Yes | Yes | Supported currencies please refer Annex 1 |
channel | String | Yes | Yes | Supported channels please refer Annex_1 |
card_no | String | Yes | Yes | Withdraw card number.If your channel is running virtual currency, then put the wallet address here. |
card_name | String | Yes | Yes | Card (Virtual wallet) owner's name |
card_type | Integer | Yes | Yes | 1 = private 2 = public |
bank_code | String | Yes | Yes | Please go to the background page-API Docking, download and refer to the bank list. |
bank_name | String | Yes | Yes | Please go to the background page-API Docking, download and refer to the bank list. |
bank_branch | String | Yes | Yes | Bank branch(Limited length: 20, a Chinese word length is 2) |
bank_province | String | Yes | Yes | Bank province(Limited length: 20, a Chinese word length is 2) |
bank_city | String | Yes | Yes | Bank city(Limited length: 20, a Chinese word length is 2) |
cnaps_code | String | Yes | Yes | Bank lines. REQUIRED when card_type = 2. |
callback_url | URL | Yes | Yes | Service will send a callback request to this URL when the transaction completes. |
timestamp | Integer | Yes | Yes | Request timestamp (10 digits) |
remark | String | No | No | remark |
sign | String | Yes | No | Signature string |
Responseโ
Response body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
transaction_id | String | Yes | Yes | Our service transaction id |
channel | String | Yes | Yes | Supported channels please refer Annex_1 |
submit_currency | String | Yes | Yes | Submit currency |
submit_amount | Float | Yes | Yes | Submit amount (Support up to 6 decimal places) |
accept_currency | String | Yes | Yes | The currency real paid |
accept_amount | Float | Yes | Yes | Paid amount of accept currency (Support up to 6 decimal places) |
exchange_rate | Float | Yes | Yes | Exchange rate |
sign | String | Yes | No | Signature string |
Exampleโ
{
"code": "1000",
"message": "Accepted",
"data": {
"user_id": 1,
"order_id": "20210521181858",
"transaction_id": "W12021052118190115910",
"channel": "PHP2ERC",
"submit_currency": "PHP",
"submit_amount": 40000,
"accept_currency": "USDT-ERC",
"accept_amount": 6644,
"exchange_rate": 0.1661,
"sign": "hZJiccj0EPEQkoOlsmkRWEzHZ+dvbgD8t2RyNzL..."
}
}
Callback Request (Service to merchant)โ
Request header
Parameter | Content |
---|---|
Content-Type | application/json |
Request body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
transaction_id | String | Yes | Yes | Our service transaction id |
channel | String | Yes | Yes | Supported channels please refer Annex_1 |
submit_currency | String | Yes | Yes | Submit currency |
submit_amount | Float | Yes | Yes | Submit amount (Support up to 6 decimal places) |
accept_currency | String | Yes | Yes | The currency real paid |
accept_amount | Float | Yes | Yes | Paid amount of accept currency (Support up to 6 decimal places) |
exchange_rate | Float | Yes | Yes | Exchange rate |
status | String | Yes | Yes | 0000 = Waiting1000 = Processing2000 = Success3000 = Failed4000 = Order error |
timestamp | Integer | Yes | Yes | Transaction last update timestamp (10 digits) |
sign | String | Yes | No | Signature string |
Callback Resultโ
Please return the string " SUCCESS" when callback is received. If there is anything wrong, please return the string " FAILED".
Withdraw Query
API URL: /merchant/order/withdraw
Requestโ
Request header
| Parameter | Content | Description | | Content-Type | text/plain | text | | Authorization | {token_type} {access_token} | Please concat token_type and access_token with whitespace |
Request body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
return_hash | Boolean | No | No | Whether to return the transaction hash. |
sign | String | Yes | No | Signature string |
Responseโ
Request body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
transaction_id | String | Yes | Yes | Our service transaction id |
channel | String | Yes | Yes | Supported channels please refer Annex_1 |
submit_currency | String | Yes | Yes | Submit currency |
submit_amount | Float | Yes | Yes | Submit amount (Support up to 6 decimal places) |
accept_currency | String | Yes | Yes | The currency real paid |
accept_amount | Float | Yes | Yes | Paid amount of accept currency (Support up to 6 decimal places) |
exchange_rate | Float | Yes | Yes | Exchange rate |
status | Integer | Yes | Yes | 0000 = Waiting1000 = Processing2000 = Success3000 = Failed4000 = Order error |
timestamp | Integer | Yes | Yes | Transaction last update timestamp (10 digits) |
hash | String | No | No | Transaction hash.(Provided when return_hash = true) |
sign | String | Yes | No | Signature string |
Exampleโ
{
"code": "1000",
"message": "Order Success",
"data": {
"user_id": 1,
"order_id": "20210521181858",
"transaction_id": "W12021052118190115910",
"channel": "PHP2ERC",
"submit_currency": "PHP",
"submit_amount": "40000.0000000000",
"accept_currency": "USDT-ERC",
"accept_amount": "6644.0000000000",
"exchange_rate": "0.1661000000",
"status": "1000",
"timestamp": 1621592342,
"sign": "OKmzL8zt5w10YLu4scOmQ6R0yOXKo+/XLdAo7ZbAyz..."
}
}
Withdrawal confirmation
(service to merchant)โ
Our service provides a withdrawal confirmation function. You can use it to double-check the withdrawal request was sent from you. While withdrawal confirmation is enabled, our system will send a withdrawal confirmation for each withdrawal request we received to the URL you given to us. If this withdrawl request is confirmed, then the transaction will continue. Otherwise, the withdrawal request will be halted and mark it as an anomaly.
If you want to use our withdrawal confirmation function, please contact our customer service team. Also, you need to implement the API described below and provide your confirmation URL to us.
Requestโ
Request header
Parameter | Content |
---|---|
Content-Type | application/json |
Request body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
amount | Integer | Yes | Yes | Transaction amount (Support up to 6 decimal places) |
timestamp | Integer | Yes | Yes | The timestamp which provides within withdraw request (10 digits) |
sign | String | Yes | No | Signature string |
Responseโ
Response body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
order_id | String | Yes | Yes | Your order id. The order id should be unique. |
confirm | String | Yes | Yes | Return "SUCCESS" indicated order confirmed. Other values indicate failure. |
sign | String | Yes | No | Signature string |
Balance query
API URL: /merchant/balance
Requestโ
Request header
| Parameter | Content | Description | | Content-Type | text/plain | text | | Authorization | {token_type} {access_token} | Please concat token_type and access_token with whitespace |
Request body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
type | Integer | No | No | Default value is 0 if you don't send this field.0 = the returned balance value indicates the current amount in our system.1 = the returned balance value indicates the balance that can be withdraw (Not included the amount that sent withdraw request but not success yet) |
sign | String | Yes | No | signature string |
Responseโ
Response body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
PHP | Array | No | No | RMB currency = { channel_name: channel_balance}(Support up to 6 decimal places) |
USDT-TRC | Array | No | No | USDT-TRC currency = { channel_name: channel_balance}(Support up to 6 decimal places) |
{currency} | Array | No | No | Any other currencies supported by our service. |
sign | String | Yes | No | Signature string |
Exampleโ
{
"code": "1000",
"message": "Accepted",
"data": {
"user_id": 1,
"USDT-TRC": {
"PHP2TRC": 50000,
"TRC": 50000.324132
},
"USDT-ERC": {
"PHP2ERC": 50000,
"ERC": 50000
},
"sign": "QHnRBlfzyIa72eaQmUGTfPCVNKLzels+..."
}
}
Exchange rate query
API URL: /merchant/rate
Requestโ
Request header
| Parameter | Content | Description | | Content-Type | text/plain | text | | Authorization | {token_type} {access_token} | Please concat token_type and access_token with whitespace |
Request body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
trade_currency | String | Yes | Yes | Supported currencies please refer Annex 1 |
sign | String | Yes | No | Signature string |
Responseโ
Response body
Parameter | Data type | Required | Sign | Description |
---|---|---|---|---|
user_id | String | Yes | Yes | Merchant identification |
trade_currency | String | Yes | Yes | Supported currencies please refer Annex 1 |
{currency} | Array | No | No | Any other currencies supported by our service. |
sign | String | Yes | No | Signature string |
Exampleโ
{
"code": "1000",
"message": "Accepted",
"data": {
"user_id": "1",
"trade_currency": "PHP",
"USDT-ERC": {
"payment": 6.51,
"withdraw": 6.51
},
"USDT-TRC": {
"payment": 6.6,
"withdraw": 6.6
},
"sign": "n8g5tDELHuzLNX9tmqLA3O1aT6hnNti64..."
}
}
Annex 1: Currencies and Channels
Note: set channel to "cashier" will be redirect to cashier
Currency | Description | Supported channels |
---|---|---|
PHP | RMB | - cashier - bank2bank - alipay2alipay - alipay2bank - alipayqrcode - PHP2ERC - PHP2TRC - PHP2USDC - PHP2ETH |
USDT | USDT | - cashier |
USDT-ERC | USD Token ERC20 | - ERC |
USDT-TRC | USD Token TRC20 | - TRC |
USDC | USD Coin | - USDC |
Annex 2: Error codes
Error codes | Error message |
---|---|
1000 | Request accepted |
1001 | Request field not valid |
1002 | Transaction not found |
1003 | Duplicate order id |
1004 | Payment exceed quota limit |
1005 | Withdraw amount too large |
1006 | Withdraw amount too small |
1007 | Not enough balance |
1008 | Not supported currency |
1009 | Unauthorized request |
1010 | Signature check failed |
1011 | This service does not supported |
1012 | Token verify failed |
1013 | Insufficient balance for withdrawal |
1014 | Insufficient balance for exchange |
1015 | Currency does not match the channel configuration |
1016 | API token expired |
1017 | Request data decryption failed |
1018 | Whitelist not allow this IP |
1019 | Withdraw confirm failed |
1020 | Request not valid |
1021 | Payee not found |
1100 | Invalid account or password |
4001 | Upstream request failed |
4002 | Upstream return unsuccessful |
4003 | Upstream response check failed |
4004 | Upstream does not support this bank |
4005 | Upsteam require cnaps code |
8001 | Service not available |
8002 | Gateway not available |
8003 | Exceed quota limit |
8004 | Below quota limit |
8005 | Upstream API not ready |
8006 | Payment return type not support |
8007 | Request IP not allowed |
8008 | Exchange rate not available |
8010 | Balance hold failed |
8011 | Couldn't find merchant info |
8012 | Couldn't find admin info |
8013 | Request validation failed |
8101 | Gateway not configured |
8102 | Gateway not enabled |
8103 | User gateway not configured |
8104 | User gateway not enabled |
8105 | Upstream not enabled |
8106 | Cannot get user safecode |
8107 | Cannot get user public key |
8108 | Gateway not found |
9000 | Upstream api not ready |
9001 | Request rule invalid |
9002 | Response decode failed |
9003 | Callback rule invalid |
9004 | Can not get user balance |
9005 | Gateway not found |
9006 | Service config not ready |
9007 | Gateway request error |
9008 | System private key not ready |
9009 | Return data not valid |
9999 | Unrecognized server error |