Skip to content

对外接口文档

版本:1.3
更新日期:2026-09-08

正式域名:https://yunpsk.cn

测试域名:https://test.yunpsk.com

1. 鉴权方式

所有接口(注册接口除外)通过 URL Query Parameter 传递鉴权信息:

参数类型必填说明
appKeyString平台分配的应用Key
timestampStringUnix时间戳(秒或毫秒),5分钟内有效
signStringHMAC-SHA256 签名

签名规则

  1. 将所有参数(除 sign 外)按 key 字典序排序
  2. 拼接为 key1value1key2value2... 格式
  3. 如有 JSON body,计算 body 的 SHA-256 哈希,追加 bodyHash{hash值}
  4. 使用 HMAC-SHA256(appSecret, 拼接字符串) 计算签名
  5. 结果转为小写 hex 字符串

签名示例(Java)

java
TreeMap<String, String> params = new TreeMap<>();
params.put("appKey", "your_app_key");
params.put("timestamp", String.valueOf(System.currentTimeMillis() / 1000));
String sign = PlatformSignUtil.generateSign(params, appSecret, bodyHash);

2. 统一响应格式

json
{
  "code": 0,
  "message": "success",
  "data": { ... }
}

错误码说明

范围说明
0成功
-1通用错误
9001-9006鉴权错误
2001-2005订单/注册错误
3001门店错误
4001-4004财务/平台配置错误
5001-5003支付/余额查询错误

详细错误码

错误码说明使用场景
9001签名验证失败鉴权
9002timestamp已过期或格式错误鉴权
9003appKey无效或平台已禁用鉴权
9004缺少必要参数鉴权
9006该平台已暂停接单鉴权
2001订单不存在 / platformCode已存在订单查询/注册
2002订单状态不允许操作 / 手机号已注册订单操作/注册
2003订单号重复 / 追加金额必须大于0订单创建/加小费
2004询价失败 / 余额不足询价/加小费
2005下单失败 / 并发提交冲突订单创建
3001门店不存在 / 平台配置不存在门店/骑手查询
4001余额不足扣款
4002充值金额必须大于0充值
4004平台配置不存在或未绑定商户财务/门店
5001创建支付失败充值
5002生成二维码失败充值
5003查询余额失败余额查询

3. 订单接口

3.1 门店询价

POST /api/platformA/order/storeInquiry

根据门店地址和收件地址计算配送费和预计送达时间。

请求参数(JSON Body):

参数类型必填说明
thirdStoreIdString三方门店ID
recipientNameString收件人姓名
recipientPhoneString收件人电话
recipientAddressString收件人地址
recipientLngString收件人经度
recipientLatString收件人纬度
totalWeightInteger物品重量(千克)
businessTypeInteger业务类型(1=帮送, 2=帮买, 3=万能服务,4=帮取,5=1对1专送),默认1
prebookInteger是否即时单(0=即时单,1=预约单),默认0
expectedPickupTimeLong预计取件时间(Unix时间戳秒),预约单必填

响应参数:

参数类型说明
predictDeliveryTimeLong预计送达时间(Unix时间戳秒)
actualFeeDouble预计收入金额(元)
deliveryFeeDouble配送费用(元)
deliveryDistanceDouble配送距离(公里)

请求示例:

json
{
  "thirdStoreId": "STORE_001",
  "recipientName": "张三",
  "recipientPhone": "13800138000",
  "recipientAddress": "北京市朝阳区建国路88号",
  "recipientLng": "116.461",
  "recipientLat": "39.908",
  "totalWeight": 1000,
  "businessType": 1,
  "prebook": 0
}

响应示例:

json
{
  "code": 0,
  "message": "success",
  "data": {
    "predictDeliveryTime": 1693500000,
    "actualFee": 12.50,
    "deliveryFee": 12.50,
    "deliveryDistance": 5.2
  }
}

3.2 地址询价

POST /api/platformA/order/addressInquiry

根据发件地址和收件地址计算配送费和预计送达时间。

请求参数(JSON Body):

参数类型必填说明
senderLngString发件人经度
senderLatString发件人纬度
recipientLngString收件人经度
recipientLatString收件人纬度
totalWeightInteger物品重量(千克)
businessTypeInteger业务类型,默认1
prebookInteger是否即时单,默认0
expectedPickupTimeLong预计取件时间(Unix时间戳秒)

