1.1. Introduction
Qianyi outsources logistics spec, this document needs to be reviewed.
1.2. Environment Requirements and Basic Agreements
Authorization: accessId
(customer ID), secretKey
(key for verifying message information). For warehouses, use the mutually agreed key as the signature verification key.
Interface address: Third-party provides service address for Qianyi to call.
Request Method:
- Method: POST
- Content-Type: application/x-www-form-urlencoded
Public Request:
Field Name | Type | Required | Remarks |
---|---|---|---|
accessId | String | Yes | Third-party authorized Qianyi customer ID. For gwms this field is empty |
method | String | Yes | Interface method name |
content | String | Yes | Business parameters |
sign | String | Yes | Signature |
Header Parameters:
Field Name | Type | Required | Remarks |
---|---|---|---|
logisticsType | String | N | Logistics type |
secret | String | N | Third-party warehouse secret key. gwms uses the mutually agreed secret key for signature verification |
accessToken | String | N | accessToken |
refreshToken | String | N | refreshToken |
authInfo | String | N | gwms passes authorization information used by the logistics provider. JSON format |
apiUrl | String | N | Service request domain: https://www.baidu.com |
authInfo Value Example: "authInfo":[ {"authInfoKey":"MERCHANT_ID", "value":"BG2447"}, {"authInfoKey":"SECRET_KEY", "value":"f1dafc7b7c934d21327d990b0ea56cfcf4814ef699345a37010c07e02d5219a9"}, {"authInfoKey":"PRINT_SIZE", "value":""} ] Where MERCHANT_ID, SECRET_KEY, PRINT_SIZE are fields agreed upon by the logistics provider. Different logistics providers may have different fields, all requested through JSON format.
Public Response:
Field Name | Type | Required | Remarks |
---|---|---|---|
success | boolean | Yes | Whether business processing was successful |
message | String | No | Business processing exception message |
Signature Method:
Compose accessId and content into a JSON string {"accessId":"accessId","content":"specific business parameters"}, when content is empty {"accessId":"accessId"}. For gwms, accessId is empty.
Add the customer secretKey allocated by the third party to the end of the JSON to get the string to be encrypted {"accessId":"accessId","content":"specific business parameters"}secretKey. For gwms, secretKey is the mutually agreed key.
Perform SHA1 encryption on the string to be encrypted to get the signature (org.apache.commons.codec.digest.DigestUtils.sha1Hex(string to be encrypted))
Assign the signature to the sign field in the public request
1.3. Channel List
Method Name:
- channels
Return Information:
Field Name | Field Description | Type | Required | Remarks |
---|---|---|---|---|
channelList | Channel information | Array | ||
└ channelCode | Channel code | String | Required | Must be unique |
└ channelName | Channel name | String | Required | |
└ carrier | Carrier code | String | N | |
└ carrierName | Carrier name | String | N | |
└ countrys | Country information | List <Country> |
N | |
└└countryCode | Country code | String | Y | |
└└countryName | Country name | String | Y | |
└ areas | Areas | List <String> |
N |
1.4. Create Logistics Order (Apply for Tracking Number)
Method Name:
- createOrder
Interface Parameters:
Field Name | Field Description | Type | Required | Remarks |
---|---|---|---|---|
customerNumber | Order number | String | Required | |
onlineOrderId | Online order ID | String | N | |
addedServices | Signature service | String | N | Signature service 1 general signature service 2 acknowledged signature service |
channelCode | Shipping channel code | String | Required | |
recipientAddress | Recipient information | Object | Required | |
└ name | Recipient name | String | Required | |
└ address1 | Recipient address 1 | String | Required | |
└ address2 | Recipient address 2 | String | N | |
└ phone1 | Recipient phone 1 | String | Required | |
└ phone2 | Recipient phone 2 | String | N | |
Recipient email | String | N | ||
└ country | Recipient country | String | Required | Two-letter country code ISO 3166-1 |
└ province | Recipient state | String | Y | |
└ city | Recipient city | String | Y | |
└ town | Recipient district | String | N | |
└ postalCode | Recipient postal code | String | Required | |
senderAddress | Sender information | Object | Required | |
└ name | Sender name | String | Required | |
└ address1 | Sender address 1 | String | Required | |
└ address2 | Sender address 2 | String | N | |
└ phone1 | Sender phone 1 | String | Required | |
└ phone2 | Sender phone 2 | String | N | |
Sender email | String | N | ||
└ country | Sender country | String | Required | Two-letter country code ISO 3166-1 |
└ province | Sender state | String | Y | |
└ city | Sender city | String | Y | |
└ town | Sender district | String | Y | |
└ postalCode | Sender postal code | String | Required | |
itemList | Order item information | Array | Required | |
└packageNumber | Unique package number | String | N | Current document unique package number, required when packageList has value |
└ sku | Product code | String | Required | |
└ skuName | Product name | String | N | |
└ length | Length | String | N | |
└ wide | Width | String | N | |
└ high | Height | String | N | |
└ lengthUnit | Length unit | String | N | cm(cm), In(inch), m(meter) |
└ weight | Customs weight | BigDecimal | Y | Weight converted to KG, default 0 |
└ skuWeight | Product weight | Double | N | |
└ weightUnit | Weight unit | String | N | KG(kilogram), GRAM(gram), LBS(pound) |
└ color | Color | String | N | |
└ skuPrice | Product actual payment amount | BigDecimal | N | |
└ quantity | Quantity | String | Required | |
└ price | Product amount | BigDecimal | Required | Total amount of this product |
└ currency | Currency | String | Required | ISO 4217 |
└ customsCode | Customs code | String | N | |
└ cnCustomsName | Chinese customs name | String | N | |
└ enCustomsName | English customs name | String | N | |
codEnabled | Whether COD order | Integer | N | 1: COD order 0: non-COD order |
codPayAmount | COD order amount | BigDecimal | N | |
codCurrency | COD amount currency | String | N | |
packageList | Multi-package list | Array | N | |
└packageNumber | Unique package number | String | Y | Current document package number |
└packageLength | Package length | Number | N | |
└packageWide | Package width | Number | N | |
└packageHigh | Package height | Number | N | |
└packageUnit | Package unit | String | N | cm(cm), In(inch), m(meter), default: cm |
└totalWeight | Total weight | Number | N | Unit is KG |
packageLength | Package length | Double | N | |
packageWide | Package width | Double | N | |
packageHigh | Package height | Double | N | |
packageUnit | Package unit | String | N | cm(cm), In(inch), m(meter), default: cm |
totalWeight | Total weight | BigDecimal | N | Unit is KG |
iossNumber | IOSS number | String | N | |
taxNumber | Tax number | String | N | |
receiverTaxNumber | Recipient tax number | String | N | |
remarks | Remarks | String | N | |
pickupTime | Pickup time | Long | N | 1659690000 |
pickupTimeRangeId | Platform pickup time ID | Long | N | 1 |
pickupTimeRange | Pickup time range | String | N | 10:00 - 19:00 |
paymentRole | Payer | Integer | N | 1: Sender pays 2: Recipient pays |
collectType | Pickup type | Integer | N | 1: pickup 2: drop off |
1.5. Cancel Logistics Order
Method Name:
- cancelOrder
Interface Parameters:
Field Name | Field Description | Type | Required | Remarks |
---|---|---|---|---|
customerNumber | Qianyi order number | String | Optional | Can be used with trackingNumber |
trackingNumber | Tracking number | String | Optional | Can be used with customerNumber |
1.6. Get Label
Method Name:
- getLabel
Interface Parameters:
Field Name | Field Description | Type | Required | Remarks |
---|---|---|---|---|
customerNumber | Order number | String | Required | |
trackingNumber | Tracking number | String | Required | |
labelType | Label type | String | Y | Template size: A4, 10*15 etc |
Return Information:
Field Name | Field Description | Type | Required | Remarks |
---|---|---|---|---|
trackingNumber | Tracking number | String | Required | |
customerNumber | Order number | String | N | |
labelData | Label | String | Required | PDF Base64 |
1.7. Get Tracking Information
Method Name:
- getTrackingInfo
Interface Parameters:
Field Name | Field Description | Type | Required | Remarks |
---|---|---|---|---|
customerNumber | Qianyi order number | String | Required | |
trackingNumber | Tracking number | String | Required |
Return Information:
Field Name | Field Description | Type | Required | Remarks |
---|---|---|---|---|
orderNumber | Qianyi order number | String | Required | |
carrierName | Carrier name | String | Required | |
trackingNumber | Tracking number | String | Required | |
status | Tracking status | String | Required | CREATED(pending pickup) SHIPPED(picked up) IN_TRANSIT(in transit) OUT_FOR_DELIVERY(out for delivery) DELIVERED(delivered) UNDELIVERABLE(undeliverable) DELAYED(delayed) RETURNING(returning) RETURNED(returned) |
trackingEvents | Tracking events | Array | Required | |
└ eventDate | Event date | String | Required | Example: 2021-01-01 10:00:00 |
└ eventPlace | Event place | String | Required | Example: TEST warehouse, CA |
└ eventDesc | Event description | String | Required | Example: Arrived at transit warehouse |
1.8. Get Available Pickup Times
Method Name:
- getPickupTime
Interface Parameters: None
Return Information:
Field Name | Field Description | Type | Required | Remarks |
---|---|---|---|---|
data | List<Object> |
Y | ||
└ pickupTime | Long | N | 1659690000 | |
└ pickupTimeRangeId | Long | N | 1 | |
└ pickupTimeRange | String | N | 10:00 - 19:00 |