接入指南
完整的 6 步接入流程。按照以下步骤,从获取凭证到创建无人机配送订单。
第一步:获取凭证
与 SP 签约后,您将获得以下凭证。
| 凭证 | 说明 |
|---|---|
clientCode | 接入方唯一编码(如 shansong) |
API Key | 接口调用凭证,通过 X-API-Key 请求头传递 |
Webhook Secret | 用于验证 Webhook 推送消息的 HMAC-SHA256 签名密钥 |
获取凭证后,调用以下接口验证连通性:
验证凭证bash
curl -X GET https://api.sp.airgoe.com/api/v2/client/profile \-H "X-API-Key: your_api_key_here"
响应示例json
{"success": true,"data": {"clientCode": "shansong","clientName": "闪送","status": "ACTIVE","rateLimit": {"check": 60,"order": 30,"query": 120}}}
第二步:注册回调
注册 Webhook 回调地址,后续 SP 会将订单状态变更推送到该地址。
注册 Webhookbash
curl -X POST https://api.sp.airgoe.com/api/v2/webhooks \-H "X-API-Key: your_api_key_here" \-H "Content-Type: application/json" \-d '{"callbackUrl": "https://api.example.com/webhooks/sp","events": ["ORDER_CONFIRMED","ORDER_PICKING","ORDER_AIR_TRANSIT","ORDER_DELIVERING","ORDER_COMPLETED","ORDER_CANCELLED","ORDER_EXCEPTION"],"secret": "whsec_your_webhook_secret_key"}'
响应示例json
{"success": true,"data": {"webhookId": "WH-20260310-001","callbackUrl": "https://api.example.com/webhooks/sp","events": ["ORDER_CONFIRMED", "ORDER_PICKING", "..."],"status": "ACTIVE","createdAt": "2026-03-10T10:00:00.000Z"}}
Webhook 验证
注册成功后,SP 会发送一条验证请求确认回调地址可达。请确保您的接口返回 HTTP 200。
第三步:查询履约能力
创建订单前,先查询指定起终点是否支持无人机配送。
履约能力查询请求bash
curl -X POST https://api.sp.airgoe.com/api/v2/fulfillment/check \-H "X-API-Key: your_api_key_here" \-H "Content-Type: application/json" \-d '{"sender": {"name": "张三","phone": "13800001111","address": "杭州市西湖区XX路1号","lat": 30.2741,"lng": 120.1551},"receiver": {"name": "李四","phone": "13800002222","address": "杭州市余杭区YY路2号","lat": 30.2933,"lng": 120.0126},"cargo": {"name": "文件","weight": 0.5,"length": 30,"width": 20,"height": 5,"category": "DOCUMENT"}}'
成功响应 (canFulfill: true)json
{"success": true,"data": {"canFulfill": true,"quotationId": "QT20260310100001","validUntil": "2026-03-10T10:35:00.000Z","pricing": {"totalAmount": 45.0,"currency": "CNY","breakdown": [{ "type": "BASE_FEE", "amount": 20.0, "description": "基础费(3km 5kg 以内)" },{ "type": "SEGMENT_A_FEE", "amount": 8.0, "description": "A段骑手费" },{ "type": "FLIGHT_FEE", "amount": 25.0, "description": "B段空中运输费" },{ "type": "SEGMENT_C_FEE", "amount": 8.0, "description": "C段骑手费" }]},"eta": {"totalMinutes": 35,"segments": { "A": 12, "B": 15, "C": 8 }},"selectedRoute": {"originBas": { "id": "bas-001", "name": "西湖站" },"destBas": { "id": "bas-003", "name": "余杭站" },"distanceKm": 8.5}}}
报价单有效期
quotationId 有效期为 5 分钟。过期后需重新查询履约能力才能创建订单。您还可以查询附近的 BAS 站点,引导用户选择更优的取件/配送位置:
附近站点查询bash
curl -X GET "https://api.sp.airgoe.com/api/v2/stations/nearby?lat=30.2741&lng=120.1551&radiusKm=5" \-H "X-API-Key: your_api_key_here"
第四步:创建订单
拿到有效的 quotationId 后创建订单。订单自动确认并开始编排。
创建订单请求bash
curl -X POST https://api.sp.airgoe.com/api/v2/orders \-H "X-API-Key: your_api_key_here" \-H "Content-Type: application/json" \-H "X-Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000" \-d '{"quotationId": "QT20260310100001","merchantOrderNo": "YOUR-ORDER-001","notes": "请轻拿轻放"}'
响应示例 (HTTP 201)json
{"success": true,"data": {"orderId": "SP20260310100001","orderNo": "SP20260310100001","state": "CONFIRMED","verificationCodes": {"pickupCode": "P-582716","itemCode": "I-394821","deliveryCode": "D-719463"},"estimatedDelivery": "2026-03-10T11:15:00.000Z","pricing": {"totalAmount": 45.0,"currency": "CNY"},"createdAt": "2026-03-10T10:30:00.000Z"}}
验证码说明
每个订单生成三组验证码:
- P 码(取件码):交给寄件人,A段骑手取件时验证
- I 码(物品码):贴在包裹上,全程跟随
- D 码(配送码):交给收件人,C段骑手配送时验证
第五步:追踪订单
两种方式追踪订单进度:主动查询和被动接收 Webhook 推送。
方式一:主动查询
实时追踪bash
curl -X GET https://api.sp.airgoe.com/api/v2/orders/SP20260310100001/tracking \-H "X-API-Key: your_api_key_here"
追踪响应json
{"success": true,"data": {"orderId": "SP20260310100001","currentSegment": "B","currentLocation": {"lat": 30.28,"lng": 120.08,"altitude": 120,"updatedAt": "2026-03-10T10:52:00.000Z"},"eta": {"remainingMinutes": 13,"estimatedArrival": "2026-03-10T11:05:00.000Z"},"timeline": [{ "event": "ORDER_CREATED", "timestamp": "2026-03-10T10:30:00.000Z", "description": "订单已创建" },{ "event": "RIDER_ACCEPTED", "timestamp": "2026-03-10T10:32:00.000Z", "description": "A段骑手已接单" },{ "event": "BAS_RECEIVED", "timestamp": "2026-03-10T10:42:00.000Z", "description": "起点站收到货物" },{ "event": "FLIGHT_DEPARTED", "timestamp": "2026-03-10T10:45:00.000Z", "description": "无人机已起飞" }]}}
方式二:Webhook 推送
SP 在订单状态变更时,向已注册的回调地址推送通知:
Webhook 推送示例json
{"eventType": "ORDER_AIR_TRANSIT","orderId": "SP20260310100001","orderNo": "SP20260310100001","data": {"aggregatedState": "AIR_TRANSIT","previousState": "PICKING","flightId": "FL-20260310-001","droneId": "D-001"},"timestamp": "2026-03-10T10:45:00.000Z","signature": "sha256=abcdef1234567890..."}
最佳实践
建议以 Webhook 作为主要通知渠道,主动查询作为补充(例如在地图上展示无人机实时位置)。
第六步:完成或取消
订单在收件人验证后自动完成。空中运输开始前可取消订单。
当C段骑手送达包裹且收件人通过 D 码验证后,订单状态变为 COMPLETED。
取消订单
取消订单请求bash
curl -X POST https://api.sp.airgoe.com/api/v2/orders/SP20260310100001/cancel \-H "X-API-Key: your_api_key_here" \-H "Content-Type: application/json" \-d '{"reason": "USER_REQUEST","cancellationNote": "用户不再需要配送"}'
取消响应json
{"success": true,"data": {"orderId": "SP20260310100001","state": "CANCELLED","cancellation": {"refundAmount": 45.0,"refundPercent": 100,"cancelledAt": "2026-03-10T10:35:00.000Z","reason": "USER_REQUEST"}}}
取消规则
- CONFIRMED / PICKING:可取消,全额退款
- AIR_TRANSIT / DELIVERING:不可取消
- EXCEPTION:视情况而定,需人工介入