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 0974aba..5cacbfe 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
@@ -131,9 +131,14 @@ export const LinkPaymentStep1 = ({ formData, setFormData }: LinkPaymentStep1Prop
handleInputChange('moid', e.target.value)}
+ onChange={(e) => {
+ // 영문자와 숫자만 허용 (한글, 특수문자 제거)
+ const cleanedValue = e.target.value.replace(/[^a-zA-Z0-9]/g, '');
+ handleInputChange('moid', cleanedValue);
+ }}
onFocus={handleInputFocus}
/>
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 2a827f4..d7f25d0 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
@@ -91,7 +91,9 @@ export const LinkPaymentApplyConfirmPage = () => {
};
const onClickToBack = () => {
- navigate(-1);
+ navigate(PATHS.additionalService.linkPayment.request, {
+ state: { formData, returnToStep: 2 }
+ });
};
return (
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 2752cea..8aa276b 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
@@ -11,12 +11,14 @@ import { IdentityType, Language } from '@/entities/additional-service/model/type
import { LinkContentType, LinkPaymentFormData, LinkPaymentSendMethod } from '@/entities/additional-service/model/link-pay/types';
import { useStore } from '@/shared/model/store';
import moment from 'moment';
+import { useLocation } from 'react-router';
export const LinkPaymentApplyPage = () => {
const { t } = useTranslation();
const { navigate } = useNavigate();
+ const location = useLocation();
const midOptionsWithoutGids = useStore.getState().UserStore.selectOptionsMidsWithoutGids;
const userMid = useStore.getState().UserStore.mid;
@@ -27,23 +29,31 @@ export const LinkPaymentApplyPage = () => {
});
const initialMid = (midItem.length > 0) ? userMid : (midOptionsWithoutGids.length > 0 ? midOptionsWithoutGids[0]?.value || '' : '');
- const [processStep, setProcessStep] = useState(ProcessStep.One);
- const [formData, setFormData] = useState({
- mid: initialMid,
- 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
- });
+ // location.state에서 formData와 returnToStep 받기
+ const savedFormData = location.state?.formData;
+ const returnToStep = location.state?.returnToStep;
+
+ const [processStep, setProcessStep] = useState(
+ returnToStep === 2 ? ProcessStep.Two : ProcessStep.One
+ );
+ const [formData, setFormData] = useState(
+ savedFormData || {
+ mid: initialMid,
+ 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(t('additionalService.linkPayment.applyTitle'));
useSetHeaderType(HeaderType.LeftArrow);
diff --git a/src/shared/ui/assets/css/style-fix.css b/src/shared/ui/assets/css/style-fix.css
index eec6083..512b265 100644
--- a/src/shared/ui/assets/css/style-fix.css
+++ b/src/shared/ui/assets/css/style-fix.css
@@ -579,6 +579,34 @@ main.pop{
object-fit: contain;
}
+/* 링크결제 확인 페이지 */
+main.pop {
+ height: 100vh;
+ overflow: hidden;
+ display: flex;
+ flex-direction: column;
+}
+
+main.pop .sub-wrap {
+ flex: 1;
+ overflow-y: auto;
+ overflow-x: hidden;
+ padding-bottom: 120px;
+ -webkit-overflow-scrolling: touch;
+}
+
+main.pop .preview-body {
+ max-width: 338px;
+ width: 100%;
+ min-height: auto;
+}
+
+main.pop .apply-row {
+ position: fixed;
+ bottom: 0;
+ flex-shrink: 0;
+}
+
.resend-text {
word-break: break-all !important;
}