# 1、Create Payment Request
API Description
Merchants can use this API to create a new cryptocurrency payment order. The system will return a cashier link and order details, and the user can complete the payment through the cashier page.
Request Method
POST
Request URL
/api/v3/wallet/pay
Request Header
Content-Type: application/json;charset=utf-8
Parameter Name | Description | Example Value |
---|---|---|
access_key | Merchant's access key | pFqV75X3 |
timestamp | Unix timestamp in milliseconds | 1679724896223 |
nonce | UUID V4 | 794c26b0-d33c-4394-b2bb-c485eca16d9e |
sign | Calculated signature | kAXyh+eerqrefyaF8dyFB0M4FVo= |
Request Parameters (JSON)
{
"externalOrderId": "402297358314559082",
"cashierChainType": "ETH",
"cashierTokenType": "USDT",
"cashierCryptoAmount": "1",
"cashierCurrencyType": "USD",
"hiddenMerchantLogo": 0,
"hiddenMerchantName": 0,
"notifyUrl": "http://192.168.1.135:30002/url",
"remark": "123"
}
Parameter Description
Parameter Name | Type | Description | Required |
---|---|---|---|
externalOrderId | String(64) | Merchant's order ID | Yes |
cashierChainType | String | Cashier main chain type, possible values: ETH, TRON, BSC | No |
cashierTokenType | String | Cryptocurrency type, possible values: ETH: USDT,BUSD,TUSD,USDC,PUSD,ETH,TRX,TON,LINK,DAI,SHIB,UNI,LEO,OKB,PEPE TRON: USDT,TUSD,USDC,PUSD,TRX BSC:USDT,BUSD,TUSD,USDC,PUSD,BNB,XRP,ADA,DOGE,DOT,LTC,BCH,ETC,FIL,XTZ,CAT,PXP,GOUT,PEPE | No |
cashierCryptoAmount | String | Cryptocurrency amount, with precision according to token (either this or cashierCurrencyAmount) | No |
cashierCurrencyAmount | String | Fiat currency amount, with precision ≤2 digits (if provided, it will be automatically converted to the corresponding cryptocurrency amount based on the platform's exchange rate) | No |
cashierCurrencyType | String | Fiat currency type, possible values: USD, BRL, CNY (required if providing fiat currency amount) | No |
hiddenMerchantLogo | int64 | Whether to hide the merchant logo, possible values: 0, 1. 0 - Do not hide logo, 1 - Hide logo (default is 0 if not provided) | No |
hiddenMerchantName | int64 | Whether to hide the merchant name, possible values: 0, 1. 0 - Do not hide name, 1 - Hide name (default is 0 if not provided) | No |
notifyUrl | String | Callback URL (if provided, the system will callback this URL; otherwise, it will callback the URL configured in the merchant backend) | No |
remark | String(1024) | Order remark | No |
successRedirectUrl | String | Redirect URL after successful payment | No |
Response Type
Content-Type: application/json;charset=utf-8
Response Example 1 (Order based on cryptocurrency type)
{
"code": "200",
"success": true,
"msg": "成功",
"msgEn": "SUCCESS",
"data": {
"cashierId": "OCRYPPAID202307310902391690794159250DOCKER020000000200001107",
"cashierUrl": "http://192.168.1.74:89/OCRYPPAID202307310902391690794159250DOCKER020000000200001107",
"cashierExpireTime": 1690794759313,
"cashierCryptoAmount": "1",
"cashierCurrencyAmount": "0.98",
"cashierRate": 0.983,
"cashierCurrencyType": "USD",
"cashierTokenType": "USDT",
"cashierChainType": "ETH",
"isHiddenMerchantName": false,
"isHiddenMerchantLogo": false,
"externalOrderId": "402297358314559082",
"remark": "123",
"cryptoOrder": {
"addressTo": "0xe072c63c1e04f8c6f36133f6629f66778147d5d8",
"orderId": "OCRYPPAID202307310902391690794159441DOCKER020000000400001108",
"externalOrderId": "402297358314559082",
"exchangeRate": 0.983,
"currencyAmount": "0.98",
"cryptoAmount": "1",
"currencyType": "USD",
"tokenType": "USDT",
"chainType": "ETH",
"orderStatus": "Wait pay",
"orderStatusCode": 1,
"orderExpireTime": 1690801360527
}
}
}
Response Example 2 (Order based on fiat currency type)
{
"code":"200",
"success":true,
"msg":"成功",
"msgEn":"SUCCESS",
"data":{
"cashierId":"OCRYPPAID20250417031656174485981616300000201297223",
"cashierUrl":"http://192.168.1.74:89/OCRYPPAID2025041703165617448598161630000201297223",
"cashierExpireTime":1744860416178,
"cashierCurrencyAmount":10,
"cashierRate":0,
"cashierCurrencyType":"BRL",
"cashierTokenType":"",
"cashierChainType":"",
"isHiddenMerchantName":true,
"isHiddenMerchantLogo":true,
"externalOrderId":"00637444",
"remark":"test order",
"cryptoOrder":{
}
}
}
Response Parameter Description
Parameter Name | Type | Description |
---|---|---|
cashierId | String | Cashier ID |
cashierUrl | String | Cashier URL |
cashierExpireTime | int64 | Cashier expiration timestamp |
cashierCryptoAmount | string | Cryptocurrency amount at the cashier |
cashierCurrencyAmount | string | Fiat currency amount at the cashier |
cashierRate | float64 | Exchange rate at the cashier |
cashierCurrencyType | String | Fiat currency type at the cashier |
cashierTokenType | String | Cryptocurrency type at the cashier |
cashierChainType | String | Cryptocurrency main chain type at the cashier |
isHiddenMerchantName | Boolean | Whether the merchant name is hidden |
isHiddenMerchantLogo | Boolean | Whether the merchant logo is hidden |
externalOrderId | String | Merchant's order ID |
remark | String | Remark |
addressTo | String | Blockchain payment address |
orderId | String | Order ID |
exchangeRate | float64 | Exchange rate at the time of order creation |
currencyAmount | String | Fiat currency amount in the order |
cryptoAmount | String | Cryptocurrency amount in the order |
currencyType | String | Fiat currency type in the order |
tokenType | String | Cryptocurrency type in the order |
chainType | String | Main chain type of the cryptocurrency in the order |
orderExpireTime | int64 | Order expiration timestamp |
orderStatus | String | Order status description |
orderStatusCode | int64 | Status code, values: 1, 2, 4, 8, 16. A normal created payment order response is 1; later status updates can be checked via queries or callbacks. Detailed status codes can be found below. |
Order Status Code Description
Status Code | Status Description | Final Status | Explanation |
---|---|---|---|
1 | Awaiting Payment | No | The order has been created but the user has not made the payment yet; no action needed. |
2 | Confirming on Blockchain | No | The user has clicked "Completed Payment" on the cashier page, and the system is checking if the payment is confirmed on the blockchain; no action needed. |
4 | Completed | Yes | Payment successful, the system will trigger a callback; the merchant should process according to business logic such as adding balance or fulfilling orders. |
8 | Payment Amount Mismatch | Yes | User paid an amount ≠ expected amount, the system will trigger a callback; it is recommended to credit the actual amount paid. |
16 | Payment Timeout | Yes | The user did not pay in time, and the system will not trigger a callback; if the merchant confirms receipt, manual handling is needed. |
32 | Not Paid (Address Released) | Yes | The user did not pay for a long time, the address is released; if payment is made later, a new order will be generated. |