/** 카드 종류입니다. 신용, 체크, 기프트, 미확인 중 하나입니다. * 고객이 해외 카드로 결제했거나 간편결제의 결제 수단을 조합해서 결제했을 때 미확인으로 표시됩니다. */ type CardType = '신용' | '체크' | '기프트' | '미확인'; /** 카드의 소유자 타입입니다. 개인, 법인, 미확인 중 하나입니다. * 고객이 해외 카드로 결제했거나 간편결제의 결제 수단을 조합해서 결제했을 때 미확인으로 표시됩니다. */ type OwnerType = '개인' | '법인' | '미확인'; /** 카드 결제의 매입 상태입니다. */ type AcquireStatus = 'READY' | 'REQUESTED' | 'COMPLETED' | 'CANCEL_REQUESTED' | 'CANCELED'; /** 할부가 적용된 결제에서 할부 수수료를 부담하는 주체입니다. */ type InterestPayer = 'BUYER' | 'CARD_COMPANY' | 'MERCHANT'; /** 카드로 결제하면 제공되는 카드 관련 정보입니다. */ type Card = { amount: number; issuerCode: string; acquirerCode?: string; number: string; installmentPlanMonths: number; approveNo: string; useCardPoint: boolean; cardType: CardType; ownerType: OwnerType; acquireStatus: AcquireStatus; isInterestFree: boolean; interestPayer?: InterestPayer; }; /** 환불 처리 상태를 나타냅니다. */ type RefundStatus = 'NONE' | 'PENDING' | 'FAILED' | 'PARTIAL_FAILED' | 'COMPLETED'; /** 정산 상태를 나타냅니다. */ type SettlementStatus = 'INCOMPLETED' | 'COMPLETED'; /** 환불계좌 정보입니다. */ type RefundReceiveAccount = { bankCode: string; accountNumber: string; holderName: string; }; /** 가상계좌로 결제하면 제공되는 가상계좌 관련 정보입니다. */ type VirtualAccount = { accountType: '일반' | '고정'; accountNumber: string; bankCode: string; customerName: string; dueDate: string; refundStatus: RefundStatus; expired: boolean; settlementStatus: SettlementStatus; refundReceiveAccount?: RefundReceiveAccount; }; /** 휴대폰으로 결제하면 제공되는 휴대폰 결제 관련 정보입니다. */ type MobilePhone = { customerMobilePhone: string; settlementStatus: SettlementStatus; receiptUrl: string; }; /** 상품권으로 결제하면 제공되는 상품권 결제 관련 정보입니다. */ type GiftCertificate = { approveNo: string; settlementStatus: SettlementStatus; }; /** 계좌이체로 결제했을 때 이체 정보가 담기는 객체입니다. */ type Transfer = { bankCode: string; settlementStatus: SettlementStatus; }; /** 발행된 영수증 정보입니다. */ type Receipt = { url: string; }; /** 결제창 정보입니다. */ type Checkout = { url: string; }; /** 간편결제 정보입니다. */ type EasyPay = { provider: string; amount: number; discountAmount: number; }; /** 결제 승인에 실패하면 응답으로 받는 에러 객체입니다. */ type Failure = { code: string; message: string; }; /** 현금영수증 정보입니다. */ type CashReceipt = { type: '소득공제' | '지출증빙' | '미발행'; receiptKey: string; issueNumber: string; receiptUrl: string; amount: number; taxFreeAmount: number; }; /** 현금영수증 발행 및 취소 이력 정보입니다. */ type CashReceiptHistory = { receiptKey: string; orderId: string; orderName: string; type: '소득공제' | '지출증빙'; issueNumber: string; receiptUrl: string; businessNumber: string; transactionType: 'CONFIRM' | 'CANCEL'; amount: number; taxFreeAmount: number; issueStatus: 'IN_PROGRESS' | 'COMPLETED' | 'FAILED'; failure: Failure; customerIdentityNumber: string; requestedAt: string; }; /** 카드사의 즉시 할인 프로모션 정보입니다. */ type Discount = { amount: number; }; /** 결제 취소 이력 정보입니다. */ type CancelHistory = { cancelAmount: number; cancelReason: string; taxFreeAmount: number; taxExemptionAmount: number; refundableAmount: number; easyPayDiscountAmount: number; canceledAt: string; transactionKey: string; receiptKey?: string; }; type PaymentStatus = 'READY' | 'IN_PROGRESS' | 'WAITING_FOR_DEPOSIT' | 'DONE' | 'CANCELED' | 'PARTIAL_CANCELED' | 'ABORTED' | 'EXPIRED'; type PaymentMethod = '카드' | '가상계좌' | '간편결제' | '휴대폰' | '계좌이체' | '문화상품권' | '도서문화상품권' | '게임문화상품권'; type PaymentType = 'NORMAL' | 'BILLING' | 'BRANDPAY'; export interface Payment { version: string; paymentKey: string; type: PaymentType; orderId: string; orderName: string; mId: string; currency: string; method: PaymentMethod; totalAmount: number; balanceAmount: number; status: PaymentStatus; requestedAt: string; approvedAt: string; useEscrow: boolean; lastTransactionKey?: string; suppliedAmount?: number; vat?: number; cultureExpense?: boolean; taxFreeAmount?: number; taxExemptionAmount: number; cancels?: CancelHistory[]; isPartialCancelable: boolean; card?: Card; virtualAccount?: VirtualAccount; secret?: string; mobilePhone?: MobilePhone; giftCertificate?: GiftCertificate; transfer?: Transfer; receipt?: Receipt; checkout?: Checkout; easyPay?: EasyPay; country: string; failure?: Failure; cashReceipt?: CashReceipt; cashReceipts?: CashReceiptHistory[]; discount?: Discount; } export interface PaymentWithVirtualAccount extends Payment { virtualAccount: VirtualAccount; } export interface PaymentWithCard extends Payment { card: Card; } export {};