using SharedKernel.Results; namespace Application.Abstractions.Kyc; /// /// NICE 통합인증 API 클라이언트. (token / url / result 3개 endpoint 호출 + 복호화) /// /// 가이드: .claude/plan/nice-auth-integration.md /// public interface INiceAuthClient { /// /// access_token 발급 (24시간 유효 — 내부에서 Redis 캐시). /// 운영자는 직접 호출할 일 거의 없음 — RequestAuthUrl/GetResult 가 내부에서 호출. /// Task> GetTokenAsync(CancellationToken ct); /// /// 표준창에 띄울 auth_url 발급. transaction_id 는 10분 유효. /// 가맹점은 응답의 (AuthUrl, TransactionId, RequestNo, Ticket, Iterators) 를 NiceAuthSession 에 저장. /// /// /// 가맹점 NiceAuthSession.SessionToken. NICE return_url path segment 로 embed 되어 callback 매칭에 사용. /// (Backend 가 NiceAuthOptions.ReturnUrl base 에 자동 append) /// Task> RequestAuthUrlAsync(string sessionToken, CancellationToken ct); /// /// NICE 표준창 인증 완료 후 result 호출 + 복호화. 성공 시 사용자 정보 반환. /// /// ticket / iterators 는 시점 token 발급의 값 /// (NiceAuthSession 에 보관한 값) 을 그대로 전달해야 함. /// Task> GetResultAsync( string requestNo, string transactionId, string webTransactionId, string ticket, int iterators, CancellationToken ct); }