문제 상황현재 프로젝트에서 사용자가 보유한 쿠폰을 불러와 결제 시 적용할 수 있는 기능을 개발하던 중, 선택된 쿠폰의 할인률에 따라 결제 금액에서 할인을 계산하는 로직을 구현하고 있었습니다. 위와 같이 사용자가 10% 할인 쿠폰을 선택하여 결제 금액이 20,000원일 때, 기대한 할인액은 2,000원이지만, 실제로는 50원만 할인되는 문제가 발생했습니다. 쿠폰 데이터는 다음과 같은 정보가 포함되어 있었습니다.쿠폰 데이터Coupon: CouponUserResponseDto( couponId=b2e6f1b4-1234-4cb5-8234-8a9e6b78c2c2, promotionId=a1e6f1b4-9187-4cb5-8225-8a9e6b78c2b1, description=10% Discount..
트러블 슈팅
문제 상황 [트러블 슈팅] 사용자 직접 결제 취소 시 서버 리다이렉트 문제 해결기문제 상황 토스 페이먼츠 SDK를 사용하여 결제 로직을 구현하던 중, 토스 페이먼츠의 서버 문제나 클라이언트 오류가 아닌, 사용자가 결제를 취소했을 때의 처리가 필요했습니다. 예를 들어, 위pixx.tistory.com 사용자가 직접 취소한경우 위 포스팅에서 확인할 수 있듯이 /api/payments/toss/fail-cancel의 경로 API로 리다이렉트 요청을 보내게 됩니다. @Transactional public void tossPaymentUserCancel(String code, String message, AuthUserInfo authUserInfo) { Payment payment = paym..
문제 상황현재 진행중인 GlowGrow 프로젝트는 MSA 기반의 멀티모듈 구조의 프로젝트입니다. 멀티 모듈 구조의 장점 중 하나인 재사용성을 극대화하고, 중복 코드를 줄이기 위해 common이라는 모듈을 만들었습니다. 이 모듈에는 여러 서비스에서 공통으로 사용하는 기능들을 포함시켰습니다. S3를 활용한 파일 업로드 기능은 서비스 제공자와 사용자의 프로필 관리, 그리고 게시판 등 여러 곳에서 공통적으로 사용되고 있습니다. 이에 따라 코드 중복을 최소화하기 위해 S3 관련 기능을 Common 모듈로 이전했습니다. 그러나 이 과정에서 다음과 같은 빈(Bean) 생성 예외가 발생했습니다.org.springframework.beans.factory.BeanCreationException: Error creatin..
문제 상황 토스 페이먼츠 SDK를 사용하여 결제 로직을 구현하던 중, 토스 페이먼츠의 서버 문제나 클라이언트 오류가 아닌, 사용자가 결제를 취소했을 때의 처리가 필요했습니다. 예를 들어, 위 사진의 결제 화면에서 X 버튼을 클릭하여 사용자가 결제를 취소할 경우, 이를 인지하고 특정 페이지로 리다이렉트되도록 설정해야 합니다. 문제 원인결제 처리일부 코드서버로 결제 요청을 전송하고, 토스 페이먼츠(Toss Payments)를 통해 결제를 처리하는 일부 코드입니다. // 서버에 결제 요청 전송 fetch('/api/payments/toss', { method: 'POST', headers: { 'Content-Type'..