iamport-react-native
Version:
리액트 네이티브용 아임포트 결제/본인인증 연동 라이브러리
138 lines (121 loc) • 3.75 kB
text/typescript
import { Validation, IMPData } from './Validation';
import { IMPConst } from '../constants';
class ValidationForPayment extends Validation {
constructor(
userCode: string,
loading: object,
callback: (response: any) => any,
data: IMPData.PaymentData
) {
super(userCode, loading, callback, data);
}
validateData() {
const {
pg,
pay_method,
merchant_uid,
amount,
buyer_tel,
app_scheme,
language,
digital,
biz_num,
customer_uid,
naverPopupMode,
popup,
} = <IMPData.PaymentData>this.data;
if (this.data === undefined) {
this.isValid = false;
this.message = '결제 파라미터(data)는 필수입력입니다.';
return;
}
if (merchant_uid === undefined) {
this.isValid = false;
this.message = '주문번호(merchant_uid)는 필수입력입니다.';
return;
}
if (amount === undefined) {
this.isValid = false;
this.message = '결제금액(amount)은 필수입력입니다.';
return;
}
if (buyer_tel === undefined) {
this.isValid = false;
this.message = '구매자 번호(buyer_tel)는 필수입력입니다.';
return;
}
if (app_scheme === undefined) {
this.isValid = false;
this.message = 'app_scheme은 필수입력입니다.';
return;
}
if (pg) {
const [pgProvider] = pg.split('.');
if (IMPConst.PG.indexOf(pgProvider as any) === -1) {
this.isValid = false;
this.message = 'PG사가 올바르지 않습니다.';
}
}
if (language && pg !== 'paypal') {
if (IMPConst.EN_AVAILABLE_PG.indexOf(pg as any) !== -1) {
if (pg === 'eximbay') {
if (!['ko', 'en', 'zh', 'jp'].includes(language)) {
this.isValid = false;
this.message =
'올바르지 않은 언어 설정입니다.\n 선택하신 PG사는 ko, en, zh jp 옵션을 지원합니다.';
return;
}
} else if (IMPConst.LANGUAGE.indexOf(language as any) === -1) {
this.isValid = false;
this.message =
'올바르지 않은 언어 설정입니다.\n 선택하신 PG사는 ko 또는 en 옵션을 지원합니다.';
return;
}
} else if (language !== 'ko') {
this.isValid = false;
this.message =
'올바르지 않은 언어 설정입니다.\n 선택하신 PG사는 ko 옵션만 지원합니다.';
return;
}
}
if (pay_method === 'phone' && digital === undefined) {
this.isValid = false;
this.message = '휴대폰 소액결제시 digital은 필수입력입니다.';
return;
}
if (pg === 'syrup') {
this.isValid = false;
this.message = '해당 모듈은 현재 시럽페이를 지원하지 않습니다.';
return;
}
if (popup) {
this.isValid = false;
this.message = '해당 모듈은 팝업을 지원하지 않습니다.';
return;
}
if (pg === 'naverpay' && naverPopupMode) {
this.isValid = false;
this.message =
'해당 모듈에서 popup은\n네이버 페이 결제시 지원하지 않습니다.';
return;
}
if (
pg === 'danal_tpay' &&
pay_method === 'vbank' &&
biz_num === undefined
) {
this.isValid = false;
this.message = '다날-가상계좌시 biz_num은 필수입력입니다.';
return;
}
if (
(pg === 'kcp_billing' || pg === 'syrup') &&
customer_uid === undefined
) {
this.isValid = false;
this.message = '정기결제시 customer_uid는 필수입력입니다.';
return;
}
}
}
export default ValidationForPayment;