Product Introduction
This method can call payment within WeChat official account or any H5 page within WeChat. Thus, merchants can integrate this payment method into their WeChat shopping malls or official accounts to improve user experience as well as to facilitate payment, foreign exchange and settlement for both merchants and customers. After integration, a payment button is added to the page.
-
The customer clicks the payment button, and a payment page will be opened on his mobile phone.
-
Once payment is successful, the merchant can check the payment result/status to decide the next operation step.
-
Meanwhile, HipoPay will inform the merchant about the payment result via an asynchronous notification, which features a reliable built-in retry mechanism.
Payment Process and User Experience
-
The customer shops goods or services within an official account or WeChat shopping mall:
-
The customer makes payment:
-
Payment is successful:
Integration Process
-
Process digital signature
-
Integrate with Place Order
-
Receive asynchronous notification
-
Integrate with refund API
-
Integrate with reconciliation API
Digital Signature
Unless otherwise stated, all APIs require the siginature for HipoPay to confirm the identity of the user.。
HipoPay SDK has processed signature and signature verification and thus integration can be accelerated.
If it is not convenient to usd the SDK, perform the following steps to process signature.
I. Generate the private key and the public key.
- Private Key
Purpose: It performs paramter signing when the client requests the API.
Storage: Please keep it safe and properly. Do not reveal it to others.
Locally generated private key: openssl genrsa -out private.key 2048
- Public Key
Purpose: It is used for signature verification by HipoPay.
Storage: Please send it to HipoPay.
Locally generated public key: openssl rsa -pubout -in private.key -out public.key
II. Generate to-be-signed string.
-
Arrange the request parameters (query string of the GET request and form of the POST request) by parameter names based on the ASCII code in ascending lexicographical order, and use the URL key pair format (key1=value1&key2=value2…) to generate a signature string.
-
Append Timestamp to the signature string and separate them with a
,
to generate a to-be-signed string.
III. Generate the signature.
-
Encrypt the to-be-signed string by using RSA. Specify SHA256 as Hash algorithm, and use the private key in the key pair submitted when the service is requested.
-
Code the encryption result by using base64 to generate the final signature result.
IIII. Add the request header.
When the merchant sends the request, add the following four paramters in the header.
Header Parameter | Description | Generation Method |
---|---|---|
MerchantNO | Merchant No. | Allocated by HipoPay |
Version | API version No. | Fixed value 1.0 |
Timestamp | Timestamp | Timestamp as described in step II. 2 |
Signature | API signature | Result generated in step III. 4 |
When receiving HipoPay asynchronous notification, the merchant should verify the signature to confirm that the notification is sent by HipoPay and is intact. The signature verification method is as follows:
Signature verification method:
-
Arrange the returned contents corrsponding to form of the POST request by parameter names based on the ASCII code in ascending lexicographical order, and use the URL key pair format (key1=value1&key2=value2…) to generate a signature string.
-
Append the Timestamp value in the header of the POSTrequest to the signature string and separate them with a
,
to get the query_string. -
Verify the query_string and the Signature value in the header of the POST request by using SHA-256. Contact HipoPay to obtain the public key.
Call Payment
Perform the following three steps.
- Step 1 Get user’s openid.
Guide consumer to click url as below:
Cross-border Wallet: https://api.wisecashier.com/mp_pay/oauth?merchant_no=xxx¤cy=HKD
HongKong-Local Wallet: https://api.wisecashier.com/wechatpay/hk/oauth?merchant_no=xxx¤cy=HKD
Other parameters are optional. All the parameters will be transferred back after user’s openid is obtained.
The parameters "currency" and "merchant_no" are mandatory.
We will run the payment page of the merchant in our own docker after the openid is obtained (we need to be informed of the address of the payment page in advance, then we will bind merchant's page to our docker and bring back all the parameters in the authorized URL, and add an extra parameter "openid" as well).
Notice:
If merchant wanna use own page
Openid should be get by Back-end .
It’s not iframe, it's reverse proxy。
You can't get it by browser.
That's because Wechat's rules, it only recognition domain of hipopay.com
-
Step 2 Place a payment order on the H5 payment page to get prepay params(prepay_params)
-
Use the prepayment parameter (prepay_params) to call payment. Refer to call payment within official account.
API List ¶
- Sandbox HOST: https://testapi.hipopay.com/
-
Mainland Wallet: Bank account with currency of CNY binded on Wechat/Alipay
-
HongKong Wallet: Bank account with currency of HKD binded on Wechat/Alipay
- Feedback: kongfm@transfereasy.com
Place an Order ¶
Place an OrderPOST/mp_pay
Note:
This API can be called directly from the front end. Signature is not required.
- Request Parameter
Field | Type | Required | Description | Example Value |
---|---|---|---|---|
merchant_no | string | Y | merchant’s no | HPXXXXX |
amount | string | Y | Amount of the payment order, to two decimal places at most. For JPY and KRW, the currency units are Japanese Yen and Korean Won respectively, without decimal places. | 8.88 |
openid | string | Y | User’s openid | |
currency | string | Y | Currency of the payment order. For details, see currency code. | “HKD” |
product_info | string | Y | Product information | “Hipopay - test” |
agent_order_id | string | Y | Merchant transaction No. | “201901021232211023” |
notify_url | string | N | URL of the asynchronous notification | "https://xx.yy.com/notify" |
is_rmb | string | N | Whether to adopt CNY for pricing. Optional values are "TRUE" and "FALSE" . |
“TRUE”/“FALSE” |
- Response Data
{
"appId":"",
"nonceStr":"",
"package":"prepay_id=wxxxxxxxxxxxxxx",
"paySign":"xxxxxxxxxxxxxxx",
"signType":"MD5",
"timeStamp":"1552631723"
}
Notice:
-
You should request it in Ajax
-
Header only need Version
-
Static sources like js or css should use the absolute path
-
Use https
Check Payment Order ¶
Check Payment OrderGET/payment
- .Request Parameter:
Field | Type | Required | Description | Example Value |
---|---|---|---|---|
payment_no | string | N | Payment order No. | “2019062231224380479532988” |
out_trade_id | string | N | Merchant transaction No. | “2746847384112837273872” |
Note:
**You can check order information by payment_no or out_trade_id, which cannot be both null at the same time.
- .Response Data:
Field | Required | Description |
---|---|---|
is_success | Y | Whether the service request is successful. Optional values are True and False . |
response | N | Service response data. It is returned when is_success=True . |
error | N | Service error code. It is returned when is_success=False . For details, see Error Code below. |
error_message | N | Service error description. It is returned when is_success=False . |
When is_success=True
, response
contains the following fields:
Field | Required | Description |
---|---|---|
amount | Y | Amount of the payment order |
currency | Y | Currency of the payment order. For details, see currency code. |
exchange_rate | Y | Exchange rate |
out_trade_id | Y | Merchant transaction No. |
payment_no | Y | Payment order No. |
status | Y | Payment order status |
product_info | Y | Product information |
trade_time | Y | Time when transaction is created |
trade_type | Y | Payment method |
- Error Code:
Error Code | Meaning |
---|---|
PAYMENT_NOT_FOUND | Order not found |
ILLEGAL_SECURITY_PROFILE | This encryption method is not supported. |
success
{
"is_success": True,
"response": {
"amount": "0.02",
"currency": "HKD",
"exchange_rate": "0.881890",
"out_trade_id": "2746847384112837273872",
"payment_no": "2018071823332342210483065",
"status": "PAID",
"product_info": "Alipay App Pay",
"trade_time": "2018-07-18 23:33:23",
"trade_type": "APP",
}
}
failed
{
"is_success": False,
"error": "PAYMENT_NOT_FOUND",
"error_message" : "Order not found",
}
Check Exchange Rate ¶
Check Exchange RateGET/wechatpay/forex_rate
Note:
The reference exchange rate (target currency / CNY) is returned. The actual rate should be the live exchange rate when transaction occurs.
- Request Parameter
Field | Type | Required | Description | Example Value |
---|---|---|---|---|
currency | string | Y | Currency | “USD” |
- Response Data
Field | Required | Description |
---|---|---|
is_success | Y | Whether the service request is successful. Optional values are True and False . |
response | N | Service response data. It is returned when is_success=True . |
error | N | Service error code. It is returned when is_success=False . For details, see Error Code below. |
error_message | N | Service error description. It is returned when is_success=False . |
When is_success=True
, response
contains the following fields:
Field | Required | Description |
---|---|---|
currency | Y | Currency. For details, see currency code. |
forex_rate | Y | Exchange rate |
- Error Code
Error Code | Meaning |
---|---|
CURRENCY_NOT_SUPPORT | This currency is not supported. |
ILLEGAL_SECURITY_PROFILE | This encryption method is not supported. |
success
{
"is_success": true,
"response": {
"currency": "USD",
"forex_rate": "0.1490046489450470854690666349"
}
}
failed
{
"is_success": False,
"error": "CURRENCY_NOT_SUPPORT",
"error_message" : "This currency is not supported",
}
Payment Notification ¶
Payment NotificationPOST/[notify_url]
After the customer pays successfully, HipoPay will send a POST request to the notify_url specified in the order information. If the successful response (‘success’) is not received, HipoPay will send the request for another 10 times at most at the interval of 1s / 2s / 4s / 8s / 60s / 60s / 60s / 600s / 600s / 1800s respectively until the successful response is received.
Note:
It is an asynchronous notification. A same notification might be sent to the merchant system for several times. The merchant system must be able to process repeated notification properly.
- Fields in the notification:
Field | Required | Description |
---|---|---|
status | Y | PAID: payment successful. Note: it is notified only when payment is successful. |
openid | Y | openID |
trade_type | Y | Payment method |
exchange_rate | Y | Exchange rate between payment currency and price currency |
no | Y | Payment order No. |
currency | Y | Pricing currency of the payment order. For details, see currency code. |
amount | Y | Amount of the payment order |
trade_time | Y | Time when transaction is created |
pay_currency | Y | Payment currency. For details, see currency code. |
pay_amount | Y | Payment amount |
agent_order_id | Y | Merchant transaction No. |
Refund ¶
RefundPOST/payment_refund
- .Request Parameter
Field | Type | Required | Description | Example Value |
---|---|---|---|---|
payment_no | string | Y | Payment order No. | “201901021232211023” |
out_refund_id | string | Y | External refund order No. | “R201901021232213” |
refund_amount | string | N | Refund amount. If this parameter is transferred, multiple refunds can be initiated, but the total refund amount cannot exceed the order amount. If this parameter is not transferred, the full order amount will be refunded. | “8.88” |
- .Response Data
Field | Required | Description |
---|---|---|
is_success | Y | Whether the service request is successful. Optional values are True and False . |
response | N | Service response data. It is returned when is_success=True . |
error | N | Service error code. It is returned when is_success=False . For details, see Error Code below. |
error_message | N | Service error description. It is returned when is_success=False . |
When is_success=True
, response
contains the following fields:
Field | Required | Description |
---|---|---|
refund_no | Y | Refund order No. |
status | Y | Refund order status |
refund_amount | Y | Refund amount |
payment_no | Y | Payment order No. |
out_refund_id | Y | External refund order No. |
finish_time | N | Refund completion time (refund successful)/Refund form creation time (refund unsuccessful) |
- Error Code
Error Code | Meaning |
---|---|
REFUND_AMOUNT_INVALID | Refund amount is invalid. |
ILLEGAL_SECURITY_PROFILE | This encryption method is not supported. |
success
{
"is_success": true,
"response": {
"fail_message": "Settled Balance Not Enough",
"finish_time": "2021-12-23 16:42:34",
"out_refund_id": "R201901021232213",
"payment_no": "2637473637382",
"refund_amount": "8.88",
"refund_no": "2637473637452",
"result_code": "0011",
"status": "FAIL"
},
"return_message": "OK"
}
failed
{
"is_success": False,
"error": "REFUND_AMOUNT_INVALID",
"error_message" : "Refund amount is invalid",
}
Check Refund ¶
Check RefundGET/payment_refund
- Request Parameter
Field | Type | Required | Description | Example Value |
---|---|---|---|---|
refund_no | string | N | Refund order No. refund_no and out_refund_id cannot be both null at the same time. |
“20192637473637452” |
out_refund_id | string | N | External refund order No. out_refund_id and refund_no cannot be both null at the same time. |
“R2019263747363” |
- Response Data
Field | Required | Description |
---|---|---|
is_success | Y | Whether the service request is successful. Optional values are True and False . |
response | N | Service response data. It is returned when is_success=True . |
error | N | Service error code. It is returned when is_success=False . For details, see Error Code below. |
error_message | N | Service error description. It is returned when is_success=False . |
When is_success=True
, response
contains the following fields:
Field | Required | Description |
---|---|---|
refund_no | Y | Refund order No. |
out_refund_id | Y | External refund order No. |
status | Y | Refund order status |
refund_amount | Y | Refund amount |
payment_no | Y | Payment order No. |
finish_time | N | Refund completion time (refund successful)/Refund form creation time (refund unsuccessful) |
- Error Code
Error Code | Meaning |
---|---|
REFUND_NOT_FOUND | Refund order not found |
ILLEGAL_SECURITY_PROFILE | This encryption method is not supported. |
success
{
"is_success": true,
"response": {
"finish_time": "2021-12-23 19:22:14",
"out_refund_id": "R201637473637452",
"payment_no": "2637473637382",
"refund_amount": "8.88",
"refund_no": "2637473637452",
"result_code": "0000",
"status": "SUCCESS"
},
"return_message": "OK"
}
failed
{
"is_success": False,
"error": "REFUND_NOT_FOUND",
"error_message" : "Refund order not found",
}
Export Reconciliation Report ¶
Export Reconciliation ReportGET/download_bill
- Request Parameter
Specify the Version field in the header of this API to 3.0.
Field | Type | Required | Description | Example Value |
---|---|---|---|---|
merchant_no | string | Y | Merchant No. | HPXXXXX |
start_date | string | Y | Start time | 20190101 |
end_date | string | Y | End time | 20190301 |
- Response Data This API can query the records of the recent three months. A txt file will be returned.
- Format of the returnd data is as follows (slide left and right to view all fields):
Test: company's reconciliation report of 20190101 to 20190120
Transaction Type,Transaction Time,Order No.,External order No.,Credit,Debit,Balance,Transaction Amount,Exchange Rate Adopted for Settlement,Service Fee,Refund Amount,Refund Order,External Refund Order No.,Fee for Withdrawal,Converted Currency,Exchange Rate Adopted for Conversion,Amount After Conversion,Payment Channel
Collection via WeChat Pay,2019-01-02 10:55:10,`2019010210551024660612990,`13260056057_wechat_1546397710000,0.99 HKD,-,1.06 HKD,1.00 HKD,1,0.01 HKD,-,-,-,-,-,-,-,WECHATPAYCN
Collection via WeChat Pay,2019-01-02 11:07:05,`2019010211070452703917004,`13260056057_wechat_1546398424000,0.99 HKD,-,2.05 HKD,1.00 HKD,1,0.00 HKD,-,-,-,-,-,-,-,WECHATPAYCN
Refund,2019-01-04 10:50:34,`2019010410503295208356067,`,-,-0.99 HKD,1.06 HKD,-,-,-,1.00 HKD,`2019010211070452703917004,`13260056057_wechat_1546398424000,-,-,-,-,WECHATPAYCN
WeChat Pay Interface for Customs Declaration ¶
WeChat Pay Interface for Customs DeclarationPOST/wechatpay/declaration
Before this API is used, the customs code, merchant’s customs registration No. (CR code), and merchant’s customs registration name must be submitted to HipoPay for binding. Declaration must be conducted sub-order by sub-order.
Request Parameter | Description | Required | Type | Example |
---|---|---|---|---|
out_order_no | Merchant order No. | Y | String | 18051893975650968 |
payment_no | HipoPay payment order No. | Y | String | 20180518163203689 |
customs | Customs code (for example, SHENZHEN) | Y | String | SHENZHEN |
mch_customs_no | Merchant’s customs registration No. | Y | String | 123456789BTW |
duty | Duty (some customs require this parameter.) | N | int | 88 |
The unit is 0.01 CNY. For example, the value 88 indicates 0.88 CNY. | ||||
action_type | ADD (add): default value | N | String | ADD |
MODIFY(modify): parameters need to be consistent with first-declaration | ||||
sub_order_no | Merchant sub-order No. | Y | String | 2018051716124 |
sub_order_amount | Amount of the sub-order | Y | float | 46.44 |
transport_amount | Logistics charge | Y | float | 23.22 |
product_amount | Selling price of the product | Y | float | 23.22 |
The following parameters are required if identity verification is needed.
Request Parameter | Description | Required | Type | Example |
---|---|---|---|---|
cert_id | ID card No. | Y | String | 510921199308772318 |
name | Name | Y | String | Lisa |
Note: Amount payable = Logistics charge + Selling price of the product
Return Parameter | Description |
---|---|
out_order_no | Merchant order No. |
payment_no | HipoPay payment order No. |
customs | Customs code |
wechatpay_no | WeChat Pay payment order No. |
state | UNDECLARED - undeclared |
SUBMITTED - declaration submitted (The status would be SUBMITTED if order data is re-submitted for customs declaration in the customs system having a modification API.) | |
PROCESSING - processing declaration | |
SUCCESS - declaration successful | |
FAIL - declaration failed | |
EXCEPT - customs interface exception | |
modify_time | Last modification time |
ver_dept | Verification department |
pay_transaction_id | Transaction ID |
sub_order_no | Merchant sub-order No. |
sub_order_amount | Amount of the sub-order |
transport_amount | Logistics charge |
product_amount | Selling price of the product |
cert_check_result | Identity verification result |
UNCHECKED - Merchant didn’t upload buyer’s identify information. | |
SAME - Buyer’s identity information uploaded by the merchant is consistent with payer’s identity information. | |
DIFFERENT - Buyer’s identity information uploaded by the merchant is inconsistent with payer’s identity information. | |
raw_response | Origional customs’ data (see example below) |
"raw_response": "{
"modify_time": "20190403171704",
"state": "UNDECLARED",
"cert_check_result": "SAME",
"transaction_id": "4200xxxxxxxx665",
"return_code": "SUCCESS",
"return_msg": "成功",
"sign": "23XxXxXxXx78E",
"sub_order_id": "42000002XXXXX8166500",
"mch_id": "1517456621",
"out_trade_no": "201904xxxxxxx26156",
"err_code_des": "OK",
"appid": "wx3zzzzzzz4",
"sub_order_no": "XXXXX",
"verify_department_trade_id": "42000002XXXXX8166500",
"verify_department": "NETSUNION",
"result_code": "SUCCESS",
"err_code": "0"
}"
raw_response Parameter | Description |
---|---|
modify_time | |
state | UNDECLARED - undeclared |
SUBMITTED - declaration submitted (The status would be SUBMITTED if order data is re-submitted for customs declaration in the customs system having a modification API.) | |
PROCESSING - processing declaration | |
SUCCESS - declaration successful | |
FAIL - declaration failed | |
EXCEPT - customs interface exception | |
cert_check_result | Identity verification result |
UNCHECKED - Merchant didn’t upload buyer’s identify information. | |
SAME - Buyer’s identity information uploaded by the merchant is consistent with payer’s identity information. | |
DIFFERENT - Buyer’s identity information uploaded by the merchant is inconsistent with payer’s identity information. | |
transaction_id | Payment order No. generated by WeChat Pay |
return_code | Declaration result code |
return_msg | Declaration result |
sign | Signature |
sub_order_id | Sub-order ID used for declaration |
mch_id | HipoPay merchat No. |
out_trade_no | HipoPay payment order No. |
err_code_des | Error code description. If the result is successful, it is OK. |
appid | App ID allocated by WeChat Pay |
sub_order_no | Sub-order No. of the merchant |
verify_department_trade_id | Trade ID from the verification department used for registration with the customs. For example, the trade ID recorded by UnionPay. |
verify_department | UnionPay - UNIONPAY |
NetsUnion - NETSUNION | |
Others - OTHERS (for example, Balance and Mini Fund) | |
result_code | Service result - SUCCESS/FAIL |
err_code | Service result code |
WeChat Pay Re-declaration ¶
WeChat Pay Re-declarationPOST/wechatpay/redeclaration
-
The declaration API supports re-declaration and modification functions.
-
If the data of a transaction has been reported to the customs but the order data is lost at the electronic port, or if the data of a transaction has been reported to the customs but the merchant registration No., registration name or customs code is incorrect, the re-declaration and modification functions can be used to re-declare the transaction data.
-
One of the following three request paramters is required. If the order is splited, transfer sub_order_no; if the order is not splited, transfer payment_no or out_order_no.
Parameter | Description | Required | Type | Example Value |
---|---|---|---|---|
payment_no | HipoPay payment order No. | N | String | 2018051716124 |
out_order_no | Merchant order No. | N | String | 20180518939756968 |
sub_order_no | Sub-order No. | N | String | 20180518939756968 |
The following two parameters are required.
Parameter | Description | Required | Type | Example Value |
---|---|---|---|---|
customs | Customs code | Y | String | SHENZHEN |
mch_customs_no | Merchant’s customs registration No. | Y | String | 123456789BTW |
Response data is as follows:
Parameter | Description |
---|---|
out_order_no | Merchant order No. |
payment_no | Payment order No. |
customs | Customs code |
wechatpay_no | WeChat Pay payent order No. |
state | UNDECLARED - undeclared |
SUBMITTED - declaration submitted (The status would be SUBMITTED if order data is re-submitted for customs declaration in the customs system having a modification API.) | |
PROCESSING - processing declaration | |
SUCCESS - declaration successful | |
FAIL - declaration failed | |
EXCEPT - customs interface exception | |
modify_time | Last modification time |
explanation | Declaration result description (If declaration is failed, this field returns the cause of the failure.) |
Check WeChat Pay Declaration ¶
Check WeChat Pay DeclarationGET/wechatpay/declaration
One of the following three request paramters is required. If the order is splited, transfer sub_order_no; if the order is not splited, transfer payment_no or out_order_no.
Parameter | Description | Required | Type | Example Value |
---|---|---|---|---|
payment_no | HipoPay payment order No. | N | String | 2018051816320384498567689 |
out_order_no | Merchant order No. | N | String | 1805123918160384498567689 |
sub_order_no | Sub-order No. | N | String | 18051816320384338567689 |
customs | Customs code | Y | String | BEIJING |
Response data is as follows:
Parameter | Description |
---|---|
out_order_no | Merchant order No. |
payment_no | HipoPay payment order No. |
customs | Customs code |
wechatpay_no | WeChat Pay payment order No. |
state | UNDECLARED - undeclared |
SUBMITTED - declaration submitted (The status would be SUBMITTED if order data is re-submitted for customs declaration in the customs system having a modification API.) | |
PROCESSING - processing declaration | |
FAIL - declaration failed | |
EXCEPT - customs interface exception | |
modify_time | Last modification time |
sub_order_no | Merchant sub-order No. |
sub_order_amount | Amount of the sub-order |
transport_amount | Logistics charge |
product_amount | Selling price of the product |
The following data is returned if identity verification is performed:
Parameter | Description |
---|---|
cert_check_result | Identity verification result |
UNCHECKED - Merchant didn’t upload buyer’s identify information. | |
SAME - Buyer’s identity information uploaded by the merchant is consistent with payer’s identity information. | |
DIFFERENT - Buyer’s identity information uploaded by the merchant is consistent with payer’s identity information. |
WeChat Pay Customs Code ¶
Customs Name | Unified Declaration Solution | Customs Code |
---|---|---|
Guazhou Customs (general administration of customs) | Push GUANGZHOU_ZS | GUANGZHOU_ZS |
Huangpu Entry-Exit Inspection and Quarantine Bureau, P.R. China | Request the declaration interface for two times. Push GUANGZHOU_ZS and GUANGZHOU_HP_GJ respectively. | GUANGZHOU_HP_GJ |
Nansha Entry-Exit Inspection and Quarantine Bureau, P.R. China | Request the declaration interface for two times. Push GUANGZHOU_ZS and GUANGZHOU_NS_GJ respectively. | GUANGZHOU_NS_GJ |
Hangzhou Customs (general administration of customs) | Push HANGZHOU_ZS | HANGZHOU_ZS |
Ningbo Customs | Push NINGBO | NINGBO |
Zhengzhou Customs | (Bonded logistics center) push ZHENGZHOU_BS | ZHENGZHOU_BS |
Chongqing Customs | Push CHONGQING | CHONGQING |
Xi’an Customs | Push XIAN | XIAN |
Shanghai Customs (general administration of customs) | Push SHANGHAI_ZS | SHANGHAI_ZS |
Shenzhen Customs | Push SHENZHEN | SHENZHEN |
Zhengzhou Comprehensive Bonded Zone (general administration of customs) | Push ZHENGZHOU_ZH_ZS | ZHENGZHOU_ZH_ZS |
Tianjin Customs | Push TIANJIN | TIANJIN |
Beijing Customs | Push BEIJING | BEIJING |
Fuzhou Customs | Push GUANGZHOU_ZS | GUANGZHOU_ZS |
Currency Code
Currency | 3-Character Code |
---|---|
Chinese Yuan | CNY |
Great Britain Pound | GBP |
Hong Kong Dollar | HKD |
US Dollar | USD |
Japanese Yen | JPY |
Canadian Dollar | CAD |
Australian Dollar | AUD |
Euro | EUR |
New Zealand Dollar | NZD |
Korean Won | KRW |
Thai Baht | THB |
Payment Order Status
Status Code | Description |
---|---|
INIT | Payment order has been created |
PAID | Payment successful |
FAIL | Payment failed |
USERPAYING | Waiting for payment |
EXPIRED | Timeout |
Refund Status
Status Code | Description |
---|---|
SUCCESS | Refund successful |
PROCESSING | Processing |
FAIL | Refund failed |
Refund Code
code | message | Description |
---|---|---|
0000 | Refund Processing | |
0001 | Refund xxxxxxxx Already Exists. | |
0002 | payment xxxxxxxxxx Not Found. | |
0003 | Refund currency error. | |
0004 | Payment not paid yet. | |
0005 | Payment not credited yet. | |
0006 | Payment full refunded. | |
0007 | payment settle_forex rate is -0.1 | |
0008 | Payment refundable not enough. | |
0009 | refund amount must more than zero. | |
0010 | merchant has not HKD balance. | |
0011 | Settled Balance not enough. | |
0012 | Unsettled Balance not enough. | |
0013 | Refund xxxxx Invalid | |
0099 | SYSYTEM_ERROR | |
0101 | NOTENOUGH | merchant balance not enough for refunding |
0102 | USER_ACCOUNT_ABNORMAL | User account signed out |
0103 | SYSTEMERROR | API Errore |
0104 | BIZERR_NEED_RETRY | Need retry |
0105 | TRADE_OVERDUE | payment expeired |
0106 | ERROR | Channel Error |
0107 | INVALID_REQ_TOO_MUCH | invalid request too much |
0108 | INVALID_TRANSACTIONID | invalid transaction_id |
0109 | PARAM_ERROR | param error |
0110 | APPID_NOT_EXIST | appid not exist |
0111 | MCHID_NOT_EXIST | mchid not exist |
0112 | ORDERNOTEXIST | payment not exist |
0113 | REQUIRE_POST_METHOD | |
0114 | SIGNERROR | |
0115 | XML_FORMAT_ERROR | |
0116 | FREQUENCY_LIMITED | |
0117 | NOAUTH | |
0118 | CERT_ERROR | |
0119 | REFUND_FEE_MISMATCH | double request different amount |
0120 | INVALID_REQUEST | param error |
0121 | ORDER_NOT_READY | payment processing ,try later |
0199 | SYSYTEM_ERROR | wechatpay unknown error |
0201 | MERCHANT_BALANCE_NOT_ENOUGH | |
0202 | REFUNDMENT_VALID_DATE_EXCEED | |
0203 | SYSTEM_EXCEPTION | |
0204 | ILLEGAL_ARGUMENT | |
0205 | REPEATED_REFUNDMENT_REQUEST | |
0206 | RETURN_AMOUNT_EXCEED | |
0207 | CURRENCY_NOT_SAME | |
0208 | PURCHASE_TRADE_NOT_EXIST | |
0209 | TRADE_NOT_EXIST | |
0210 | TRADE_STATUS_ERROR | |
0211 | REFUND_AMT_RESTRICTION | |
0212 | BUYER_NOT_EXIST | |
0213 | REFUND_CHARGE_ERROR | |
0214 | INVALID_PARAMETER | |
0215 | REASON_TRADE_BEEN_FREEZEN | |
0216 | REQUEST_AMOUNT_EXCEED | |
0217 | ILLEGAL_SIGN | |
0218 | ILLEGAL_SERVICE | |
0219 | ILLEGAL_PARTNER | |
0220 | ILLEGAL_SIGN_TYPE | |
0221 | ILLEGAL_PARTNER_EXTERFACE | |
0222 | ILLEGAL_DYN_MD5_KEY | |
0223 | ILLEGAL_ENCRYPT | |
0224 | ILLEGAL_USER | |
0225 | ILLEGAL_EXTERFACE | |
0226 | ILLEGAL_AGENT | |
0227 | HAS_NO_PRIVILEGE | |
0228 | INVALID_CHARACTER_SET | |
0229 | SYSTEM_ERROR | |
0230 | SESSION_TIMEOUT | |
0231 | ILLEGAL_TARGET_SERVICE | |
0232 | ILLEGAL_ACCESS_SWITCH_SYSTEM | |
0233 | EXTERFACE_IS_CLOSED | |
0299 | SYSYTEM_ERROR | alipay unknow error |