
새로운 주문이 생성되면서 주문의 하위 거래(결제, 취소 등)도 생성결제 요청 저장을 위해 주로 2회 트랜잭션으로 처리주문 : 거래(트랜잭션) = 1:N 관계 \- 결제 트랜잭션은 N개, 취소 트랜잭션은 M개트랜잭션의 종류로 구분 : 결제, 취소, 망취소가맹점 - 결제

Spring Initializr -> Name 설정, Language Kotlin으로 변경, Type Gradle-Kotlin으로 변경 -> NextSpring Data JPA : ORM 도구Spring Web : Spring MVC 패턴을 이용해 웹 어플리케이션을 개
먼저 domain이라는 패키지를 하나 만들어줍니다! (도메인관련 클래스)엔티티 클래스를 구성하기 전 엔티티에서 공통적으로 많이쓰이는 id, createdAt, updatedAt 필드를 추상 클래스로 만들었습니다.@MappedSuperclass : 직접 엔티티로 매핑되지

: 결제 API의 컨트롤러 역할을 하며, 클라이언트의 요청을 받아 처리하는 부분private val paymentService: PaymentService : kotlin에서는 클래스 선언 시 괄호 안에 생성자를 정의하므로 PaymentService는 생성자 주입 방식
결제 요청을 처리해주는 service 클래스를 만들어보겠습니다.@Service 어노테이션으로 서비스 레이어 컴포넌트를 나타냄private val paymentStatusService: PaymentStatusService 를 생성자에 작성하여 자동으로 의존성 주입되도록
외부서비스(계좌 관련 서비스)와 통신하기 위해 FeignClient 라이브러리를 사용하겠습니다.라이브러리 사용을 위해 build.gradle.kts에 의존성을 추가합니다.PaymentApplication에도 어노테이션을 추가해줍니다.Spring Cloud OpenFei
외부시스템(계좌)을 연결했으니 계좌에 금액 사용 요청을 하는 로직을 구성해보겠습니다.먼저 성공일 경우 저장하는 로직을 살펴보겠습니다.PaymentSerice.kt의 전체 코드는 위와 같으면 하나씩 살펴보겠습니다!1\. paymentStatusService 에서 저장한

요청에 대한 테스트 코드를 작성해보겠습니다.테스트 코드를 작성할 클래스 { 뒤에서 Shift + Command + T 를 누르면 테스트 코드로 바로 갈 수 있습니다. 만약에 작성된 테스트코드가 없다면 Create New Test를 눌러 새로운 테스트 코드를 작성해주시면
controller에 paymentService의 거래요청을 연결해보겠습니다. 전에 return PayResponse("p1", 100, "txId", LocalDateTime.now()) 이라고 정적으로 테스트해놓았던 코드를 실제 서비스로직과 연결하겠습니다. Pa