package com.style24.persistence.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.style24.persistence.TscBaseDomain;

import lombok.Data;

/**
 * 결제 정보
 * @author xodud1202
 * @since 2021. 03. 03
 */
@SuppressWarnings("serial")
@Data
public class Payment extends TscBaseDomain {
	// TB_PAYMENT
	@JsonFormat(with = JsonFormat.Feature.ACCEPT_SINGLE_VALUE_AS_ARRAY)
	private int[] cartSqArr;				// 장바구니 일련번호 배열
	private int paySq;						// 결제 일련번호
	private int ordNo;						// 주문번호
	private int payAmt;						// 결제금액
	private int pgCpnAmt;					// PG 쿠폰할인금
	private int npayPntAmt;					// 네이버페이 포인트 할인금
	private int ordChgSq;					// 주문변경일련번호
	private int custNo;						// 고객번호
	private String payGb;					// 결제구분(O:주문시결제, D:배송시결제, E:에러(강제 결제 태울 때 또는 에러일 때)
	private String payDt;					// 결제일자
	private String payMeans;				// 결제수단
	private String pgGb;					// PG구분
	private String payStat;					// 결제 상태
	private String pgTid;					// PG TID
	private String pgTradeNo;				// PG거래번호(승인번호)
	private String pgShopId;				// PG가맹점ID
	private String cardType;				// PG 카드 유형 (Y:체크카드, N:신용카드, G:기프트카드) 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
	private String cardKind;				// 카드종류. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
	private String cardBank;				// 카드발급은행. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
	private String cardCd;					// 카드 발급사코드
	private String cardNm;					// 카드명. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
	private String cardMips;				// 카드할부개월수. 결제수단이 "30:신용카드"일 때 사용. PG사에서 받은 값
	private String cardPcableYn;			// 부분취소가능여부
	private String vaNo;					// 가상계좌번호. 결제수단이 "20:무통장입금일" 때 사용
	private String vaNm;					// 가상계좌예금주명. 결제수단이 "20:무통장입금일" 때 사용
	private String vaBank;					// 가상계좌은행(공통코드G940). 결제수단이 "20:무통장입금일" 때 사용
	private String vaDeadline;				// 무통장입금마감일시. 결제수단이 "20:무통장입금일" 때 사용
	private String telecom;					// 통신사.결제수단이 휴대폰결제인경우만 사용
	private String escrowYn;				// 에스크로 여부
	private String cashAuthNo;				// 현금영수증 승인번호
	private String cashTradeNo;				// 현금영수증 거래번호
	private String frontGb;					// 접근 디바이스 구분
	private String accountNo;				// 환불계좌번호
	private String accountNm;				// 환불계좌주명
	private String bankCd;					// 환불계좌은행코드
	private int orgOrdNo;					// 기존주문번호

	// KCP
	private int goodMny;					// 결제금액
	private int shopUserId;					// 가맹점 고객 ID (CUST_NO)
	private int quotaopt;					// 신용카드 최대 할부개월수
	private int leftAmt;					// 남은 금액
	private int partCancelAmt;				// 부분취소금액
	private Integer vcntExpireTerm;			// 무통장입금 유효기간 설정
	private String ordrIdxx;					// 가맹점 주문번호
	private String actionResult;			// 인증수단
	private String approvalKey;				// 결제등록키
	private String dispTaxYn;				// 현금영수증 노출 여부
	private String paycoDirect;				// 페이코 직접 호출 변수
	private String payMthod;				// 페이코 직접 호출 변수
	private String siteCd;					// 가맹점 상점코드
	private String siteName;				// 가맹점 명
	private String modType;					// 취소/부분취소 구분
	private String modDesc;					// 취소 사유
	private String moduleType;
	private String goodExpr;
	private String buyrName;				// 구매자명
	private String buyrMail;				// 구매자메일
	private String buyrTel1;				// 구매자 전화번호
	private String buyrTel2;				// 구매자 휴대폰번호
	private String currency;				// 원화/달러 구분
	private String payMethod;				// 신용카드, 무통장입금, 가상계좌, 휴대폰결제 구분
	private String goodName;				// 상품명
	private String reqTx;					// 요청종류 (승인 : pay, 취소, 매입 : mod)
	private String usePayMethod;			// 신용카드, 무통장입금, 가상계좌, 휴대폰결제 요청 결과
	private String tranCd;
	private String resCd;					// 결과코드
	private String resMsg;					// 결과메세지
	private String ipAddress;				// IP주소
	private String bankNm;					// 은행명
	private String batchYn;					// 배치여부
	private String pgOrdNo;					// PG 송부용 주문번호 (주문 : ordNo, 추가배송비 : C + ordChgSq)
	private String responseType;
	private String escwUsed;
	
	// KakaoPay
	private String partnerOrderId;			// 카카오페이 가맹점 주문번호, 최대 100자
	private String partnerUserId;			// 카카오페이 가맹점 회원 id, 최대 100자
	private String pgToken;					// 카카오페이 결제승인 요청을 인증하는 토큰
	private String nextRedirectAppUrl;		// 카카오톡 결제 페이지 Redirect URL (모바일 앱)
	private String nextRedirectMobileUrl;	// 카카오톡 결제 페이지 Redirect URL (모바일 웹)
	private String nextRedirectPcUrl;		// 카카오톡 결제 페이지 Redirect URL (PC 웹)
	private String androidAppScheme;		// 카카오페이 결제 화면으로 이동하는 Android 앱 스킴
	private String iosAppScheme;			// 카카오페이 결제 화면으로 이동하는 iOS 앱 스킴
	private String kakaoMethodType;			// 카카오페이 결제 수단, CARD 또는 MONEY 중 하나
	private int kakaoPoint;					// 카카오페이 사용한 포인트 금액
	private int kakaoDiscount;				// 카카오페이 할인 금액
	private String createDt;				// 카카오페이 결제 준비 요청 시각
	private String approveDt;				// 카카오페이 결제 승인 시각
	private String status;					// 카카오페이 결제 상태
	
	// NaverPay
	private String reserveId;				// 네이버페이 결제 예약 ID
	private String startTime;				// 네이버페이 주문조회 시작일시
	private String endTime;					// 네이버페이 주문조회 종료일시
	private String approvalType;			// 네이버페이 주문조회 타입
	private String cancelRequester;			// 네이버페이 취소 요청자(1: 구매자, 2: 가맹점 관리자)
	private String chgReasonNm;				// 취소 사유
	private String naverMethodType;			// 네이버페이 주 결제 수단 (CARD:신용카드, BANK:계좌이체)
	private String pgShopKey;				// 네이버페이 시크릿키
	private String paymentId;				// 네이버페이 결제번호
	private String code;					// 승인 결과 코드
	
	// 2021.05.10
	private String payUrl;
	private String retUrl;
	private String appUrl;
	
	// 2021.09.01
	private String op_cd;
	private String tx_cd;
	private String order_no;
	private String tno;
	private String cash_a_no;
	private String cash_no;
}