响应参数: 同门店询价


3.3 创建订单(简易版)

POST /api/platformA/order/create

创建配送订单,不包含定价计算。适用于已有自己的定价逻辑、只需系统配送的场景。

请求参数(JSON Body):

参数类型必填说明
thirdOrderIdString三方订单号(幂等键,重复提交返回相同结果)
senderNameString发件人姓名
senderPhoneString发件人电话
senderAddressString发件人地址
senderLngString发件人经度
senderLatString发件人纬度
receiverNameString收件人姓名
receiverPhoneString收件人电话
receiverAddressString收件人地址
receiverLngString收件人经度
receiverLatString收件人纬度
itemDescriptionString物品描述
itemWeightString物品重量(千克)
remarkString订单备注
callbackUrlString订单状态回调地址,传入后会自动更新平台配置

响应参数:

参数类型说明
orderIdString内部订单ID
thirdOrderIdString三方订单号
statusInteger订单状态(2=已支付待接单)
statusDescString状态描述
createTimeString创建时间

业务规则:

  • thirdOrderId 为幂等键,重复提交返回相同订单
  • 不包含定价计算,配送费由调用方自行确定
  • 如需系统自动定价,请使用门店下单或地址下单接口

3.4 门店下单

POST /api/platformA/order/createStoreOrder

基于门店地址创建配送订单,取件地址从门店获取,包含定价计算。

请求参数(JSON Body):

参数类型必填说明
thirdOrderIdString三方订单号(幂等键,重复提交返回相同结果)
thirdStoreIdString三方门店ID
recipientNameString收件人姓名
recipientPhoneString收件人电话
recipientAddressString收件人地址
recipientLngString收件人经度
recipientLatString收件人纬度
totalWeightInteger物品重量(千克)
goodsDetailsString物品明细(JSON格式)
businessTypeInteger业务类型,默认1
prebookInteger是否即时单,默认0
expectedPickupTimeLong预计取件时间(Unix时间戳秒)
tipFeeDouble小费(元)
orderRemarkString订单备注
callbackUrlString订单状态回调地址,传入后会自动更新平台配置

响应参数:

参数类型说明
orderIdString内部订单ID
thirdOrderIdString三方订单号
statusInteger订单状态(2=已支付待接单)
statusDescString状态描述
deliveryFeeDouble配送费用(元)
deliveryDistanceDouble配送距离(公里)
predictDeliveryTimeLong预计送达时间(Unix时间戳秒)

请求示例:

json
{
  "thirdOrderId": "ORD_20260831_001",
  "thirdStoreId": "STORE_001",
  "recipientName": "李四",
  "recipientPhone": "13900139000",
  "recipientAddress": "北京市海淀区中关村大街1号",
  "recipientLng": "116.310",
  "recipientLat": "39.956",
  "totalWeight": 500,
  "goodsDetails": "[{\"name\":\"文件\",\"count\":1}]",
  "businessType": 1,
  "tipFee": 5.0,
  "orderRemark": "请尽快送达"
}

响应示例:

json
{
  "code": 0,
  "message": "success",
  "data": {
    "orderId": "202608310001",
    "thirdOrderId": "ORD_20260831_001",
    "status": 2,
    "statusDesc": "已支付待接单",
    "deliveryFee": 15.0,
    "deliveryDistance": 8.5,
    "predictDeliveryTime": 1693503600
  }
}

业务规则:

  • thirdOrderId 为幂等键,重复提交返回相同订单
  • 需先调用询价接口获取配送费
  • 系统会自动从门店获取取件地址

3.5 地址下单

POST /api/platformA/order/createAddressOrder

基于发件地址创建配送订单,发件和收件地址都从请求获取,包含定价计算。

请求参数(JSON Body):

参数类型必填说明
thirdOrderIdString三方订单号(幂等键)
senderLngString发件人经度
senderLatString发件人纬度
senderAddressString发件人地址
senderNameString发件人姓名
senderPhoneString发件人电话
recipientNameString收件人姓名
recipientPhoneString收件人电话
recipientAddressString收件人地址
recipientLngString收件人经度
recipientLatString收件人纬度
totalWeightInteger物品重量(千克)
goodsDetailsString物品明细(JSON格式)
businessTypeInteger业务类型,默认1
prebookInteger是否即时单,默认0
expectedPickupTimeLong预计取件时间(Unix时间戳秒)
tipFeeDouble小费(元)
orderRemarkString订单备注
callbackUrlString订单状态回调地址,传入后会自动更新平台配置

