import { HeaderType } from '@/entities/common/model/types'; import { useSetFooterMode, useSetHeaderTitle, useSetHeaderType } from '@/widgets/sub-layout/use-sub-layout'; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; 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, ExtensionLinkPayRequestResponse, LinkPaymentFormData } from '@/entities/additional-service/model/link-pay/types'; import { snackBar } from '@/shared/lib'; export const LinkPaymentApplyConfirmPage = () => { const { navigate } = useNavigate(); const location = useLocation(); const formData: LinkPaymentFormData = location.state?.formData; const { mutateAsync: linkPayRequest } = useExtensionLinkPayRequestMutation(); useSetHeaderTitle('메시지 미리보기'); useSetHeaderType(HeaderType.LeftArrow); useSetFooterMode(false); const onClickToConfirm = () => { if (!formData) { console.error('Form data is missing'); return; } const requestParams: ExtensionLinkPayRequestParams = { mid: formData.mid, sendMethod: formData.sendMethod, goodsName: formData.goodsName, amount: formData.amount, moid: formData.moid, paymentLimitDate: formData.paymentLimitDate.replace(/\./g, ''), buyerName: formData.buyerName, email: formData.email, phoneNumber: formData.phoneNumber, isIdentity: formData.isIdentity, identityType: formData.identityType, identityValue: formData.identityValue, language: formData.language, linkContentType: formData.linkContentType }; linkPayRequest(requestParams) .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) => { // 네트워크 에러 등 예외 상황 const errorMessage = error?.response?.data?.error?.message || error?.message || '요청 중 오류가 발생했습니다'; snackBar(`[실패] ${errorMessage}`); }); }; const onClickToBack = () => { navigate(-1); }; return ( <>

발송 메시지를
최종 확인하세요

{formData.buyerName} 고객님, 안녕하세요?
나이스페이먼츠 주식회사에서
결제하실 내역 안내드립니다.
아래 URL로 접속하시면 상세 내역 확인과 결제 진행이 가능합니다.

!${pay_url}

가맹점 상호 : 나이스페이먼츠 주식회사
상품명 : {formData.goodsName}
금액 : {formData.amount.toLocaleString()}원

); };