| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- 'use client';
- import '../style.scss';
- import { useSearchParams } from 'next/navigation';
- // 토스 SDK 에러 코드 → 사용자 친화 안내 (미매핑 코드는 토스가 전달한 message 사용)
- const CODE_MESSAGES: Record<string, string> = {
- PAY_PROCESS_CANCELED: '결제를 취소했습니다.',
- PAY_PROCESS_ABORTED: '결제가 중단되었습니다. 다시 시도해주세요.',
- REJECT_CARD_COMPANY: '카드사에서 결제를 거절했습니다. 다른 결제수단을 이용해주세요.',
- USER_CANCEL: '결제를 취소했습니다.'
- };
- export default function ChargeFailPage()
- {
- const searchParams = useSearchParams();
- const code = searchParams.get('code') || '';
- const rawMessage = searchParams.get('message') || '';
- const message = CODE_MESSAGES[code] || rawMessage || '결제가 취소되었거나 실패했습니다.';
- const handleRetry = () => {
- window.location.href = '/charge';
- };
- const handleClose = () => {
- if (window.opener) {
- window.close();
- } else {
- window.location.href = '/';
- }
- };
- return (
- <div className="charge-page">
- <div className="charge-page__card">
- <div className="charge-page__result">
- <div className="charge-page__result-icon charge-page__result-icon--error">✕</div>
- <p className="charge-page__result-message">{message}</p>
- {code && <p className="charge-page__result-code">오류 코드: {code}</p>}
- <button type="button" className="charge-page__submit" onClick={handleRetry}>
- 다시 충전하기
- </button>
- <button type="button" className="charge-page__reset" onClick={handleClose}>
- 닫기
- </button>
- </div>
- </div>
- </div>
- );
- }
|