| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- using SharedKernel.Results;
- namespace Infrastructure.Kyc.Nice;
- /// <summary>
- /// NICE result_code → DPOT <see cref="Error"/> 매핑. 가이드 §4 응답 코드 + Handler 매핑 정책.
- /// 사용자에게 보일 메시지는 친절한 한국어로. 시스템 오류는 통합해서 일반 메시지로.
- /// </summary>
- internal static class NiceErrorMap
- {
- /// <summary>
- /// <paramref name="resultCode"/> 가 "0000" 일 때 호출하면 안 됨 (caller 가 success 처리).
- /// </summary>
- /// <param name="operation">"token" / "url" / "result" — 에러 코드 prefix 구성용.</param>
- public static Error Map(string? resultCode, string operation)
- {
- switch (resultCode)
- {
- // ── 사용자 직접 원인 ───────────────────────────────────
- case "3032":
- case "3033":
- return Error.Problem(
- "Nice.AuthFailedOrExpired",
- "본인인증에 실패했거나 유효시간이 만료되었습니다. 다시 시도해 주세요.");
- // ── 토큰 만료/유효성 (caller 가 cache 무효화 + 재시도 가능) ─
- case "1003":
- case "1004":
- case "3043":
- return Error.Problem(
- "Nice.TokenInvalid",
- "본인인증 서비스 인증이 만료되었습니다. 다시 시도해 주세요.");
- // ── 가맹점 설정 문제 (운영자 알림 대상) ─────────────────
- case "1007":
- return Error.Forbidden(
- "Nice.IpNotAllowed",
- "본인인증 서비스 설정에 문제가 있습니다. 관리자에게 문의해 주세요.");
- case "1008":
- return Error.Problem(
- "Nice.RateLimited",
- "본인인증 서비스 요청이 일시적으로 많습니다. 잠시 후 다시 시도해 주세요.");
- case "1006":
- case "1009":
- case "1012":
- return Error.Forbidden(
- "Nice.PermissionDenied",
- "본인인증 서비스 권한 설정에 문제가 있습니다. 관리자에게 문의해 주세요.");
- // ── 무결성/위변조 (운영자 알림 대상) ───────────────────
- case "3025":
- case "3027":
- case "9402":
- return Error.Problem(
- "Nice.IntegrityFailed",
- "본인인증 응답 검증에 실패했습니다. 다시 시도해 주세요.");
- // ── 정보 없음 (transaction expired or mismatched) ──────
- case "3029":
- return Error.NotFound(
- "Nice.NotFound",
- "본인인증 정보를 찾을 수 없습니다. 다시 시도해 주세요.");
- // ── 응답 자체 없음 ─────────────────────────────────────
- case null:
- case "":
- return Error.Problem(
- "Nice.NoResponse",
- "본인인증 서버 응답이 없습니다. 잠시 후 다시 시도해 주세요.");
- // ── 기타 시스템 오류 ───────────────────────────────────
- default:
- return Error.Problem(
- $"Nice.{operation}.{resultCode}",
- "본인인증 처리 중 일시적인 문제가 발생했습니다. 잠시 후 다시 시도해 주세요.");
- }
- }
- }
|