거래명세서 조회 (PDF, 패킹 동봉용)
POST /vendor-api/settlements/transaction-statement
B2C 패킹 명세서 전용입니다. 구매자(병원)에게 배송 시 동봉되는 명세서로, 매 PUT confirm 회차마다 1장씩 패킹용도로 출력하는 흐름입니다. 정산 권위 문서가 아닙니다.
POST /vendor-api/settlements/transaction-statement
Content-Type: application/json요청 파라미터
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
ord_no | string | 택1 | 주문번호 — 현재 preparing 상태인 모든 라인의 패킹 명세서 |
ord_prd_no | string | 택1 | 주문품목번호 (형식: {주문번호}_[{인덱스}]) — 단일 라인 명세서 |
ord_no와ord_prd_no중 하나는 반드시 입력해야 합니다.
조회 키별 동작
| 조회 키 | 반환 범위 | 사용 시나리오 |
|---|---|---|
ord_no (주문번호) | 해당 주문에서 현재 preparing 상태인 모든 라인 | 매 PUT 회차마다 패킹 명세서 출력 |
ord_prd_no (주문품목번호) | 해당 단일 라인이 preparing이면 1건 응답 | 특정 라인만 명세서 재출력 |
요청 예시
주문번호로 조회
curl -X POST "https://brightmall-backend.certi.life/vendor-api/settlements/transaction-statement" \
-H "Content-Type: application/json" \
-H "X-Vendor-Api-Key: bm_xOpGAqgHbJQBXxBBbUIZ_bAGZk4wK2FdLgF50277PU8" \
-H "X-Vendor-Id: 01KC51ST1WSTAET481SHPH3PSY" \
-d '{"ord_no": "202601220157_000020196"}' \
--output packing_statement.pdf단일 라인 명세서 조회
curl -X POST "https://brightmall-backend.certi.life/vendor-api/settlements/transaction-statement" \
-H "Content-Type: application/json" \
-H "X-Vendor-Api-Key: bm_xOpGAqgHbJQBXxBBbUIZ_bAGZk4wK2FdLgF50277PU8" \
-H "X-Vendor-Id: 01KC51ST1WSTAET481SHPH3PSY" \
-d '{"ord_prd_no": "202601220157_000020196_[1]"}' \
--output packing_statement.pdf응답
성공 시
PDF 바이너리 파일이 직접 반환됩니다.
| 응답 헤더 | 값 | 설명 |
|---|---|---|
Content-Type | application/pdf | PDF 파일 |
Content-Disposition | attachment; filename*=UTF-8''거래명세서_{주문번호}.pdf | 파일명 |
Content-Length | (바이트 수) | 파일 크기 |
X-Request-Id | req_m5k2a1_x7f3p9 | 요청 추적 ID |
X-Statement-Mode | preview | none | preview: 정상 응답 / none: 응답 라인 없음 (404) |
실패 시
JSON 에러 응답이 반환됩니다.
{
"success": false,
"request_id": "req_mkp3pdf_abc123",
"error": {
"code": "SETTLEMENT_NOT_FOUND",
"message": "No packing statement available (no preparing line items)",
"details": null
}
}동작 (B2C 패킹 흐름)
본 endpoint는 현재 preparing 상태인 라인만 응답합니다. 매 PUT confirm 회차 = 1장의 패킹 명세서 = 1회 배송 동봉.
- 응답
unit_price는 판매가(sale_price, 플랫폼→병원 공급가)입니다. - 입점사→플랫폼 공급가는 응답에 노출되지 않습니다 (영업 비밀 보호).
- 출하된 라인(
shipped/delivered)은 이미 이전 회차 명세서에서 패킹되어 나갔으므로 다음 명세서에 포함되지 않습니다. - 자동 제외 라인:
shipped,delivered,cancel_requested,null(PUT omit으로 reset),stock_available = false
응답 시나리오:
- 현재 preparing 라인 1건 이상 → PDF 반환 (
X-Statement-Mode: preview) - preparing 라인 0건 (전부 출고 또는 omit) → 404
SETTLEMENT_NOT_FOUND
주의사항
- 응답은 JSON이 아닌 바이너리 PDF 파일입니다. HTTP 클라이언트에서 파일 저장 처리가 필요합니다.
Content-Disposition헤더의 파일명은 UTF-8 인코딩되어 있습니다.- 정산 권위 문서(B2B 세금계산서/정산)는 별도 정산 도메인 endpoint를 사용하세요.
권장 흐름 (입점사 운영)
PUT confirm [라인 N개] → preparing
↓
GET packing statement → PDF 발급 (preparing 라인 N개 동봉)
↓
POST shipment → 운송장 등록 → shipped
↓
PUT confirm [다른 라인] → 다음 회차 시작
↓
GET packing statement → 다음 회차 PDF 발급 (이전 출고 라인은 자동 제외)매 PUT 회차마다 1장의 명세서를 출력해 패킹에 동봉하시면 됩니다.