UNPKG

fake-toss-payments-server

Version:
168 lines (167 loc) 5.07 kB
import { tags } from "typia"; import { ITossBilling } from "./ITossBilling"; import { ITossCardPayment } from "./ITossCardPayment"; import { ITossCashReceipt } from "./ITossCashReceipt"; import { ITossGiftCertificatePayment } from "./ITossGiftCertificatePayment"; import { ITossMobilePhonePayment } from "./ITossMobilePhonePayment"; import { ITossPaymentCancel } from "./ITossPaymentCancel"; import { ITossTransferPayment } from "./ITossTransferPayment"; import { ITossVirtualAccountPayment } from "./ITossVirtualAccountPayment"; /** * 결제 정보. * * `ITossPayment` 는 토스 페이먼츠의 결제 정보를 형상화한 자료구조이자 유니언 타입의 * 인터페이스로써, if condition 을 통하여 method 값을 특정하면, 파생 타입이 자동으로 * 지정된다. * * ```typescript * if (payment.method === "카드") * payment.card; // payment be ITossCardPayment * ``` * * @author Samchon */ export type ITossPayment = ITossCardPayment | ITossGiftCertificatePayment | ITossMobilePhonePayment | ITossTransferPayment | ITossVirtualAccountPayment; export declare namespace ITossPayment { /** * 결제의 기본 정보. */ interface IBase<Method extends string, Type extends string, Status extends string = "READY" | "IN_PROGRESS" | "WAITING_FOR_DEPOSIT" | "DONE" | "CANCELED" | "PARTIAL_CANCELED" | "ABORTED" | "EXPIRED"> { /** * 결제 수단. */ method: Method; /** * 결제 타입. * * - NORMAL: 일반 결제 * - BILLING: 미리 등록한 카드에 의한 간편 결제. */ type: Type; /** * 결제 상태. * * - READY * - IN_PROGRESS * - WAITING_FOR_DEPOSIT * - DONE * - CANCELED * - PARTIAL_CANCELED * - ABORTED * - EXPIRED */ status: Status; /** * 가맹점 ID. * * 현재 tosspayments 가 쓰임. */ mId: string; /** * 사용 중인 토스 페이먼츠 API 의 버전. */ version: string; /** * 결제 내역의 식별자 번호. */ paymentKey: string; /** * 주문 식별자 키. * * 토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키. */ orderId: string; /** * 거래 건에 대한 고유한 키 값. * * {@link paymentKey} 와 달리, 이를 사용할 일은 없더라. */ transactionKey: string; /** * 주문 이름. * * 토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명. */ orderName: string; /** * 화폐 단위. * * 현재 토스 페이먼츠는 KRW 만 사용 가능. */ currency: string; /** * 총 결제 금액. */ totalAmount: number; /** * 취소할 수 있는 금액. */ balanceAmount: number; /** * 공급가액. */ suppliedAmount: number; /** * 면세액. */ taxFreeAmount: number; /** * 부가세. */ vat: number; /** * 에스크로 사용 여부. */ useEscrow: boolean; /** * 문화비 지출 여부. * * 도석입, 공연 티켓, 박물관/미술관 입장권 등. */ cultureExpense: boolean; /** * 결제 요청 일시. */ requestedAt: string & tags.Format<"date-time">; /** * 결제 승인 일시. */ approvedAt: null | (string & tags.Format<"date-time">); /** * 결제 취소 내역. */ cancels: null | ITossPaymentCancel[]; /** * 현금 영수증 정보. */ cashReceipt: null | ITossCashReceipt.ISummary; } /** * 결제 승인 정보. */ interface IApproval { /** * 주문 식별자 키. * * 토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키. */ orderId: string; /** * 결제 총액. */ amount: number; } /** * 결제 신청 정보. * * `ITossPayment.ICreate` 는 결제 신청 정보를 형상화한 자료구조이자 유니언 타입의 * 인터페이스로써, if condition 을 이용하여 대상 method 를 특정하면, 파생 타입이 * 자동으로 지정된다. * * ```typescript * if (input.method === "card") * input.cardNumber; // input is ITossCardPayment.ICreate * ``` */ type ICreate = ITossCardPayment.ICreate | ITossBilling.IPaymentStore | ITossVirtualAccountPayment.ICreate; }