响应参数: 同门店下单

业务规则:

  • 与门店下单类似,但发件地址从请求获取
  • 适用于非门店场景的点对点配送

3.6 取消订单

POST /api/platformA/order/cancel

取消指定订单。

请求参数(JSON Body):

参数类型必填说明
thirdOrderIdString三方订单号
cancelReasonString取消原因

响应参数:

参数类型说明
orderIdString内部订单ID
thirdOrderIdString三方订单号
statusInteger订单状态(1=已取消)
statusDescString状态描述

业务规则:

  • 已取消的订单重复调用返回成功(幂等)
  • 只有 status ≤ 4 的订单可取消
  • 已支付的订单会自动退款

3.7 查询取消费用

POST /api/platformA/order/queryCancelFee

取消订单前预览取消费用,用于向用户展示取消影响。

请求参数(JSON Body):

参数类型必填说明
thirdOrderIdString三方订单号

响应参数:

参数类型说明
thirdOrderIdString三方订单号
cancelFeeDouble取消费用(元)
refundAmountDouble预计退款金额(元)
reasonString费用说明

业务规则:

  • 取消费用根据订单状态和时间计算
  • 与实际取消接口使用相同的罚金计算逻辑
  • 仅用于预览,不会实际取消订单

3.8 加小费

POST /api/platformA/order/addTip

为已有订单追加小费,小费金额累计叠加。

请求参数(JSON Body):

参数类型必填说明
thirdOrderIdString三方订单号
tipFeeDouble小费金额(元),必须大于0

响应参数:

参数类型说明
orderIdString内部订单ID
thirdOrderIdString三方订单号
tipFeeDouble本次小费金额(元)
totalPriceDouble订单总金额(元,含小费)

业务规则:

  • 小费为累加模式,多次调用会叠加
  • 支付方式:预充值余额优先,不足部分走信用扣款
  • 使用行级锁保证并发安全
  • 骑手佣金会同步更新

3.9 查询订单

GET /api/platformA/order/query?thirdOrderId={thirdOrderId}

查询单个订单详情。

请求参数(Query):

参数类型必填说明
thirdOrderIdString三方订单号

响应参数:

参数类型说明
orderIdString内部订单ID
thirdOrderIdString三方订单号
statusInteger订单状态
statusDescString状态描述
riderNameString骑手姓名
riderPhoneString骑手电话
createTimeString创建时间
grabTimeString接单时间
pickupTimeString取件时间
deliverTimeString送达时间
totalPriceBigDecimal订单总金额
senderNameString发件人姓名
senderPhoneString发件人电话
senderAddressString发件人地址
receiverNameString收件人姓名
receiverPhoneString收件人电话
receiverAddressString收件人地址

3.10 查询订单列表

GET /api/platformA/order/list?status={status}&page={page}&pageSize={pageSize}

分页查询订单列表。

请求参数(Query):

参数类型必填说明
statusInteger订单状态筛选
pageInteger页码,默认1
pageSizeInteger每页条数,默认20

响应参数:

参数类型说明
listArray订单列表
totalLong总条数
pageInteger当前页码
pageSizeInteger每页条数

4. 门店接口

4.1 创建门店

POST /api/platformA/store/create

创建新门店。

请求参数(JSON Body):

参数类型必填说明
thirdStoreIdString三方门店ID
storeNameString门店名称
storePhoneString门店电话
storeAddressString门店地址
storeLngString门店经度
storeLatString门店纬度
contactNameString联系人姓名
contactPhoneString联系人电话

响应参数:

参数类型说明
storeIdLong内部门店ID
thirdStoreIdString三方门店ID(即内部门店ID)
storeNameString门店名称

业务规则:

  • thirdStoreId 由调用方指定,作为门店的唯一标识
  • 重复创建相同 thirdStoreId 的门店返回已有门店信息(幂等)
  • 创建成功后,后续下单接口可通过该 thirdStoreId 使用门店取件地址

