UNPKG

iamport-react-native

Version:

리액트 네이티브용 아임포트 결제/본인인증 연동 라이브러리

138 lines (121 loc) 3.75 kB
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;