IBE(Internet Booking Engine) 기반 Amadeus 웹서비스 통합 전체 플로우 가이드입니다.
MasterPricer 검색부터 발권, 정산, 취소까지의 전 과정을 19개 API 문서를 기반으로 정리합니다.
전체 플로우 개요
[검색 단계]
Step 1. Fare_MasterPricerCalendar ─ 날짜 유연 검색 (최저가 달력)
Step 2. Fare_MasterPricerTravelBoardSearch ─ 확정 날짜 항공편/운임 검색
[가격 조회 및 규정 확인]
Step 3. Fare_InformativeBestPricingWithoutPNR ─ 최적 운임 자동 계산
Step 4. Fare_InformativePricingWithoutPNR ─ 운임 확정 + Offer ID 발급
Step 5. Fare_CheckRules ─ 운임 규정 전문 조회
Step 6. MiniRule_GetFromRec ─ 환불/변경 규정 요약
[예약 생성]
Step 7. Air_SellFromRecommendation ─ 좌석 확보
Step 8. PNR_AddMultiElements ─ PNR 생성 (승객 정보 + 부대 요소)
Step 9. FOP_CreateFormOfPayment ─ 결제 수단 등록
[발권]
Step 10. Fare_PricePNRWithBookingClass ─ TST 생성 (운임 확정)
Step 11. PNR_Retrieve (Issuance) ─ 발권 전 최종 확인
Step 12. PNR_Retrieve (Post Issuance) ─ 발권 후 항공권 번호 확인
[후속 처리]
Step 13. SalesReports (AlternativeCurrency) ─ 외화 기준 판매 보고서
Step 14. SalesReports (DFC) ─ 현지 통화 기준 판매 보고서
Step 15. Cancellation Flow ─ 취소 플로우 (3단계)
Step 16. Fare_InformativePricing (FBA) ─ 운임 기저 지정 가격 조회
[고급 기능]
Step 17. MasterPricer + FBA Detail ─ 수하물 상세 정보 포함 검색
Step 18. MasterPricer + Carbon (ICAO) ─ ICAO 탄소 배출량 포함 검색
Step 19. MasterPricer + Carbon (TVYS) ─ Travalyst 탄소 배출량 포함 검색
IATA 830d. PNR_AddMultiElements (CTCM/CTCE/CTCR) ─ 승객 연락처 의무 수집
Step 1. Fare_MasterPricerCalendar
특정 날짜를 중심으로 전후 날짜 범위의 최저가를 달력 형태로 탐색하는 API.
사용자가 “이 날짜 즈음에 가장 저렴한 날은 언제인가?”를 확인할 때 사용한다.
주요 Query 파라미터
| 파라미터 | 값 (예시) | 설명 |
|---|
numberOfUnits (PX) | 3 | 총 승객 수 |
ptc | ADT / CNN / INF | 승객 유형 |
priceType | ET, RP, RU, TAC, CUC | 운임 옵션 (ET=전자항공권) |
locationId | BOG → FRA | 출발/도착 공항 코드 |
date | 050424 | 기준 출발일 (DDMMYY) |
rangeQualifier | C | C=Center (기준일 중심 범위) |
dayInterval | 3 | 기준일 전후 ±3일 탐색 |
주요 Reply 필드
| 필드 | 설명 |
|---|
companyIdText | 항공사 참조 테이블 (번호↔항공사명 매핑) |
flightIndex / groupOfFlights | 항공편 그룹 (편명, 시각, 기종, EFT) |
recommendation / recPriceInfo | 추천별 총 운임·기본 운임 |
paxFareProduct / fareBasis | 운임 기준 코드 |
cabinProduct / rbd | 예약 클래스 |
Calendar 특이사항
priceType=ET는 Calendar에만 존재 (TravelBoard에는 없음)
RC(결과 수 제한) 없음 — 날짜 범위로만 결과 제어
- 잔여 좌석 수(
avlStatus) 미포함 — 탐색 목적이므로 가용성 정보 없음
- 세금 상세 분류(YQ/YR) 미포함
다음 단계 연결
사용자가 날짜를 선택하면 해당 날짜로 Step 2 TravelBoardSearch 호출.
Step 2. Fare_MasterPricerTravelBoardSearch
확정된 날짜에 대한 전체 항공편 및 운임 조합을 조회하는 핵심 검색 API.
IBE 항공편 검색 결과 화면의 데이터 소스.
주요 Query 파라미터
| 파라미터 | 값 (예시) | 설명 |
|---|
numberOfUnits (RC) | 250 | 최대 반환 추천 수 |
numberOfUnits (PX) | 3 | 총 승객 수 |
priceType | RP, RU, TAC, CUC | 운임 옵션 (ET 없음) |
date | 030424 | 단일 날짜 지정 (범위 없음) |
Calendar 대비 추가 Reply 필드
| 필드 | 설명 |
|---|
cabinProduct / avlStatus | 잔여 좌석 수 (9=9석 이상) |
monetaryDetail / amountType=YQ,YR,Q | 서차지 유형별 분류 |
passengerTaxDetails | 승객별 세금 항목 상세 |
fareCalculationCodeDetails | 운임 계산 내역 |
conversionRate (NUC) | NUC 환율 정보 |
refQualifier=B | Bound(왕복 방향) 참조 |
productDetailQualifier=LCA | 저비용항공사 플래그 |
productDetailQualifier=AIP | NDC 부가 정보 제공 항공사 |
Step 1 vs Step 2 비교
| 항목 | Calendar (Step 1) | TravelBoard (Step 2) |
|---|
| 날짜 지정 | 기준일 + 범위 | 단일 날짜 |
| 결과 수 제한 | 없음 | RC 파라미터 (최대 250) |
| 잔여 좌석 | 없음 | 있음 |
| 세금 상세 | 없음 | YQ/YR/Q 포함 |
| NUC 환율 | 없음 | 있음 |
| 응답 규모 | ~8K줄 | ~50K줄 |
다음 단계 연결
recommendation의 itemNumber, fareBasis, rbd 정보로 Step 3~4 운임 조회 또는 Step 7 좌석 예약 진행.
PNR 없이 여정과 승객 정보만으로 최적 운임을 자동 계산(Best Pricer).
시스템이 가장 유리한 운임 조합을 자동 선택한다.
주요 Query 파라미터
| 파라미터 | 설명 |
|---|
passengersGroup | 승객 유형별 그룹 (ADT/CNN/INF) |
segmentGroup | 항공편 세그먼트 (편명, 클래스, 날짜) |
pricingOptionKey=VC | Validating Carrier 지정 |
pricingOptionKey=RP | Published Fare |
pricingOptionKey=FCO | 통화 지정 (USD) |
주요 Reply 필드
| 필드 | 값 (예시) | 설명 |
|---|
fareAmount (B) | 409.00 USD | 기본 운임 (Base Fare) |
fareAmount (712) | 995.30 USD | 세금 포함 총액 |
fareBasis / rateClass | RL50TALB | Fare Basis Code |
fareFamilyname | LIGHT | Fare Family 이름 |
freeAllowance | 0 | 무료 수하물 허용량 |
additionalFareDetails | CH25, IN90 | 소아 25%할인, 유아 90%할인 |
특이사항
offerReferences 없음 — 탐색용이므로 Offer ID 미발급
- “PRICED WITH VALIDATING CARRIER AF - REPRICE IF DIFFERENT VC” 경고 주의
PNR 없이 특정 운임을 확정 조회. uniqueOfferReference를 반환하여 이후 규정 조회 및 발권에 활용.
BestPricing(Step 3) 대비 차이점
| 항목 | BestPricing (Step 3) | InformativePricing (Step 4) |
|---|
| 운임 선택 | 시스템 자동 | 사용자/시스템 지정 |
RLO 옵션 | 없음 | 있음 (최저 운임 고정) |
offerReferences | 없음 | 있음 (핵심 키) |
| 목적 | 탐색 | 확정 |
핵심 Reply 필드
| 필드 | 값 (예시) | 설명 |
|---|
uniqueOfferReference | SP2P-917547...-OI1-AI1 | 승객별 고유 Offer ID — CheckRules/발권에 사용 |
Step 5. Fare_CheckRules
확정된 운임의 상세 운임 규정(Fare Rules)을 전문 텍스트로 조회.
2단계 호출 구조: 1차로 Category 목록 조회 → 2차로 특정 Category 전문 조회.
1차 Query → Category 목록 조회
| 파라미터 | 값 | 설명 |
|---|
messageFunction | 712 | CheckRules 기능 코드 |
itemNumber (FC) | 1 | Fare Component 번호 |
2차 Query → 규정 전문 조회
| 파라미터 | 값 | 설명 |
|---|
ruleSectionId | PE, MX, SR, AP, FL | 조회할 Rule Category 코드 |
주요 Rule Category
| 코드 | ATPCO Cat | 의미 |
|---|
AP | Cat 5 | Advance Purchase — 사전 구매 조건 |
MN | Cat 6 | Minimum Stay — 최소 체류 기간 |
MX | Cat 7 | Maximum Stay — 최대 체류 기간 |
SR | Cat 15 | Sales Restrictions — 판매 제한 |
PE | Cat 16 | Penalties — 위약금 |
FL | Cat 23 | Flight Application — 편명 적용 조건 |
Step 6. MiniRule_GetFromRec
핵심 규정을 기계가 해석 가능한 구조화 데이터로 조회.
CheckRules(Step 5)가 전문 텍스트를 반환하는 반면, MiniRule은 환불/변경 가능 여부, 수수료 금액을 정형화하여 반환.
주요 Query
| 파라미터 | 값 | 설명 |
|---|
referenceType | FRN | Fare Record Number |
uniqueReference | ALL | 모든 Pricing Record 대상 |
주요 Reply (Category별)
| Category | 의미 | 예시 내용 |
|---|
| 6 | 최소 체류 | FRA 기준, 2024-04-10 이후 출발 가능 |
| 7 | 최대 체류 | 2025-04-03까지 출발 필요 |
| 31 | 자발적 변경 | 수수료 200 USD (출발 전후 동일) |
| 33 | 자발적 환불 | 환불 불가 (FFT=1) |
주요 수수료 Qualifier
| Prefix | 의미 |
|---|
BD | Before Departure (출발 전) |
AD | After Departure (출발 후) |
BN/AN | Before/After No-show |
접미 M | Minimum fee |
접미 X | Maximum fee |
접미 A | Permitted (허용 여부) |
CheckRules vs MiniRule 비교
| 항목 | CheckRules (Step 5) | MiniRule (Step 6) |
|---|
| 응답 형태 | 자유 텍스트 | 구조화 데이터 |
| 호출 횟수 | 2회 (목록→전문) | 1회 |
| 활용 | 규정 전문 표시 (법적 고지) | UI에서 환불/변경 조건 표시 |
| 수수료 금액 | 텍스트로 포함 | 구조화 데이터로 명시 |
Step 7. Air_SellFromRecommendation
선택한 항공편에 대해 실제 좌석 예약(Sell)을 요청하는 API.
GDS 세션의 Working PNR에 항공 세그먼트를 적재한다. (아직 PNR 미저장)
주요 Query 파라미터
| 파라미터 | 값 (예시) | 설명 |
|---|
messageFunction | 183 | 예약 기능 코드 |
additionalMessageFunction | M1 | MasterPricer 추천 기반 Sell |
origin / destination | BOG / FRA | 여정 출발지/도착지 |
flightNumber | 435 | 편명 |
bookingClass | R | 예약 클래스 |
quantity | 3 | 요청 좌석 수 |
statusCode | NN | Need (예약 요청) |
주요 Reply 필드
| 필드 | 값 (예시) | 설명 |
|---|
statusCode | OK | 좌석 확보 성공 |
quantity | 3 | 확보된 좌석 수 |
equipment | 359 | 기종 (A350-900) |
specialSegment | P | Married Segment 표시 |
주의사항
- Reply에서
statusCode=OK가 아닌 경우 (UN=Unable) 해당 편 예약 불가 → 예외 처리 필수
specialSegment=P (Married Segment)는 개별 변경 불가, 묶음 단위 처리 필요
Step 8. PNR_AddMultiElements
Working PNR에 승객 정보, 연락처, SSR 등 PNR 구성에 필요한 모든 요소를 추가하고 PNR을 저장(Commit).
이 시점에서 비로소 PNR 레코드가 생성된다.
주요 Query 파라미터
| 요소 | 필드 | 설명 |
|---|
| PNR 저장 | optionCode=0 | End Transaction & Retrieve |
| 승객 이름 | segmentName=NM | ADT/CHD/INF 유형별 |
| 연락처 | AP (type 7/P02) | 전화번호, 이메일 |
| SSR CTCE | test//mail.com | 이메일 (@ → // 변환) |
| SSR CTCM | 549876543210/AR | 휴대전화 (국가코드/ISO) |
| 수수료 | FM | Commission 퍼센트 |
| 발권기한 | TK (indicator=OK) | 즉시 발권 가능 |
| 예약자 | RF (type P22) | 에이전트/시스템 식별 |
유아(INF) 처리 주의
- 성인 승객에
infantIndicator=3 설정
- 유아를 같은
travellerInfo 그룹 내 두 번째 passengerData로 전송
- 생년월일 필수 입력
INFT/CHLD SSR은 모든 세그먼트에 자동 생성됨
Reply 핵심
qualifier=PT: 확정된 승객 Tattoo 번호 (이후 API에서 참조 키)
qualifier=ST: 확정된 세그먼트 Tattoo 번호
status=HK: 모든 세그먼트 Holds Confirmed
저장된 PNR에 결제 수단(Form of Payment)을 등록.
발권 전 반드시 FOP가 PNR에 연결되어야 한다.
주요 Query 파라미터
| 파라미터 | 값 | 설명 |
|---|
transactionDetails / code | FP | Form of Payment 등록 |
fopCode | CCCA | CC=Credit Card + CA=Mastercard |
vendorCode | CA | 카드사 (CA=MC, VI=Visa, AX=Amex) |
cardNumber | 5499830000000015 | 카드 번호 (전체) |
securityId | 123 | CVV |
expiryDate | 0329 | 유효기간 (MMYY) |
주요 Reply 필드
| 필드 | 값 | 설명 |
|---|
fopStatus | N | Not yet authorized (발권 시 승인 예정) |
cardNumber | XXXXXXXXXXXX0015 | 마스킹된 카드번호 (PCI-DSS) |
fortknoxIds (NOX) | 101605136306324 | Amadeus FortKnox 보안 토큰 ID |
oldFopFreeflow | CCCAXXXXXXXXXXXX0015/0329*CV | 레거시 FOP 텍스트 |
주의사항
fopStatus=N: FOP 등록 성공 ≠ 결제 성공. 실제 카드 승인은 발권 시점에 실행
fortknoxIds의 NOX 토큰으로 카드 번호 재입력 없이 FOP 재사용 가능
Step 10. Fare_PricePNRWithBookingClass
PNR의 항공편 세그먼트를 기반으로 운임을 계산하고, TST(Transitional Stored Ticket)를 PNR에 생성.
실제 발권은 아니며, 발권 직전 단계에서 최종 운임을 확정하고 저장하는 역할.
주요 Query 파라미터
pricingOptionKey | 설명 |
|---|
RP | 승객 유형별 분리 운임 계산 |
RU | 원래 발권 통화 기준 계산 |
RLO | 최저 운임 옵션 기준 재계산 |
VC + AF | Validating Carrier 지정 |
FCO + USD | 운임 통화 지정 |
TST 생성 결과 (예시)
| TST | 대상 | 기본운임 | 총액 | 할인 |
|---|
| TST 1 | ADT (성인 2명) | USD 409.00 | USD 995.30 | - |
| TST 2 | CHD (소아 1명) | USD 307.00 | USD 883.60 | CH25 |
| TST 3 | INF (유아 1명) | USD 42.00 | USD 92.00 | IN90 |
주요 경고 정보
| 코드 | 내용 |
|---|
PEN | NON-REFUNDABLE (환불 불가) |
LTD | 발권 기한 경고 |
| - | NO BAG INCLUDED (수하물 미포함) |
| - | TICKET STOCK RESTRICTION |
TST의 역할
- 발권 근거 데이터 — TTP 명령 실행 시 이 TST 기반으로 항공권 발행
- 승객 유형별 분리 — ADT/CHD/INF 각각 별도 TST 생성
- 발권 유효 기한 관리 —
lastTktDate 초과 시 TST 만료, 재요금 필요
- 운임 계산 경로 보존 — FCA 문자열로 국제항공운임 규정 준수 기록
Step 11. PNR_Retrieve (Issuance Step)
발권 직전 PNR 최종 상태 확인. TST가 PNR에 첨부된 상태를 검증.
주요 확인 항목
| 항목 | 확인 내용 |
|---|
pnrHeaderTag=TST | TST 존재 확인 |
| 세그먼트 상태 | 전 구간 HK (확약) |
| TK 요소 | indicator=OK (발권 가능) |
| FP 요소 | 결제 수단 등록 확인 |
| FV 요소 | Validating Carrier 확인 (PAX AF, INF AF) |
| SSR INFT/CHLD | 유아/소아 SSR 등록 확인 |
| TST 데이터 | segmentAssociation/option=N (미발권 상태) |
발권 전 PNR 특징
FA 요소(항공권 번호) 없음
FB 요소(발권 처리 결과) 없음
FP에 결제 승인 코드 없음
→ 확인 완료 후 TTP(발권 명령) 실행
Step 12. PNR_Retrieve (Post Issuance)
발권 완료 후 PNR 최종 상태 확인. 전자 항공권 발행 결과를 검증.
발권 전/후 변경 사항
| 항목 | 발권 전 (Step 11) | 발권 후 (Step 12) |
|---|
| Envelope 번호 | 1 | 2 |
| TK 요소 | OK + 기한 날짜만 | OK + ET + 항공사 코드 + 승객/세그먼트 참조 |
| FA 요소 | 없음 | 승객별 전자항공권 번호 포함 |
| FB 요소 | 없음 | TTP/ET OK (발권 성공 메시지) |
| FP 요소 | 카드번호 + 유효기간 | + /AAPS1OK (결제 승인 코드) |
| TST | option=N | 동일 + pricingRecordGroup 추가 |
FA 요소 (항공권 번호) 예시
| 항공권 번호 | 대상 | 총액 |
|---|
057-9317327353/ETAF | ADT 1 | USD 995.30 |
057-9317327354/ETAF | ADT 2 | USD 995.30 |
057-9317327355/ETAF | CHD | USD 883.60 |
057-9317327356/ETAF | INF | USD 92.00 |
057 = 에어프랑스 IATA 발행인 코드
- 발권 완료 확인 지표: FA 요소 존재 + FB의
TTP/ET OK
Step 13. SalesReports (AlternativeCurrency)
특정 날짜의 오피스 판매 실적을 지정한 대체 통화(USD 등) 기준으로 조회.
API
- Query:
SalesReports_DisplayQueryReport
- Reply:
SalesReports_QuerySalesReportDisplayResponse
핵심 Query 차이
| 파라미터 | 값 | 설명 |
|---|
currencyInfo / currencyIsoCode | USD | 대체 통화 지정 (이 블록이 AlternativeCurrency의 핵심) |
requestOption / option | SOF | Summary of Figures (요약) |
주요 Reply 필드
| 필드 | 설명 |
|---|
documentNumber / status=PS | 판매됨 (Sold) |
documentNumber / status=PX | 취소됨 (Cancelled) |
transactionDetails / code=TKTT | 티켓 발행 거래 |
transactionDetails / code=CANX | 취소 거래 |
monetaryDetails (712) | 베이스 운임 |
otherMonetaryDetails (TTX) | 세금 합계 |
otherMonetaryDetails (T) | 총액 |
otherMonetaryDetails (AGT) | 에이전트 커미션 |
Step 14. SalesReports (DFC)
동일 API로 오피스 기본 통화(Default Currency) 기준 판매 보고서 조회.
AlternativeCurrency(Step 13) 대비 차이
| 구분 | AlternativeCurrency | DFC |
|---|
currencyInfo 블록 | 포함 | 미포함 |
| 응답 통화 | 요청한 대체 통화 (USD) | 오피스 기본 통화 (ARS 등) |
| 활용 | 외화 기준 정산 | 현지 통화 일일 정산 |
DFC 추가 사항
EMDS 거래 코드 등장 — EMD(Electronic Miscellaneous Document) 서비스 발행 거래
formOfPayment/type이 비어있을 수 있음 — 결제 수단 미기록 거래
Step 15. Cancellation Flow
발권 완료 후 예약 및 티켓을 취소하는 3단계 플로우.
취소 순서 (필수)
PNR_Retrieve → Ticket_CancelDocument (티켓 수만큼 반복) → PNR_Cancel
발권된 티켓이 있는 경우 반드시 Ticket_CancelDocument를 먼저 호출해야 한다.
티켓 취소 없이 PNR_Cancel만 호출하면 오류 발생.
단계 1: PNR_Retrieve
취소할 PNR 조회. 발권 상태 및 티켓 번호 확인.
단계 2: Ticket_CancelDocument
| 파라미터 | 값 | 설명 |
|---|
documentDetails / number | 0579317327353 | 취소할 티켓 번호 |
Reply responseType | X | 성공적 취소 |
Reply statusCode | O | 정상 완료 |
단계 3: PNR_Cancel
| 파라미터 | 값 | 설명 |
|---|
optionCode | 11 | End Transaction and Retrieve |
entryType | I | 전체 PNR(Itinerary) 취소 |
주의사항
- Married Segment(
CNX)로 묶인 세그먼트는 함께 취소 처리
- 이 플로우는 예약/티켓 취소만 다루며, 카드사 환불(
DocRefund)은 별도 플로우
Fare_InformativePricingWithoutPNR에 FBA(Fare Basis Assignment) 옵션을 사용하여 특정 Fare Basis Code로 가격을 산출.
FBA 옵션 상세
| 파라미터 | 값 | 설명 |
|---|
pricingOptionKey=FBA | - | Fare Basis Assignment 활성화 |
attributeType | RL50TALB | 지정할 Fare Basis Code |
referenceDetails (S) | 1, 2 | FBA 적용 세그먼트 번호 |
- 아웃바운드(1-2)와 인바운드(3-4)에 각각 별도 FBA 블록 작성 필요
- Reply에서
fareBasis / rateClass로 지정한 Fare Basis 적용 확인
Step 17. MasterPricer + FBA Detail (수하물 상세)
기본 MasterPricer 검색에 수하물 상세 정보와 유료 추가 수하물 서비스 정보를 함께 반환.
활성화 방법
fareOptions / priceType에 FBD 추가. 별도 API 호출 불필요.
추가 Reply 섹션
OC (Optional Charges) — 유료 추가 수하물
| 필드 | 설명 |
|---|
subType | 수하물 유형 (0GO=일반, 0KF=악기, 0HQ=골프, 0HS=스키) |
SSR | SSR 코드 (XBAG, XEBG) |
RFIC=C | 수하물 분류 |
serviceGroup=BG | 수하물 서비스 그룹 |
commercialName | 규격 설명 (“UP TO 50LB 23KG 62LI 158LCM”) |
FBA (Free Baggage Allowance) — 무료 수하물 허용량
| 필드 | 설명 |
|---|
freeAllowance=0, quantityCode=N | 무료 수하물 없음 |
freeAllowance=1, quantityCode=N | 1개 무료 |
freeAllowance=2, quantityCode=N | 2개 무료 |
coveragePerFlightsInfo / refOfLeg | 적용 구간 레그 번호 |
항공편 검색 결과에 구간별 탄소 배출량 추정치를 포함. ICAO 또는 Travalyst 방법론 선택 가능.
활성화 방법
carbonEmissionBySourceDetails 블록을 Query에 추가.
<carbonEmissionBySourceDetails>
<providerPerTransportation>
<carbonEmissionProviderCd>ICAO</carbonEmissionProviderCd> <!-- 또는 TVYS -->
<transportationModeType>FLT</transportationModeType>
</providerPerTransportation>
</carbonEmissionBySourceDetails>
Reply 필드
<estimatedCarbonEmission>
<carbonEmissionByCabin>
<cabin>M</cabin> <!-- M=이코노미 -->
<quantity>321</quantity> <!-- gCO2e -->
</carbonEmissionByCabin>
</estimatedCarbonEmission>
ICAO vs TVYS 비교
| 구분 | ICAO (Step 18) | TVYS (Step 19) |
|---|
| 개발 기관 | 국제민간항공기구 | Travalyst (비영리 연합) |
| 지원 교통수단 | FLT + BUS + TRN | FLT만 |
| 계산 방식 | 표준 공식 기반 | 실제 운항 데이터 기반 |
| 배출량 경향 | 상대적으로 낮음 | 상대적으로 높음 |
동일 구간 배출량 비교 (gCO2e)
| 구간 | ICAO | TVYS | 차이 |
|---|
| MIA→LIS | 321 | 438 | +36% |
| LIS→LHR | 117 | 145 | +24% |
| MIA→MAD | 372 | 495 | +33% |
- 구간(leg)별로 반환되므로 전체 여정은 합산 필요
- 동시에 두 방식 지정 불가 (한 번에 하나만)
- UI에서 반드시 “추정치(estimated)” 명시
IATA Mandate 830d — 승객 연락처 의무 수집
IATA Resolution 830d에 따라 승객에게 disruption 알림용 연락처 공유를 요청하고, PNR에 SSR로 기록.
SSR 유형
| SSR Type | 용도 | freetext 예시 |
|---|
CTCM | 휴대폰 번호 | 1234567890 |
CTCE | 이메일 주소 | EMAIL..1A..WBS//DOMAIN.COM |
CTCR | 연락처 제공 거부 | REFUSED |
이메일 특수문자 변환 규칙
예: EMAIL_1A_WBS@DOMAIN.COM → EMAIL..1A..WBS//DOMAIN.COM
구현 필수 사항
- 예약 시 연락처 입력 화면에 “항공사 disruption 알림용 정보 공유” 안내
- 거부 옵션 제공 필수
- 거부 시에도 CTCR SSR로 거부 사실 자체를 기록
companyId=YY (전체 항공사) 적용
- CTCM/CTCE와 CTCR 동시 추가는 논리적 모순
PNR 생성 순서 요약
[Step 7] Air_SellFromRecommendation
Working PNR에 항공 세그먼트 적재 (NN → OK)
아직 PNR 미저장
↓
[Step 8] PNR_AddMultiElements
NM (승객 이름) + AP (연락처) + SSR (특별 서비스)
+ FM (수수료) + TK (발권 기한) + RF (예약자 식별)
→ PNR 저장 (Commit) → PNR 레코드 생성 (1A)
↓
[Step 9] FOP_CreateFormOfPayment
결제 수단 등록 → FortKnox 토큰 발급
fopStatus=N (발권 시 승인 예정)
↓
[Step 10] Fare_PricePNRWithBookingClass
TST 생성 (승객 유형별 운임 확정)
lastTktDate 관리 필수
↓
[Step 11] PNR_Retrieve → 발권 전 최종 확인
[TTP 실행] → 실제 발권
[Step 12] PNR_Retrieve → FA 요소(항공권 번호) 확인
주요 약어 모음
| 약어 | 정식 명칭 | 설명 |
|---|
| AIP | Airline Information Present | NDC 부가 정보 제공 항공사 |
| BIN | Bank Identification Number | 카드 앞 6자리 식별번호 |
| CANX | Cancellation | 취소 거래 |
| CNX | Connection | 환승 연결 세그먼트 |
| CTCE | Contact Email | 승객 이메일 SSR |
| CTCM | Contact Mobile | 승객 휴대폰 SSR |
| CTCR | Contact Refused | 연락처 제공 거부 SSR |
| DFC | Default Currency | 오피스 기본 통화 |
| EFT | Elapsed Flying Time | 비행 소요 시간 |
| EMDS | EMD Service | EMD 서비스권 발행 |
| ET | Electronic Ticket | 전자항공권 |
| FBA | Fare Basis Assignment / Free Baggage Allowance | 문맥에 따라 다름 |
| FBD | Free Baggage Detail | 수하물 상세 priceType |
| FCA | Fare Calculation Area | 운임 계산 경로 |
| FCMI | Fare Component Message Indicator | 운임 구성 방식 |
| FOP | Form of Payment | 결제 수단 |
| FRN | Fare Record Number | 운임 레코드 번호 |
| ICAO | International Civil Aviation Organization | 국제민간항공기구 |
| LCA | Low Cost Airline | 저비용항공사 |
| MCX | Marketing Carrier Index | 주 항공사 참조 코드 |
| MIN | Married Indicator | 결혼 세그먼트 그룹 |
| NOX | Non-exposed Token | FortKnox 보안 토큰 |
| NUC | Neutral Unit of Construction | IATA 운임 계산 기준 통화 |
| OC | Optional Charges | 유료 부가 서비스 |
| RC | Result Count | 결과 수 제한 |
| SOF | Summary of Figures | 요약 수치 |
| TKTT | Ticket Issued | 티켓 발행 거래 코드 |
| TST | Transitional Stored Ticket | 임시 운임 저장 레코드 |
| TVYS | Travalyst | 탄소 배출량 계산 방법론 |
| TTP | Ticket Transaction Processing | 발권 처리 명령 |
각 API의 상세 용어는 개별 용어집 페이지를 참고하세요: