fake-toss-payments-server
Version:
Fake toss-payments server for testing
180 lines (179 loc) • 5.58 kB
TypeScript
import { tags } from "typia";
import { ITossPayment } from "./ITossPayment";
/**
* 카드 결제 정보.
*
* @author Samchon
*/
export interface ITossCardPayment extends ITossPayment.IBase<"카드", "NORMAL" | "BILLING"> {
/**
* 카드 정보.
*/
card: ITossCardPayment.ICard;
/**
* 카드사의 즉시 할인 프로모션 정보.
*/
discount: null | ITossCardPayment.IDiscount;
/**
* 간편결제로 결제한 경우 간편결제 타입 정보.
*/
easyPay: null | "토스결제" | "페이코" | "삼성페이";
}
export declare namespace ITossCardPayment {
/**
* 카드 정보.
*/
interface ICard {
/**
* 카드사 이름.
*/
company: string;
/**
* 카드 번호.
*/
number: string & tags.Pattern<"[0-9]{16}">;
/**
* 할부 개월 수.
*/
installmentPlanMonths: number;
/**
* 무이자 할부 적용 여부.
*/
isInterestFree: boolean;
/**
* 승인 번호.
*/
approveNo: string;
/**
* 카드 포인트 사용 여부.
*/
useCardPoint: false;
/**
* 카드 타입.
*/
cardType: "신용" | "체크" | "기프트";
/**
* 카드의 소유자 타입.
*/
ownerType: "개인" | "법인";
/**
* 카드 결제의 매입 상태.
*
* - READY: 매입 대기
* - REQUESTED: 매입 요청됨
* - COMPLETED: 매입 완료
* - CANCEL_REQUESTED: 매입 취소 요청됨
* - CANCELD: 매입 취소됨
*/
acquireStatus: "READY" | "REQUESTED" | "COMPLETED" | "CANCEL_REQUESTED" | "CANCELED";
/**
* 영수증 URL.
*/
receiptUrl: string & tags.Format<"uri">;
}
/**
* 카드사의 즉시 할인 프로모션 정보.
*/
interface IDiscount {
/**
* 카드사의 즉시 할인 프로모션을 적용한 금액.
*/
amount: number;
}
/**
* 신용 카드를 이용한 결제 신청 정보.
*/
interface ICreate {
/**
* 결제 수단이 신용 카드임을 의미.
*/
method: "card";
/**
* 카드 번호.
*/
cardNumber: string & tags.Pattern<"[0-9]{16}">;
/**
* 카드 만료 년도 (2 자리).
*/
cardExpirationYear: string & tags.Pattern<"\\d{2}">;
/**
* 카드 만료 월 (2 자리).
*/
cardExpirationMonth: string & tags.Pattern<"^(0[1-9]|1[012])$">;
/**
* 카드 비밀번호.
*/
cardPassword?: string;
/**
* 할부 개월 수.
*/
cardInstallmentPlan?: number;
/**
* 지불 총액.
*/
amount: number;
/**
* 면세금 총액.
*/
taxFreeAmount?: number;
/**
* 주문 식별자 키.
*
* 토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 자체적으로 관리하는 식별자 키.
*/
orderId: string;
/**
* 주문 이름.
*
* 토스 페이먼츠가 아닌, 이를 이용하는 서비스에서 발급한 주문명.
*/
orderName?: string;
/**
* 고객의 생년월일.
*
* 표기 형식 YYMMDD.
*/
customerBirthday?: string & tags.Pattern<"^([0-9]{2})(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$">;
/**
* 고객의 이메일.
*/
customerEmail?: string & tags.Format<"email">;
/**
* 해외카드로 결제하는 경우 3DS 인증 적용을 위해 사용.
*
* 3DS 인증 결과를 전송해야 하는 경우에만 필수.
*/
vbv?: {
/**
* 3D Secure 인증 세션에 대한 인증 값.
*/
cavv: string;
/**
* 트랜잭션 ID.
*/
xid: string;
/**
* 3DS 인증 결과에 대한 코드 값.
*/
eci: string;
};
/**
* 결제 승인 여부.
*
* 오직 가짜 페이먼츠 서버 `fake-toss-payments-server` 에서만 사용되는 값으로써,
* 결제 승인을 고의로 지연시키거나 할 때 사용된다. 이 값을 `false` 로 하면, 프론트
* 어플리케이션이 토스 페이먼츠가 제공해주는 결제 창을 사용하여 결제를 진행하는
* 상황을 시뮬레이션할 수 있다.
*
* 본디 토스 페이먼츠 서버는 프론트 어플리케이션에서 백엔드 서버를 거치지 않고,
* 토스 페이먼츠가 제공해주는 결제 창을 이용하여 직접 결제를 요청하는 경우,
* 백엔드에서 이를 별도 {@link functional.payments.approve 승인} 처리해주기 전까지
* 정식 결제로 인청치 아니한다.
*
* 반면 백엔드 서버에서 토스 페이먼츠 서버의 API 를 호출하는 경우, 토스 페이먼츠는
* 이를 그 즉시로 승인해주기, `fake-toss-payments-server` 에서 별도의 승인 처리가
* 필요한 상황을 시뮬레이션하기 위해서는 이러한 속성이 필요한 것.
*/
__approved?: boolean;
}
}