4.2 查询门店

GET /api/platformA/store/query?thirdStoreId={thirdStoreId}

查询门店详情。

响应参数:

参数类型说明
storeIdLong内部门店ID
thirdStoreIdString三方门店ID
storeNameString门店名称
storePhoneString门店电话
storeAddressString门店地址
statusInteger门店状态(0=待审核,1=正常,2=审核失败)
createTimeString创建时间

4.3 修改门店

POST /api/platformA/store/modify

修改门店信息。

请求参数(JSON Body):

参数类型必填说明
thirdStoreIdString三方门店ID
storeNameString门店名称
storePhoneString门店电话
storeAddressString门店地址
statusInteger门店状态

响应参数:

参数类型说明
storeIdLong内部门店ID
thirdStoreIdString三方门店ID
storeNameString门店名称
updateTimeString更新时间

5. 骑手接口

5.1 查询骑手

GET /api/platformA/rider/query?thirdOrderId={thirdOrderId}

根据订单号查询该订单分配的骑手信息。

请求参数(Query):

参数类型必填说明
thirdOrderIdString三方订单号

响应参数:

参数类型说明
riderIdLong骑手ID
nameString骑手姓名
phoneString骑手电话
avatarUrlString头像URL
orderStatusInteger接单状态(1=接单中,其他=休息中)
orderStatusDescString状态描述
totalOrdersInteger总订单数
cityString所在城市
lngDouble骑手经度(实时位置)
latDouble骑手纬度(实时位置)

6. 财务接口

6.1 充值

POST /api/platformA/finance/recharge

为三方平台商户账户充值,系统生成微信Native支付二维码。

请求参数(JSON Body):

参数类型必填说明
amountBigDecimal充值金额(元),必须大于0
thirdTradeNoString三方交易流水号
remarkString备注

响应参数:

参数类型说明
rechargeNoString充值单号(用于查询状态)
qrCodeUrlString微信Native支付二维码图片URL(OSS地址,30分钟有效)

请求示例:

json
{
  "amount": 100.00,
  "thirdTradeNo": "TRADE_20260908_001",
  "remark": "商户充值"
}

响应示例:

json
{
  "code": 0,
  "message": "success",
  "data": {
    "rechargeNo": "RCH1788831662639256",
    "qrCodeUrl": "https://your-bucket.oss-cn-xxx.aliyuncs.com/qrcode/recharge/RCH1788831662639256.png?Expires=..."
  }
}

业务规则:

  • 生成微信Native支付二维码,用户微信扫码支付
  • 二维码URL有效期30分钟,过期需重新发起充值
  • 支付成功后系统自动回调加钱到商户钱包
  • 无需额外配置回调地址,系统自动处理

6.2 查询余额

GET /api/platformA/finance/balance

查询三方平台商户账户余额。

响应参数:

参数类型说明
balanceBigDecimal账户余额(元)
freezeAmountBigDecimal冻结金额(元)
availableAmountBigDecimal可用余额(元)

7. 订单状态码

状态码说明
1已取消
2已支付待接单
3已接单待到店
4已到店待取件
5已取件配送中
6已送达
7已完成

8. 回调机制

订单状态变更时,系统会主动回调三方平台。

回调配置

platform_config 表中配置 callbackUrl 字段。

回调请求

Content-Type: application/json

请求头:

Header说明
X-Callback-Id回调ID,用于幂等去重
X-Timestamp时间戳(秒)
X-SignHMAC-SHA256 签名(签名规则同鉴权,对 body 做 SHA-256 后参与签名)

请求体:

json
{
  "callbackId": "回调ID",
  "orderNo": "内部订单号",
  "orderId": "内部订单ID",
  "thirdOrderNo": "三方订单号",
  "status": 6,
  "statusDesc": "已送达",
  "riderName": "骑手姓名",
  "riderPhone": "骑手电话",
  "callbackTime": "2026-08-31 15:30:00"
}

回调响应

三方平台需返回 {"code": 0} 表示接收成功。

重试机制

  • 最多重试 5 次
  • 间隔递增:1分钟, 5分钟, 15分钟, 30分钟, 60分钟
  • 首次回调后超过 1 小时停止重试
  • 超过重试次数后记录日志