## 📊 개발 단계 및 우선순위 - [x] `P1` : 운영 및 확장 기능 ## 🎯 도메인 연관 관계 및 완료 조건 - [x] `연관 도메인` : payment, enrollment, subscription - [ ] `설명` : 토스페이먼츠 환불 API 호출 후 Payment(REFUNDED) + Enrollment(REFUNDED) 상태 변경 ## 💻 상세 작업 내용 - [ ] `Model / Policy` : Payment 환불 정책, Enrollment 환불 상태 전이 - [ ] `UseCase / Command` : RefundPaymentCommand - [ ] `Service` : 환불 처리 서비스 (강의 환불 / 구독 환불 분기) - [ ] `Port / Adapter` : TossPaymentsAdapter.cancel() - [ ] `Repository` : PaymentRepository, EnrollmentRepository - [ ] `Controller` : POST /api/payments/{paymentId}/refund - [ ] `response / request` : RefundRequest, RefundResponse ## 🚨 검증 및 예외 처리 (TestCode) - [ ] 정상 환불 시 Payment(REFUNDED) + Enrollment(REFUNDED) 확인 - [ ] 이미 환불된 결제 재환불 시 예외 발생 - [ ] 토스 환불 API 실패 시 상태 변경 롤백 확인 ## 🔗 참고 자료
📊 개발 단계 및 우선순위
P1: 운영 및 확장 기능🎯 도메인 연관 관계 및 완료 조건
연관 도메인: payment, enrollment, subscription설명: 토스페이먼츠 환불 API 호출 후 Payment(REFUNDED) + Enrollment(REFUNDED) 상태 변경💻 상세 작업 내용
Model / Policy: Payment 환불 정책, Enrollment 환불 상태 전이UseCase / Command: RefundPaymentCommandService: 환불 처리 서비스 (강의 환불 / 구독 환불 분기)Port / Adapter: TossPaymentsAdapter.cancel()Repository: PaymentRepository, EnrollmentRepositoryController: POST /api/payments/{paymentId}/refundresponse / request: RefundRequest, RefundResponse🚨 검증 및 예외 처리 (TestCode)
🔗 참고 자료