diff --git a/src/entities/additional-service/model/account-holder-search/types.ts b/src/entities/additional-service/model/account-holder-search/types.ts
index b33c912..3dd9699 100644
--- a/src/entities/additional-service/model/account-holder-search/types.ts
+++ b/src/entities/additional-service/model/account-holder-search/types.ts
@@ -84,6 +84,17 @@ export interface ExtensionAccountHolderSearchRequestParams extends ExtensionRequ
export interface ExtensionAccountHolderSearchRequestResponse {
status: boolean;
+ data?: string;
+ error?: {
+ root?: string;
+ errKey?: string;
+ code?: string;
+ message?: string;
+ timestamp?: string;
+ details?: {
+ [key: string]: string;
+ };
+ };
}
export interface ExtensionAccountHolderSearchDownloadExcelParams extends ExtensionRequestParams { // Request
diff --git a/src/entities/additional-service/model/fund-account/types.ts b/src/entities/additional-service/model/fund-account/types.ts
index 9214370..d03e968 100644
--- a/src/entities/additional-service/model/fund-account/types.ts
+++ b/src/entities/additional-service/model/fund-account/types.ts
@@ -32,6 +32,17 @@ export interface ExtensionFundAccountTransferRegistParams {
export interface ExtensionFundAccountTransferRegistResponse {
status: boolean;
+ data?: string;
+ error?: {
+ root?: string;
+ errKey?: string;
+ code?: string;
+ message?: string;
+ timestamp?: string;
+ details?: {
+ [key: string]: string;
+ };
+ };
};
export interface ExtensionFundAccountTransferRequestParams {
@@ -39,7 +50,18 @@ export interface ExtensionFundAccountTransferRequestParams {
}
export interface ExtensionFundAccountTransferRequestResponse {
- status: boolean
+ status: boolean;
+ data?: string;
+ error?: {
+ root?: string;
+ errKey?: string;
+ code?: string;
+ message?: string;
+ timestamp?: string;
+ details?: {
+ [key: string]: string;
+ };
+ };
}
export enum FundAccountSearchCl {
diff --git a/src/entities/additional-service/model/key-in/types.ts b/src/entities/additional-service/model/key-in/types.ts
index a0edac0..1b1e144 100644
--- a/src/entities/additional-service/model/key-in/types.ts
+++ b/src/entities/additional-service/model/key-in/types.ts
@@ -105,4 +105,30 @@ export interface ExtensionKeyinApplyParams extends ExtensionRequestParams {
export interface ExtensionKeyinApplyResponse {
status: boolean;
+ data?: {
+ tid?: string | null;
+ approvalNumber?: string | null;
+ approvalDateTime?: string | null;
+ resultCode?: string;
+ resultMessage?: string;
+ cardName?: string | null;
+ cardCode?: string | null;
+ amount?: number | null;
+ installmentMonth?: string | null;
+ merchantNumber?: string | null;
+ acquirerCode?: string | null;
+ acquirerName?: string | null;
+ slipNumber?: string | null;
+ success?: boolean;
+ }
+ error?: {
+ root?: string;
+ errKey?: string;
+ code?: string;
+ resultMessage?: string;
+ timestamp?: string;
+ details?: {
+ path?: string;
+ };
+ };
}
\ No newline at end of file
diff --git a/src/entities/additional-service/model/link-pay/types.ts b/src/entities/additional-service/model/link-pay/types.ts
index c97b715..a961605 100644
--- a/src/entities/additional-service/model/link-pay/types.ts
+++ b/src/entities/additional-service/model/link-pay/types.ts
@@ -198,7 +198,19 @@ export interface ExtensionLinkPayRequestParams extends ExtensionRequestParams {
}
export interface ExtensionLinkPayRequestResponse {
- status: boolean
+ status: boolean;
+ error?: {
+ root?: string;
+ errKey?: string;
+ code?: string;
+ message?: string;
+ timestamp?: string;
+ details?: {
+ validationErrors?: {
+ [key: string]: string;
+ }
+ }
+ }
}
export interface LinkPaymentFormData {
diff --git a/src/entities/additional-service/model/payout/types.ts b/src/entities/additional-service/model/payout/types.ts
index 56c7a8a..b0c7c10 100644
--- a/src/entities/additional-service/model/payout/types.ts
+++ b/src/entities/additional-service/model/payout/types.ts
@@ -8,6 +8,10 @@ export interface ExtensionPayoutRequestParams {
};
export interface ExtensionPayoutRequestResponse {
status: boolean;
+
+ error?: {
+ message?: string
+ }
};
export enum PayoutSearchDateType {
REQUEST_DATE = 'REQUEST_DATE',
diff --git a/src/entities/additional-service/ui/link-payment/apply/link-payment-step1.tsx b/src/entities/additional-service/ui/link-payment/apply/link-payment-step1.tsx
index 2c5c5e8..06df058 100644
--- a/src/entities/additional-service/ui/link-payment/apply/link-payment-step1.tsx
+++ b/src/entities/additional-service/ui/link-payment/apply/link-payment-step1.tsx
@@ -3,6 +3,8 @@ import { useNavigate } from '@/shared/lib/hooks/use-navigate';
import { useSetOnBack } from '@/widgets/sub-layout/use-sub-layout';
import { SingleDatePicker } from '@/shared/ui/filter/single-date-picker';
import { LinkPaymentFormData, LinkPaymentSendMethod } from '@/entities/additional-service/model/link-pay/types';
+import { NumericFormat } from 'react-number-format';
+import { ChangeEvent } from 'react';
interface LinkPaymentStep1Props {
formData: LinkPaymentFormData;
@@ -25,9 +27,7 @@ export const LinkPaymentStep1 = ({ formData, setFormData }: LinkPaymentStep1Prop
};
const handleAmountChange = (value: string) => {
- // 숫자만 추출
const onlyNumbers = value.replace(/[^0-9]/g, '');
- // 빈 문자열이면 0, 아니면 숫자로 변환 (앞의 0 제거됨)
const numericValue = onlyNumbers === '' ? 0 : parseInt(onlyNumbers, 10);
setFormData({ ...formData, amount: numericValue });
};
@@ -93,13 +93,15 @@ export const LinkPaymentStep1 = ({ formData, setFormData }: LinkPaymentStep1Prop
diff --git a/src/entities/additional-service/ui/link-payment/apply/link-payment-step2.tsx b/src/entities/additional-service/ui/link-payment/apply/link-payment-step2.tsx
index fa5b4fc..15edb0f 100644
--- a/src/entities/additional-service/ui/link-payment/apply/link-payment-step2.tsx
+++ b/src/entities/additional-service/ui/link-payment/apply/link-payment-step2.tsx
@@ -1,7 +1,8 @@
-import {ProcessStep} from "@/entities/transaction/model/types";
-import {useSetOnBack} from "@/widgets/sub-layout/use-sub-layout";
+import { ProcessStep } from "@/entities/transaction/model/types";
+import { useSetOnBack } from "@/widgets/sub-layout/use-sub-layout";
import { IdentityType, Language } from '@/entities/additional-service/model/types'
import { LinkContentType, LinkPaymentFormData } from "@/entities/additional-service/model/link-pay/types";
+import { PatternFormat } from 'react-number-format';
export interface LinkPaymentStep2Props {
setProcessStep: ((processStep: ProcessStep) => void);
@@ -18,6 +19,7 @@ export const LinkPaymentStep2 = ({
setProcessStep(ProcessStep.One);
});
+
const handleInputChange = (field: string, value: string) => {
setFormData({ ...formData, [field]: value });
};
@@ -53,34 +55,39 @@ export const LinkPaymentStep2 = ({
-
-
구매자 이메일
-
-
handleInputChange('email', e.target.value)}
- />
+ {formData.sendMethod === 'EMAIL' &&
+
+
구매자 이메일
+
+ handleInputChange('email', e.target.value)}
+ />
+
-
+ }
-
-
구매자
휴대폰 번호
-
-
handleInputChange('phoneNumber', e.target.value)}
- />
+ {(formData.sendMethod === 'SMS' || formData.sendMethod === 'KAKAO') &&
+
+
구매자
휴대폰 번호
+
+ handleInputChange('phoneNumber', e.target.value)}
+ />
+
-
+ }
+
@@ -89,14 +96,16 @@ export const LinkPaymentStep2 = ({
handleIdendityTypeChange(IdentityType.INDIVIDUAL)}
+ className={`keyword-tag flex-1 ${formData.identityType === IdentityType.INDIVIDUAL ? 'active' : ''} ${!formData.isIdentity ? 'disabled' : ''}`}
+ onClick={() => formData.isIdentity && handleIdendityTypeChange(IdentityType.INDIVIDUAL)}
+ style={!formData.isIdentity ? { opacity: 0.5, cursor: 'not-allowed' } : {}}
>
개인
handleIdendityTypeChange(IdentityType.CORPORATE)}
+ className={`keyword-tag flex-1 ${formData.identityType === IdentityType.CORPORATE ? 'active' : ''} ${!formData.isIdentity ? 'disabled' : ''}`}
+ onClick={() => formData.isIdentity && handleIdendityTypeChange(IdentityType.CORPORATE)}
+ style={!formData.isIdentity ? { opacity: 0.5, cursor: 'not-allowed' } : {}}
>
법인
@@ -107,12 +116,31 @@ export const LinkPaymentStep2 = ({
diff --git a/src/pages/additional-service/account-holder-search/request-page.tsx b/src/pages/additional-service/account-holder-search/request-page.tsx
index f3da068..e156fd6 100644
--- a/src/pages/additional-service/account-holder-search/request-page.tsx
+++ b/src/pages/additional-service/account-holder-search/request-page.tsx
@@ -11,6 +11,8 @@ import {
import { useExtensionAccountHolderSearchRequestMutation } from '@/entities/additional-service/api/account-holder-search/use-extension-account-holder-search-reqeust-mutation';
import { ExtensionAccountHolderSearchRequestParams } from '@/entities/additional-service/model/account-holder-search/types';
import { useStore } from '@/shared/model/store';
+import { NumericFormat } from 'react-number-format';
+import { snackBar } from '@/shared/lib';
export const AccountHolderSearchRequestPage = () => {
const { navigate } = useNavigate();
@@ -48,11 +50,21 @@ export const AccountHolderSearchRequestPage = () => {
accountHolderSearchRequest(reuqestParams)
.then((response) => {
- console.log("계좌성명 조회 조회 신청 성공 응답: ", response.status)
- navigate(PATHS.additionalService.accountHolderSearch.list);
+ if (response.status) {
+ console.log("계좌성명 조회 조회 신청 성공 응답: ", response.status)
+ snackBar("계좌성명 조회 신청을 성공하였습니다.")
+ navigate(PATHS.additionalService.accountHolderSearch.list);
+ } else {
+ const errorMessage = response.error?.message || '계좌성명 조회 신청이 실패하였습니다.';
+ snackBar(`[실패] ${errorMessage}`);
+ }
})
.catch((error) => {
console.error("계좌성명 조회 조회 신청 실패: ", error)
+ const errorMessage = error?.response?.data?.error?.message ||
+ error?.message ||
+ '계좌성명 조회 신청 중 오류가 발생했습니다.';
+ snackBar(`[실패] ${errorMessage}`);
})
};
@@ -109,12 +121,19 @@ export const AccountHolderSearchRequestPage = () => {
diff --git a/src/pages/additional-service/ars/request-page.tsx b/src/pages/additional-service/ars/request-page.tsx
index 2313827..7c4e6f7 100644
--- a/src/pages/additional-service/ars/request-page.tsx
+++ b/src/pages/additional-service/ars/request-page.tsx
@@ -15,6 +15,7 @@ import { ArsPaymentMethod, ExtensionArsApplyParams, ExtensionArsApplyResponse }
import { ArsRequestSuccessPage } from './request-success-page';
import { useStore } from '@/shared/model/store';
import { snackBar } from '@/shared/lib';
+import { NumericFormat, PatternFormat } from 'react-number-format';
export const ArsRequestPage = () => {
const { navigate } = useNavigate();
@@ -58,17 +59,17 @@ export const ArsRequestPage = () => {
arsPaymentMethod: arsPaymentMethod,
};
arsApply(arsApplyParams)
- .then((rs: ExtensionArsApplyResponse) => {
- if (rs.status === true) {
- setSuccessPageOn(true);
- } else {
- const errorMessage = rs.error?.message || '신청을 실패하였습니다.';
- snackBar(`[실패] ${errorMessage}`);
- }
- })
- .catch((error) => {
- snackBar(`[실패] ${error?.response?.data?.message || error?.response?.data?.error?.message}` || '[실패] 신청을 실패하였습니다.')
- })
+ .then((rs: ExtensionArsApplyResponse) => {
+ if (rs.status === true) {
+ setSuccessPageOn(true);
+ } else {
+ const errorMessage = rs.error?.message || '신청을 실패하였습니다.';
+ snackBar(`[실패] ${errorMessage}`);
+ }
+ })
+ .catch((error) => {
+ snackBar(`[실패] ${error?.response?.data?.message || error?.response?.data?.error?.message}` || '[실패] 신청을 실패하였습니다.')
+ })
};
@@ -82,6 +83,11 @@ export const ArsRequestPage = () => {
return phoneRegex.test(phone);
};
+ const isValidEmail = (email: string) => {
+ const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
+ return emailRegex.test(email);
+ };
+
const isFormValid = () => {
return (
mid.trim() !== '' &&
@@ -164,16 +170,12 @@ export const ArsRequestPage = () => {
@@ -228,6 +230,8 @@ export const ArsRequestPage = () => {
value={email}
placeholder='test@nicepay.co.kr'
onChange={(e: ChangeEvent
) => setEamil(e.target.value)}
+ className={email && !isValidEmail(email) ? 'error' : ''}
+
/>
diff --git a/src/pages/additional-service/fund-account/transfer-detail-page.tsx b/src/pages/additional-service/fund-account/transfer-detail-page.tsx
index f5e69ef..c6b243f 100644
--- a/src/pages/additional-service/fund-account/transfer-detail-page.tsx
+++ b/src/pages/additional-service/fund-account/transfer-detail-page.tsx
@@ -54,8 +54,18 @@ export const FundAccountTransferDetailPage = () => {
seq: seq
};
extensionFundAccountTransferRequest(params).then((rs: ExtensionFundAccountTransferRequestResponse) => {
- callDetail();
- snackBar("이체요청을 성공하였습니다.")
+ if (rs.status) {
+ callDetail();
+ snackBar("이체요청을 성공하였습니다.")
+ } else {
+ const errorMessage = rs.error?.message || '이체요청이 실패하였습니다.';
+ snackBar(`[실패] ${errorMessage}`);
+ }
+ }).catch((error) => {
+ const errorMessage = error?.response?.data?.error?.message ||
+ error?.message ||
+ '이체요청 중 오류가 발생했습니다.';
+ snackBar(`[실패] ${errorMessage}`);
});
};
diff --git a/src/pages/additional-service/fund-account/transfer-request-page.tsx b/src/pages/additional-service/fund-account/transfer-request-page.tsx
index 2948874..7e0ab6c 100644
--- a/src/pages/additional-service/fund-account/transfer-request-page.tsx
+++ b/src/pages/additional-service/fund-account/transfer-request-page.tsx
@@ -31,7 +31,7 @@ export const FundAccountTransferRequestPage = () => {
const [depositParameter, setDepositParameter] = useState
('');
const { mutateAsync: extensionFundAccountRegist } = useExtensionFundAccountTransferRegistMutation();
-
+
useSetHeaderTitle('자금이체 이체등록');
useSetHeaderType(HeaderType.RightClose);
useSetFooterMode(false);
@@ -63,8 +63,14 @@ export const FundAccountTransferRequestPage = () => {
snackBar("이체등록을 성공하였습니다.")
resetForm();
} else {
- snackBar("이체등록이 실패하였습니다.")
+ const errorMessage = rs.error?.message || '이체등록이 실패하였습니다.';
+ snackBar(`[실패] ${errorMessage}`);
}
+ }).catch((error) => {
+ const errorMessage = error?.response?.data?.error?.message ||
+ error?.message ||
+ '이체등록 중 오류가 발생했습니다.';
+ snackBar(`[실패] ${errorMessage}`);
});
};
@@ -128,6 +134,10 @@ export const FundAccountTransferRequestPage = () => {
valueIsNumericString
allowNegative={false}
decimalScale={0}
+ isAllowed={(values) => {
+ const { value } = values;
+ return !value || value.length <= 14;
+ }}
onValueChange={(values) => setAccountNo(values.value)}
/>
@@ -138,7 +148,7 @@ export const FundAccountTransferRequestPage = () => {
) => setAccountName(e.target.value) }
+ onChange={(e: ChangeEvent) => setAccountName(e.target.value)}
/>
@@ -148,8 +158,12 @@ export const FundAccountTransferRequestPage = () => {
) => setAmount(parseInt(e.target.value))}
+ onValueChange={(values) => {
+ const { floatValue } = values;
+ setAmount(floatValue ?? 0);
+ }}
>
diff --git a/src/pages/additional-service/key-in-payment/requeset-page.tsx b/src/pages/additional-service/key-in-payment/requeset-page.tsx
index 4a0df26..4ab392e 100644
--- a/src/pages/additional-service/key-in-payment/requeset-page.tsx
+++ b/src/pages/additional-service/key-in-payment/requeset-page.tsx
@@ -15,12 +15,14 @@ import { overlay } from 'overlay-kit';
import { Dialog } from '@/shared/ui/dialogs/dialog';
import { useStore } from '@/shared/model/store';
import { snackBar } from '@/shared/lib';
+import { NumericFormat, PatternFormat } from 'react-number-format';
export const KeyInPaymentRequestPage = () => {
const { navigate } = useNavigate();
const location = useLocation();
const userMid = useStore.getState().UserStore.mid;
+ const midOptions = useStore.getState().UserStore.selectOptionsMids
const [mid, setMid] = useState(userMid || '');
const [productName, setProductName] = useState('');
@@ -79,50 +81,24 @@ export const KeyInPaymentRequestPage = () => {
};
keyInApply(keyInApplyParams).then((rs) => {
- console.log('결제 응답:', rs);
- if (rs.status) {
+ if (rs.data?.success) {
// 성공: 화면 유지 & 입력 내용 초기화
snackBar("KEY-IN 결제 신청을 성공하였습니다.")
resetForm();
} else {
// 실패: 화면 유지 & 입력 내용 유지
- showErrorDialog('결제에 실패했습니다. 입력 내용을 확인해주세요.');
+ const errorMessage = rs.data?.resultMessage || rs.error?.resultMessage || '결제 신청에 실패했습니다.';
+ // HTML 태그 제거
+ const cleanMessage = errorMessage.replace(/
/gi, ' ').trim();
+ snackBar(`[실패] ${cleanMessage}`);
}
}).catch((error) => {
console.error('결제 실패:', error);
- showErrorDialog(error?.message || '결제 요청 중 오류가 발생했습니다');
+ const errorMessage = error?.response?.data?.error?.resultMessage || error?.message || '결제 요청 중 오류가 발생했습니다';
+ snackBar(`[실패] ${errorMessage}`);
});
};
- const showSuccessDialog = () => {
- overlay.open(({ isOpen, close, unmount }) => {
- return (
-
- );
- });
- };
-
- const showErrorDialog = (errorMessage: string) => {
- overlay.open(({ isOpen, close, unmount }) => {
- return (
-
- );
- });
- };
const isValidPhoneNumber = (phone: string) => {
const phoneRegex = /^01[0|1|6|7|8|9][0-9]{7,8}$/;
@@ -139,24 +115,17 @@ export const KeyInPaymentRequestPage = () => {
cardNo3.length === 4 && cardNo4.length === 4;
};
- const isValidCardExpiration = () => {
- if (expMon.length !== 2 || expYear.length !== 2) {
- return false;
- }
- const month = parseInt(expMon);
- return month >= 1 && month <= 12;
- };
-
const isFormValid = () => {
return (
mid.trim() !== '' &&
productName.trim() !== '' &&
amount > 0 &&
customerName.trim() !== '' &&
+ expMon.trim() !== '' &&
+ expYear.trim() !== '' &&
isValidEmail(email) &&
isValidPhoneNumber(phoneNumber) &&
- isValidCardNumber() &&
- isValidCardExpiration()
+ isValidCardNumber()
);
};
@@ -174,11 +143,19 @@ export const KeyInPaymentRequestPage = () => {
@@ -196,17 +173,16 @@ export const KeyInPaymentRequestPage = () => {
@@ -227,7 +203,6 @@ export const KeyInPaymentRequestPage = () => {
) => setEmail(e.target.value)}
className={email && !isValidEmail(email) ? 'error' : ''}
/>
@@ -240,7 +215,7 @@ export const KeyInPaymentRequestPage = () => {
) => {
const onlyNumbers = e.target.value.replace(/[^0-9]/g, '');
setPhoneNumber(onlyNumbers);
@@ -256,92 +231,85 @@ export const KeyInPaymentRequestPage = () => {
@@ -354,8 +322,8 @@ export const KeyInPaymentRequestPage = () => {
value={instmnt}
onChange={(e: ChangeEvent) => setInstmnt(e.target.value)}
>
-
- {amount >= 50000 && (
+
+ {/* {amount >= 50000 && (
<>
@@ -369,7 +337,7 @@ export const KeyInPaymentRequestPage = () => {
>
- )}
+ )} */}
diff --git a/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx b/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx
index 1f3ae21..d637b5d 100644
--- a/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx
+++ b/src/pages/additional-service/link-payment/apply/link-payment-apply-confirm-page.tsx
@@ -5,7 +5,8 @@ import { useLocation } from 'react-router';
import { IMAGE_ROOT } from "@/shared/constants/common";
import { PATHS } from '@/shared/constants/paths';
import { useExtensionLinkPayRequestMutation } from '@/entities/additional-service/api/link-payment/use-extension-link-pay-request-mutation';
-import { ExtensionLinkPayRequestParams, LinkPaymentFormData } from '@/entities/additional-service/model/link-pay/types';
+import { ExtensionLinkPayRequestParams, ExtensionLinkPayRequestResponse, LinkPaymentFormData } from '@/entities/additional-service/model/link-pay/types';
+import { snackBar } from '@/shared/lib';
export const LinkPaymentApplyConfirmPage = () => {
const { navigate } = useNavigate();
@@ -40,17 +41,30 @@ export const LinkPaymentApplyConfirmPage = () => {
language: formData.language,
linkContentType: formData.linkContentType
};
-
- console.log("Link Payment 요청 파라미터: ", requestParams);
-
linkPayRequest(requestParams)
- .then((response) => {
- console.log("Link Payment 성공 응답: ", response);
- navigate(PATHS.additionalService.linkPayment.confirmSuccess);
+ .then((rs: ExtensionLinkPayRequestResponse) => {
+ if (rs.status) {
+ navigate(PATHS.additionalService.linkPayment.confirmSuccess);
+ } else {
+ // 응답은 성공했지만 status가 false인 경우
+ const validationErrors = rs.error?.details?.validationErrors;
+ if (validationErrors) {
+ // validation 에러 메시지들을 수집
+ const errorMessages = Object.values(validationErrors).join('\n');
+ snackBar(`[실패] ${errorMessages}`);
+ } else {
+ // 일반 에러 메시지
+ const errorMessage = rs.error?.message || '요청을 처리할 수 없습니다.';
+ snackBar(`[실패] ${errorMessage}`);
+ }
+ }
})
.catch((error) => {
- console.error("Link Payment 실패: ", error);
- // 에러 처리 로직 추가 가능
+ // 네트워크 에러 등 예외 상황
+ const errorMessage = error?.response?.data?.error?.message ||
+ error?.message ||
+ '요청 중 오류가 발생했습니다';
+ snackBar(`[실패] ${errorMessage}`);
});
};
@@ -66,18 +80,18 @@ export const LinkPaymentApplyConfirmPage = () => {
- 발송 메시지를
최종 확인하세요
+ 발송 메시지를
최종 확인하세요
- TEST 고객님, 안녕하세요?
- 나이스페이먼츠 주식회사에서
- 결제하실 내역 안내드립니다.
- 아래 URL로 접속하시면 상세 내역 확인과 결제 진행이 가능합니다.
- !${pay_url}
+ {formData.buyerName} 고객님, 안녕하세요?
+ 나이스페이먼츠 주식회사에서
+ 결제하실 내역 안내드립니다.
+ 아래 URL로 접속하시면 상세 내역 확인과 결제 진행이 가능합니다.
+ !${pay_url}
- 가맹점 상호 : 나이스페이먼츠 주식회사
- 상품명 : {formData.goodsName}
- 금액 : {formData.amount}원
+ 가맹점 상호 : 나이스페이먼츠 주식회사
+ 상품명 : {formData.goodsName}
+ 금액 : {formData.amount.toLocaleString()}원
diff --git a/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx b/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx
index 92cb394..7d9718f 100644
--- a/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx
+++ b/src/pages/additional-service/link-payment/apply/link-payment-apply-page.tsx
@@ -1,11 +1,11 @@
-import {useState} from 'react';
-import {LinkPaymentStep1} from '@/entities/additional-service/ui/link-payment/apply/link-payment-step1';
-import {LinkPaymentStep2} from '@/entities/additional-service/ui/link-payment/apply/link-payment-step2';
-import {HeaderType} from '@/entities/common/model/types';
-import {ProcessStep} from '@/entities/transaction/model/types';
-import {useSetFooterMode, useSetHeaderTitle, useSetHeaderType} from '@/widgets/sub-layout/use-sub-layout';
-import {useNavigate} from '@/shared/lib/hooks/use-navigate';
-import {PATHS} from "@/shared/constants/paths";
+import { useState } from 'react';
+import { LinkPaymentStep1 } from '@/entities/additional-service/ui/link-payment/apply/link-payment-step1';
+import { LinkPaymentStep2 } from '@/entities/additional-service/ui/link-payment/apply/link-payment-step2';
+import { HeaderType } from '@/entities/common/model/types';
+import { ProcessStep } from '@/entities/transaction/model/types';
+import { useSetFooterMode, useSetHeaderTitle, useSetHeaderType } from '@/widgets/sub-layout/use-sub-layout';
+import { useNavigate } from '@/shared/lib/hooks/use-navigate';
+import { PATHS } from "@/shared/constants/paths";
import { IdentityType, Language } from '@/entities/additional-service/model/types';
import { LinkContentType, LinkPaymentFormData, LinkPaymentSendMethod } from '@/entities/additional-service/model/link-pay/types';
import { useStore } from '@/shared/model/store';
@@ -14,25 +14,25 @@ import moment from 'moment';
export const LinkPaymentApplyPage = () => {
- const { navigate } = useNavigate();
- const userMid = useStore.getState().UserStore.mid;
- const [processStep, setProcessStep] = useState(ProcessStep.One);
- const [formData, setFormData] = useState({
- mid: userMid,
- sendMethod: LinkPaymentSendMethod.SMS,
- goodsName: '',
- amount: 0,
- moid: '',
- paymentLimitDate: moment().format('YYYY.MM.DD'),
- buyerName: '',
- email: '',
- phoneNumber: '',
- isIdentity: false,
- identityType: IdentityType.INDIVIDUAL,
- identityValue: '',
- language: Language.KR,
- linkContentType: LinkContentType.BASIC
- });
+ const { navigate } = useNavigate();
+ const userMid = useStore.getState().UserStore.mid;
+ const [processStep, setProcessStep] = useState(ProcessStep.One);
+ const [formData, setFormData] = useState({
+ mid: userMid,
+ sendMethod: LinkPaymentSendMethod.SMS,
+ goodsName: '',
+ amount: 0,
+ moid: '',
+ paymentLimitDate: moment().format('YYYY.MM.DD'),
+ buyerName: '',
+ email: '',
+ phoneNumber: '',
+ isIdentity: false,
+ identityType: IdentityType.INDIVIDUAL,
+ identityValue: '',
+ language: Language.KR,
+ linkContentType: LinkContentType.BASIC
+ });
useSetHeaderTitle('링크결제 신청');
useSetHeaderType(HeaderType.LeftArrow);
@@ -64,15 +64,11 @@ export const LinkPaymentApplyPage = () => {
// Step2 필수 필드 검증
const isStep2Valid = () => {
- const basicFieldsValid = (
- formData.buyerName.trim() !== '' &&
- formData.email.trim() !== '' &&
- isValidEmail(formData.email) &&
- formData.phoneNumber.trim() !== '' &&
- isValidPhoneNumber(formData.phoneNumber)
- );
- // isIdentity가 true면 identityValue도 필수
+ const basicFieldsValid = formData.sendMethod === 'EMAIL'
+ ? formData.email.trim() !== '' && isValidEmail(formData.email)
+ : formData.buyerName.trim() !== '' && formData.phoneNumber.trim() !== '' && isValidPhoneNumber(formData.phoneNumber);
+
if (formData.isIdentity) {
return basicFieldsValid && formData.identityValue.trim() !== '';
}
@@ -85,14 +81,14 @@ export const LinkPaymentApplyPage = () => {
};
const onClickToChangeTab = () => {
- if(processStep === ProcessStep.One) {
- setProcessStep(ProcessStep.Two);
- }
- else if(processStep === ProcessStep.Two) {
- navigate(PATHS.additionalService.linkPayment.requestConfirm, {
- state: { formData }
- });
- }
+ if (processStep === ProcessStep.One) {
+ setProcessStep(ProcessStep.Two);
+ }
+ else if (processStep === ProcessStep.Two) {
+ navigate(PATHS.additionalService.linkPayment.requestConfirm, {
+ state: { formData }
+ });
+ }
};
return (
@@ -103,62 +99,62 @@ export const LinkPaymentApplyPage = () => {
- {(processStep === ProcessStep.One) &&
-
- }
- {(processStep === ProcessStep.Two) &&
-
- }
+ {(processStep === ProcessStep.One) &&
+
+ }
+ {(processStep === ProcessStep.Two) &&
+
+ }
- {(processStep === ProcessStep.One) &&
-
- }
- { (processStep === ProcessStep.Two) &&
-
- }
-
-
{(processStep === ProcessStep.One) &&
-
-
-
+
}
{(processStep === ProcessStep.Two) &&
-
-
-
-
+
}
+
+
+ {(processStep === ProcessStep.One) &&
+
+
+
+ }
+ {(processStep === ProcessStep.Two) &&
+
+
+
+
+ }
-
+
>
);
};
\ No newline at end of file
diff --git a/src/pages/additional-service/link-payment/link-payment-wait-detail-page.tsx b/src/pages/additional-service/link-payment/link-payment-wait-detail-page.tsx
index 832b2c8..908d261 100644
--- a/src/pages/additional-service/link-payment/link-payment-wait-detail-page.tsx
+++ b/src/pages/additional-service/link-payment/link-payment-wait-detail-page.tsx
@@ -26,7 +26,7 @@ export const LinkPaymentWaitDetailPage = () => {
const [titleInfo, setTitleInfo] = useState();
const [paymentInfo, setPaymentInfo] = useState();
- useSetHeaderTitle('링크결제 상세_발송대기');
+ useSetHeaderTitle('링크결제 상세 발송대기');
useSetHeaderType(HeaderType.RightClose);
useSetOnBack(() => {
navigate(PATHS.additionalService.linkPayment.pendingSend);
@@ -56,23 +56,14 @@ export const LinkPaymentWaitDetailPage = () => {
}
linkPayWaitDelete(deleteParam)
.then((rs) => {
- onClickToNavigate(PATHS.additionalService.linkPayment.pendingSend)
+ callDetail();
snackBar("삭제를 성공하였습니다.")
})
.catch((error) => {
- console.error("Resend 실패: ", error);
snackBar(`[실패] ${error?.response?.data?.message}`)
});
}
- const onClickToNavigate = (path: string) => {
- let timeout = setTimeout(() => {
- clearTimeout(timeout);
- navigate(PATHS.additionalService.linkPayment.pendingSend, {
- });
- }, 10)
- };
-
const onClickToCancel = () => {
let msg = '삭제 하시겠습니까?';
diff --git a/src/pages/additional-service/payout/list-page.tsx b/src/pages/additional-service/payout/list-page.tsx
index af7fb8a..97e42c6 100644
--- a/src/pages/additional-service/payout/list-page.tsx
+++ b/src/pages/additional-service/payout/list-page.tsx
@@ -50,8 +50,8 @@ export const PayoutListPage = () => {
const [fromDate, setFromDate] = useState(moment().format('YYYYMMDD'));
const [toDate, setToDate] = useState(moment().format('YYYYMMDD'));
const [status, setStatus] = useState(PayoutDisbursementStatus.ALL);
- const [minAmount, setMinAmount] = useState(0);
- const [maxAmount, setMaxAmount] = useState(50000000);
+ const [minAmount, setMinAmount] = useState();
+ const [maxAmount, setMaxAmount] = useState();
const [emailBottomSheetOn, setEmailBottomSheetOn] = useState(false);
const { mutateAsync: extensionPayoutList } = useExtensionPayoutListMutation();
diff --git a/src/pages/additional-service/payout/request-page.tsx b/src/pages/additional-service/payout/request-page.tsx
index 9ce9f38..6902423 100644
--- a/src/pages/additional-service/payout/request-page.tsx
+++ b/src/pages/additional-service/payout/request-page.tsx
@@ -44,13 +44,17 @@ export const PayoutRequestPage = () => {
settlementDate: settlementDate,
};
extensionPayoutRequest(params)
- .then((rs) => {
- snackBar("신청을 성공하였습니다.")
- })
- .catch((error) => {
- snackBar(`[실패] ${error?.response?.data?.message} `|| '[실패] 신청을 실패하였습니다.')
- })
- ;
+ .then((rs) => {
+ if (rs.status) {
+ snackBar("신청을 성공하였습니다.")
+ } else {
+ snackBar(`[실패] ${rs.error?.message}`)
+ }
+ })
+ .catch((error) => {
+ snackBar(`[실패] ${error?.response?.data?.message} ` || '[실패] 신청을 실패하였습니다.')
+ })
+ ;
};
const isFormValid = () => {
@@ -90,9 +94,13 @@ export const PayoutRequestPage = () => {
) => setDisbursementAmount(parseInt(e.target.value))}
- >
+ onValueChange={(values) => {
+ const { floatValue } = values;
+ setDisbursementAmount(floatValue ?? 0);
+ }}
+ />
@@ -102,8 +110,7 @@ export const PayoutRequestPage = () => {