-Key In 결제 요청 카드번호 4자 제한

- SMS 결제통보 필드 변경 수정
This commit is contained in:
HyeonJongKim
2025-11-05 17:18:58 +09:00
parent b3bdd440ba
commit f1f38551fa
6 changed files with 31 additions and 38 deletions

View File

@@ -15,6 +15,7 @@ export enum SmsPaymentSearchCl {
export interface SmsPaymentListItem {
mid?: string;
tid?: string;
seq?: number;
buyerName?: string;
buyerPhoneLast4?: string;
sendDate?: string;
@@ -28,7 +29,7 @@ export interface SmsPaymentListProps {
listItems: Array<ListItemProps>;
additionalServiceCategory: AdditionalServiceCategory;
mid: string;
onResendClick?: (mid: string, tid: string) => void;
onResendClick?: (seq: number) => void;
}
export interface SmsPaymentFilterProps extends FilterProps {
@@ -71,24 +72,18 @@ export interface ExtensionSmsDetailResponse {
sendMessage: string;
}
export interface ExtensionSmsResendParams extends ExtensionRequestParams {
tid: string;
sendMessage: string;
}
export interface SmsPaymentDetailResendProps {
bottomSmsPaymentDetailResendOn: boolean;
setBottomSmsPaymentDetailResendOn: (bottomSmsPaymentDetailResendOn: boolean) => void;
smsDetailData: ExtensionSmsDetailResponse | null;
mid: string;
tid: string;
seq: number;
}
// SMS 결제알림 확장 서비스
// ========================================
export interface ExtensionSmsResendParams extends ExtensionRequestParams {
tid: string;
export interface ExtensionSmsResendParams {
seq: number;
sendMessage: string;
}
export interface ExtensionSmsResendResponse {
@@ -139,6 +134,6 @@ export interface ExtensionSmsDownloadExcelResponse {
}
export interface ExtensionSmsDetailParams extends ExtensionRequestParams {
tid: string;
export interface ExtensionSmsDetailParams {
seq: number;
}

View File

@@ -195,7 +195,7 @@ export interface ListItemProps extends
additionalServiceCategory?: AdditionalServiceCategory;
mid?: string;
seq?: number;
onResendClick?: (mid: string, tid: string) => void;
onResendClick?: (seq: number) => void;
setDetailData?: (detailData: DetailData) => void;
}
@@ -204,7 +204,7 @@ export interface ListDateGroupProps {
date?: string;
items?: Array<ListItemProps>;
mid?: string;
onResendClick?: (mid: string, tid: string) => void;
onResendClick?: (seq: number) => void;
setDetailData?: (detailData: DetailData) => void;
}

View File

@@ -608,7 +608,7 @@ export const ListItem = ({
<div
key="sms-payment-amount"
className={`status-label success`}
onClick={() => mid && onResendClick(mid, tid || '')}
onClick={() => seq && onResendClick(seq)}
>{t('additionalService.common.resend')}</div>
)
}

View File

@@ -10,8 +10,7 @@ export const SmsPaymentDetailResend = ({
bottomSmsPaymentDetailResendOn,
setBottomSmsPaymentDetailResendOn,
smsDetailData,
mid,
tid
seq
}: SmsPaymentDetailResendProps) => {
const { t } = useTranslation();
@@ -29,18 +28,18 @@ export const SmsPaymentDetailResend = ({
}
resendMessage({
mid: mid,
tid: tid,
seq: seq,
sendMessage: smsDetailData.sendMessage
}).then((rs) => {
if (rs.status) {
snackBar(t('additionalService.sms.sendSuccess'))
setBottomSmsPaymentDetailResendOn(false)
} else {
snackBar(t('additionalService.sms.sendFailed', { message: rs.error?.message }))
}
setBottomSmsPaymentDetailResendOn(false);
}).catch((error) => {
snackBar(t('additionalService.sms.sendFailed', { message: error?.response?.data?.message || error?.response?.data?.error?.message }) || t('additionalService.sms.sendFailedGeneric'))
setBottomSmsPaymentDetailResendOn(false)
});
}

View File

@@ -124,8 +124,14 @@ export const KeyInPaymentRequestPage = () => {
};
const isValidCardNumber = () => {
return cardNo1.length === 4 && cardNo2.length === 4 &&
cardNo3.length === 4 && cardNo4.length === 4;
// 실제 숫자만 추출 (포맷팅 문자 제거)
const cleanCardNo1 = cardNo1.replace(/\D/g, '');
const cleanCardNo2 = cardNo2.replace(/\D/g, '');
const cleanCardNo3 = cardNo3.replace(/\D/g, '');
const cleanCardNo4 = cardNo4.replace(/\D/g, '');
return cleanCardNo1.length === 4 && cleanCardNo2.length === 4 &&
cleanCardNo3.length === 4 && cleanCardNo4.length === 4;
};
const isFormValid = () => {

View File

@@ -24,6 +24,7 @@ import { PATHS } from '@/shared/constants/paths';
import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet';
import { useExtensionAccessCheck } from '@/shared/lib/hooks/use-extension-access-check';
import useIntersectionObserver from '@/widgets/intersection-observer';
import { set } from 'lodash-es';
export const SmsPaymentPage = () => {
const { t } = useTranslation();
@@ -42,8 +43,7 @@ export const SmsPaymentPage = () => {
const [pageParam, setPageParam] = useState<DefaultRequestPagination>(DEFAULT_PAGE_PARAM);
const [filterOn, setFilterOn] = useState<boolean>(false);
const [mid, setMid] = useState<string>(userMid);
const [selectedTid, setSelectedTid] = useState<string>('');
const [selectedMid, setSelectedMid] = useState<string>('');
const [seq, setSeq] = useState<number>(0);
const [searchCl, setSearchCl] = useState<SmsPaymentSearchCl>(SmsPaymentSearchCl.BUYER_NAME)
const [searchValue, setSearchValue] = useState<string>('')
const [fromDate, setFromDate] = useState(moment().format('YYYYMMDD'));
@@ -51,9 +51,6 @@ export const SmsPaymentPage = () => {
const [smsCl, setSmsCl] = useState<SmsCl>(SmsCl.ALL);
const [smsDetailData, setSmsDetailData] = useState<ExtensionSmsDetailResponse | null>(null);
const [emailBottomSheetOn, setEmailBottomSheetOn] = useState<boolean>(false);
const [detailOn, setDetailOn] = useState<boolean>(false);
const [detailTid, setDetailTid] = useState<string>('');
const [detailServiceCode, setDetailServiceCode] = useState<string>('');
const { mutateAsync: smsPaymentList } = useExtensionSmsListMutation();
const { mutateAsync: downloadExcel } = useExtensionSmsDownloadExcelMutation();
@@ -129,11 +126,9 @@ export const SmsPaymentPage = () => {
});
}
const callDetail = (selectedMid: string, selectedTid: string) => {
console.log('Selected Mid: ', selectedMid, 'Selected Tid: ', selectedTid);
const callDetail = (selectedSeq:number) => {
detail({
mid: selectedMid,
tid: selectedTid
seq: selectedSeq
}).then((rs) => {
setSmsDetailData(rs);
})
@@ -165,10 +160,9 @@ export const SmsPaymentPage = () => {
};
const onClickToShowDetail = (itemMid: string, itemTid: string) => {
setSelectedMid(itemMid);
setSelectedTid(itemTid);
callDetail(itemMid, itemTid);
const onClickToShowDetail = (selectedSeq: number) => {
setSeq(selectedSeq);
callDetail(selectedSeq);
setBottomSmsPaymentDetailResendOn(true);
};
@@ -239,8 +233,7 @@ export const SmsPaymentPage = () => {
bottomSmsPaymentDetailResendOn={bottomSmsPaymentDetailResendOn}
setBottomSmsPaymentDetailResendOn={setBottomSmsPaymentDetailResendOn}
smsDetailData={smsDetailData}
mid={selectedMid}
tid={selectedTid}
seq={seq}
></SmsPaymentDetailResend>
<SmsPaymentFilter