-
Notifications
You must be signed in to change notification settings - Fork 5
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[FEATURE] : 토스페이먼츠 결제 API를 구현합니다. #62
Open
na0th
wants to merge
22
commits into
TaskSprints:develop
Choose a base branch
from
na0th:auction_product
base: develop
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- 변경 내용 1 : PrePersist 함수 삭제 - 변경 내용 2 : viewCount null 체크 삭제 - 변경 내용 3 : viewCount Long -> long 이유 : Long을 쓰면 null을 고려해야 하지만, long을 쓰면 null을 고려할 필요가 없어짐
-변경 사항 1 : 페이징 카운트 처리에서 생겼던 전체 size를 잘못 계산하던 에러 수정
- 추가한 내용 : 1. Payment 엔티티 구성 2. payment 관련 enum Type 구성 - payStatus, payType 3. payment DTO 구성 4. Payment 관련 api 메세지 구성
- 추가한 내용 : 1. controller, service, repository 레이어 구성 2. orderId, amount를 세션에 임시 저장하는 엔드포인트 구성
👏👏👏 |
- 추가한 내용 : 1. wallet 엔티티 구성 2. wallet 컨트롤러, 서비스, 레포지터리 레이어 구성 3. user 엔티티와 wallet 엔티티간 양방향 관계 설정 및 연관관계 편의 메서드 구현 -> 연관 관계 주인 쪽 user에서 처리 4. wallet 엔티티와 payment 엔티티간 양방향 관계 설정 및 연관관계 편의 메서드 구현 -> 연관 관계 주인 쪽 payment에서 처리 미완 : 1. user 엔티티 create 시에 wallet도 생성되게 처리 해야 한다. 2. wallet 의 식별자를 uuid로 해야 할지 고민해야 함.
-추가된 내용 : 1. 세션에 orderId, amount 값을 임시 저장한 것이 제대로 저장되었는지 테스트 이유 : 결제 최종 승인 요청 전에 값이 변조되지 않았는지 검증하기 위함 미흡 : 결제 요청 받았을 때, 세션에 값이 저장되지 않았을 경우에 대한 예외 처리 미완 테스트 코드에 대한 부족함이 느껴져 찜찜함이 있다.
na0th
force-pushed
the
auction_product
branch
from
October 16, 2024 08:15
5e7454b
to
61b0401
Compare
단순 파일명 변경
na0th
changed the title
Feature : 토스페이먼츠 결제 API를 구현합니다.
[FEATURE] : 토스페이먼츠 결제 API를 구현합니다.
Oct 16, 2024
변경한 내용 : 1. 트랜잭션 단위로 User 생성과 Wallet 생성을 묶어서 처리 2, 연관 관계 편의 메서드로 User와 Wallet 간 객체 참조 연결 3. User의 영속성이 Wallet으로 전파되도록 cascade.ALL 설정
추가한 내용 : 1. wallet 충전 메서드 2. wallet 생성 예외 메시지
이유 : git이 paymentController -> PaymentController로 바꾼 것을 인식하지 못함
임시 이름에서 다시 변경
변경한 내용 1. Controller 로직 -> Service 레이어로 옮김 2. PayType, PayStatus 같은 Enum Type의 메서드명, 변수명을 변경 3. PaymentRequest, Response 토스 페이먼츠 변수명에 맞게 변경 3. paymentConfig url 변수명 변경 ++ 4. chargeMoney에서 save()까지 책임 옮김
추가한 내용 : 1. Payment 엔티티에 create 메서드 추가 2. Payment 관련 Api 메세지 추가 3. Payment 관련 예외 메세지 추가 4. Http Client를 Config에서 Bean 등록
변경한 내용 : 필요없는 인자를 커밋해서 빌드시 오류가 나던 것을 해결
변경한 내용 : 1. User.create 메서드를 createWithWallet 메서드로 변경하면서 Wallet 생성 부분까지 한 번에 User를 생성하면서 맡도록 했음 2. Service 레이어에서 Wallet 생성 책임을 User에 넘겼음 3. 그로인해 AuctionInitializer 코드 변경(지갑 생성 부분) 4. UserDetailsResponse walletId 필드 추가
변경한 내용 : 1. wallet을 User쪽에서 한 번에 생성하면서 테스트 코드를 조금 변경함 2. UserDetailsResponse에 walletId 필드를 추가해서 테스트코드의 생성자의 파라미터로 walletId 필드 추가해줌
변경 및 추가한 내용 : 1. 인터페이스로 HttpClient 같은 의존성에 간접 의존하도록 바꿈 -> 변경에 유연하도록 2. 토스페이로부터 온 응답을 HttpResponse에서 직접 만든 Response(Object)로 변환해서 처리 -> 테스트 시 객체 생성이 쉬워지도록 3. userId를 통해 Wallet 반환받는 메서드를 쿼리로 변경 -> user.getWallet() 에서 JPQL 쿼리로 변경 미완 : 테스트 추가 필요
추가한 내용 : paymentKey 세션 임시 저장 확인 테스트 결제 상태에 따른 메서드 처리 확인 테스트 Wallet 조회, 충전 관련 테스트 추가 등등 미완 : 컨트롤러 테스트 추가 필
추가한 내용 : 1. 컨트롤러 테스트 추가 2. ExceptionHandler에 Invalid Session, PaymentDataMismatch 예외 추가 400번 반환 3. Service 테스트 삭제 -> 안 쓰이던 테스트
변경한 내용 : 토스 api 버전에 따라 response 형식이 달라서 맞추기 위함. @JsonAlias를 통해 error object의 루트 레벨을 평탄화하여 code, message를 필드로 추가
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
TODO
세션 값 임시 저장되는지 검증
토스페이먼츠 결제 요청 성공, 실패
PaymentResponse DTO에 토스페이먼츠 Response 저장
UserId 통해서 wallet를 찾기 (paidUser.getWallet)
wallet < - > payment 연관 관계 편의 메서드로 객체 참조 맺기
payment 저장 -> cascade.ALL로 지갑도 자동 저장
결제 정보 저장 성공 시, 지갑 충전 로직
결제 정보 저장 실패 시, 토스페이먼츠로 결제 취소 요청
토스 결제 실패 시, 클라이언트로 실패 객체 리턴
결제 실패 시, 트랜잭션에 의해서 충전 금액, 결제 내역 롤백
결제 시나리오 검증
결제 api 리팩토링
결제 api 테스트 코드 작성
🆕 기능 추가 / 🔧 버그 수정
토스 페이먼츠 결제 API를 구현합니다.
📋 변경 사항
🔍 테스트 사항
📄 관련 문서
📝 추가 사항