주문에 딸린 발주(배송) 단위로 운송장·택배사·배송추적 상태와 추적 이력을 조회해요.
발송처리로 운송장을 넣으면 그 뒤 택배사가 알려주는 단계는 Bootpay가 자동으로 모아요. 서비스 서버는 택배사를 직접 조회할 필요 없이 이 API만 읽으면 돼요.
Basic 인증과 user:order_detail scope가 필요해요. 구매자 화면에서는 Bootpay-User-JWT 또는 secretKey 인증의 user_id를 지정하면 그 회원의 주문만 조회해요. 필드와 오류 전체는 주문 API 원문를 확인해요.
API 엔드포인트
주문 상세로도 같은 값을 볼 수 있어요
주문 상세 응답의 order_purchases[]가 같은 데이터예요. 배송만 확인할 때 결제·상품·고객 정보까지 받지 않도록 이 면만 떼어 둔 거예요.
요청 파라미터
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
order_number |
String | 필수 | 주문번호 (URL 경로) |
코드 예제
curl -X GET "https://api.bootapi.com/v1/orders/25071182085082524116/purchases" \
-H "Authorization: Basic {base64(client_key:secret_key)}"bashconst { BootpayCommerce } = require('@bootpay/backend-js')
const commerce = new BootpayCommerce({
client_key: 'your-commerce-client-key',
secret_key: 'your-commerce-secret-key',
mode: 'production'
})
const response = await commerce.get('orders/25071182085082524116/purchases')
console.log(response)javascriptNode.js 배포 버전의 전송 메서드
@bootpay/backend-js@2.13.1에는 order.purchases가 없어요. 위처럼 SDK 공통 get에 주문번호가 포함된 상대 경로를 전달해요. 다른 언어는 해당 버전의 메서드를 확인하거나 위 HTTP 계약을 사용해요.
응답
성공 응답
[
{
"order_purchase_id": "6870824fb0eacea5cd974f12",
"order_purchase_number": "P25071182085082524116",
"status": 4,
"delivery_company_code": "CJGLS",
"tracking_number": "620148310301",
"d_ts": 3,
"sent_at": "2025-07-12T09:10:00Z",
"tracking_histories": [
{
"trakler_status": "in_transit",
"delivery_tracking_status": 3,
"location": "옥천HUB",
"description": "간선상차 · CJ대한통운",
"occurred_at": "2025-07-12T21:40:00Z",
"source": "webhook"
}
]
}
]json필드 설명은 주문 상세와 같아요.
배송이 없는 주문이면 빈 배열이에요
디지털 상품처럼 이행 단계가 없는 주문은 발주가 만들어지지 않아요.
추적 단계 읽는 법
d_ts는 택배사가 알려준 단계예요. 값은 커머스 Enum에서 확인해요.
| 상황 | 보이는 값 |
|---|---|
| 운송장 등록 전 | d_ts: 0, tracking_histories: [] |
| 등록 직후 | d_ts: 1, 이력은 아직 비어 있어요 |
| 집화·이동 중 | d_ts: 3, 이력이 최신 순으로 쌓여요 |
| 배송 완료 | d_ts: 4, 발주 status도 5로 함께 넘어가요 |
폴링 주기는 넉넉하게 잡아요
택배사 단계는 하루에 몇 번 바뀌는 정보예요. 분 단위로 조회할 이유가 없어요.
에러 코드
공통 에러
인증·권한 관련 에러는 에러 코드표를 참고해요.
| 코드 | 메시지 | 대처 방법 |
|---|---|---|
ORDER_NOT_FOUND |
주문내역을 찾지 못했어요. | order_number를 넣었는지 확인해요 (order_id 아님) |
ORDER_DENIED |
주문 정보를 조회할 권한이 없어요. | 다른 프로젝트의 주문번호는 아닌지 확인해요 |