Place Order
Place order. Supports online payment, pure wallet payment and mixed payment; also creates wallet recharge orders with productCode=WALLET_RECHARGE.
Interface Address:
/papi/order/createRequest Method:
POSTContent-Type:
application/jsonHeader Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| X-Access-Key | string | Yes | API access key ID. See API Rules for authentication |
| X-Signature | string | Yes | Signature value, Base64-encoded HMAC-SHA256 result |
| X-Timestamp | string | Yes | Millisecond-level Unix timestamp (13 digits) |
| X-Nonce | string | Yes | Random string, 10~32 lowercase letters + digits |
Body Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
| productCode | string | Yes | Product code; fixed to WALLET_RECHARGE for wallet recharge |
| packageCode | string | Yes | Package code; not needed for wallet recharge orders |
| skuCode | string | Yes | SKU code; not needed for wallet recharge orders |
| quantity | integer | No | Purchase quantity, default 1; not needed for wallet recharge orders |
| amount | integer | No | Recharge amount in US cents (e.g. 1000 means 10 USD); decimals are not allowed; used only by wallet recharge orders |
| currency | string | No | Currency code; only USD is supported; used only by wallet recharge orders |
| payCode | string | Yes | Payment method code; WALLET for pure wallet payment; must not be WALLET for wallet recharge orders |
| providerCode | string | Yes | Provider code; INTERNAL for wallet payment |
| walletPayAmount | long | No | Wallet payment amount for mixed payment, in cents; must be greater than 0 and less than the order's actual payment amount |
| autoRenew | integer | No | Auto-renewal setting: 0 disabled, 1 enabled, default 0 |
| modelSid | string | No | Model SID, required for high-end real device (customizeType=2) orders |
| payParams | object | No | Payment parameters |
| ├─ key | object | No | key |
Request Example:
{
"productCode": "CLOUD_PHONE",
"packageCode": "s2e9pd6r6x",
"skuCode": "gy5zp58kt3",
"quantity": 1,
"payCode": "wxpayUs",
"providerCode": "Wallyt412",
"modelSid": "string",
"payParams": {
"key": {}
}
}Response Parameters:
| Parameter | Type | Description |
|---|---|---|
| code | integer | Error code. See Error Codes |
| data | object | Response data |
| ├─ orderNo | string | Order number |
| ├─ qrcodeUrl | string | QR code URL |
| ├─ payUrl | string | Payment URL |
| ├─ payParams | object | Payment parameters (specific parameters for various payment methods, such as APP payment parameters) |
| ├─├─ key | object | key |
| ├─ payAmount | integer | Payment amount (US cents) |
| ├─ payAmountYuan | number | Payment amount (USD) |
| ├─ walletPayAmount | long | Wallet payment amount (US cents) |
| ├─ onlinePayAmount | long | Online payment amount (US cents) |
| ├─ walletBalance | string | Wallet balance after wallet payment (US cents), may be empty when wallet payment is not used |
| ├─ currency | string | Currency (USD) |
| ├─ expireTime | integer | Order expiration time (timestamp) |
| ├─ payMethod | string | Payment method |
| ├─ payIcon | string | Payment method icon |
| ├─ payType | integer | Payment type |
| ├─ payScene | integer | Payment scene |
| ├─ transactionId | string | Transaction ID |
| ├─ productName | string | Product name |
| ├─ description | string | Order description |
| msg | string | Error message |
Response Example:
{
"code": 0,
"data": {
"orderNo": "",
"qrcodeUrl": "",
"payUrl": "",
"payParams": {
"": {}
},
"payAmount": 0,
"payAmountYuan": 0.0,
"walletPayAmount": 0,
"onlinePayAmount": 0,
"walletBalance": "0",
"currency": "",
"expireTime": 0,
"payMethod": "",
"payIcon": "",
"payType": 0,
"payScene": 0,
"transactionId": "",
"productName": "",
"description": ""
},
"msg": ""
}Notes:
- Wallet recharge ordering:
productCodeis fixed toWALLET_RECHARGE(internal product type 7); no package, SKU or quantity is needed.amountis in US cents (e.g.1000means 10 USD; decimals are not allowed), and the currency is fixed to USD.payCodemust not beWALLET. Confirm crediting via Get Recharge Status. - Pure wallet payment: pass
payCode=WALLETandproviderCode=INTERNAL; the full order amount is used whenwalletPayAmountis omitted. - Mixed payment: pass the actual online
payCodepluswalletPayAmount(in US cents); it must be greater than 0 and less than the order's actual payment amount computed by the backend, and the online amount is calculated by the backend. It is recommended to get the actual price via Price Calculation before placing the order. - High-end real device ordering: orders for high-end real devices (customizeType=2) must pass
modelSid(Model SID). - On request failure or timeout, query the original order and transactions first; do not use the
X-Noncefrom the signature as a business idempotency key.
Wallet payment rules
Wallet payment uses payCode=WALLET and providerCode=INTERNAL. Mixed payment uses the actual online channel plus an integer walletPayAmount in USD cents, greater than zero and below the calculated payable total; do not submit onlinePayAmount. Recharge orders cannot use wallet or mixed payment. On timeout or uncertain payment status, query the original order and transactions before retrying. Cancellation or switching to wallet payment requires reliable confirmation that an existing online payment is closed. Wallet deductions are returned against the original transaction when cancellation is permitted.
Recharge: use productCode=WALLET_RECHARGE, positive JSON integer amount (for example 1000), and USD (default); omit SKU, package, quantity, product type and business requestId. providerCode must not be INTERNAL. payNo is ignored by this response VO. Only premium real-device purchases require modelSid, obtained from the brand/model endpoint; this applies to wallet, online and mixed payment.
