Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 셀러리
- 트랜잭샨
- docker
- 알람 시스템
- piplining
- 누적합
- 완전탐색
- 결제서비스
- AWS
- 검색어 추천
- 이분탐색
- branch 전략
- 객체지향패러다임
- 디버깅
- 구현
- prg 패턴
- 프로그래머스
- 쿠키
- BFS
- 깊게 생각해보기
- 좋은 코드 나쁜 코드
- 코드 계약
- gRPC
- 백준
- 레디스 동시성
- 숫자 블록
- jwt 표준
- spring event
- 카카오
- 수신자 대상 다르게
Archives
- Today
- Total
코딩관계론
결제 서비스 개발기 본문
반응형
비즈니스 규칙
- 쿠폰 할인 적용: 사용자는 결제 시 쿠폰을 사용할 수 있으며, 적용된 금액은 100원 단위로 절삭됩니다.
- 다중 쿠폰 사용: 여러 장의 쿠폰을 한 번의 결제에서 적용할 수 있습니다. 하지만 최종 결제 금액은 최소 100원 이상이어야 합니다.
- 회원 등급 승격: 결제가 완료되면 해당 회원의 등급이 VIP로 승격됩니다.
서비스 FLOW
Checkout Service
2024.09.03 - [개발] - 결제서비스 - Checkout 서비스 구현 [#50]
Payment Confrim Service
2024.09.03 - [개발] - 결제서비스 - 결제 승인 시스템 구조와 Retry 전략[#52]
서비스 ERD
1. payment_event 테이블
- buyer_id: 구매자 ID를 나타내며, 사용자의 고유 식별자입니다.
- order_id: 주문 ID를 나타내며, 특정 주문을 식별하는 데 사용됩니다.
- payment_key: 결제에 대한 고유 키입니다.
- payment_method: 결제 방법을 나타내며, 예를 들어 카드, PayPal 등입니다.
- is_payment_done: 결제가 완료되었는지 여부를 나타내는 불리언 값입니다.
- created_at: 이 결제 이벤트가 생성된 시간을 나타냅니다.
- updated_at: 마지막으로 업데이트된 시간을 나타냅니다.
- payment_event_id: 이 테이블의 기본 키로, 각 결제 이벤트를 고유하게 식별합니다.
2. payment_order 테이블
- payment_event_id: payment_event 테이블과의 외래 키로, 해당 주문이 어떤 결제 이벤트와 관련이 있는지 나타냅니다.
- product_id: 주문된 상품의 ID를 나타냅니다.
- payment_order_status: 주문의 현재 상태를 나타냅니다 (예: 대기 중, 완료, 실패).
- ledger_update: 이 주문이 원장에 기록되었는지를 나타내는 불리언 값입니다.
- wallet_update: 지갑이 업데이트되었는지를 나타내는 불리언 값입니다.
- fail_count: 결제가 실패한 횟수를 나타냅니다.
- threshold: 특정 임계값을 나타내며, 결제 시 어떤 기준을 나타낼 수 있습니다.
- amount: 주문된 금액을 나타냅니다.
- create_at: 주문이 생성된 시간을 나타냅니다.
- updated_at: 주문이 마지막으로 업데이트된 시간을 나타냅니다.
- payment_order_id: 이 테이블의 기본 키로, 각 결제 주문을 고유하게 식별합니다.
3. payment_coupon 테이블
- coupon_id: 쿠폰의 고유 식별자입니다.
- payment_event_id: payment_event 테이블과의 외래 키로, 이 쿠폰이 사용된 결제 이벤트를 나타냅니다.
- percentage: 쿠폰의 할인율을 나타냅니다.
- id: 이 테이블의 기본 키입니다.
4. payment_order_history 테이블
- payment_order_id: payment_order 테이블과의 외래 키로, 이 이력이 어떤 주문과 관련이 있는지 나타냅니다.
- previous_status: 주문의 이전 상태를 나타냅니다.
- new_status: 주문의 새로운 상태를 나타냅니다.
- created_at: 이 이력이 생성된 시간을 나타냅니다.
- updated_at: 마지막으로 업데이트된 시간을 나타냅니다.
- changed_by: 이 상태 변경을 수행한 사용자를 나타냅니다.
- reason: 상태 변경 이유에 대한 설명입니다.
- payment_order_history_id: 이 테이블의 기본 키로, 각 이력 레코드를 고유하게 식별합니다.
테이블 간의 관계
- payment_event 테이블은 payment_order와 payment_coupon 테이블과 1:N 관계를 가집니다. 즉, 하나의 결제 이벤트는 여러 개의 주문 또는 쿠폰과 연결될 수 있습니다.
- payment_order 테이블은 payment_order_history 테이블과 1관계를 가집니다. 즉, 하나의 주문은 여러 개의 이력 레코드를 가질 수 있습니다.
반응형
'개발 > Hot-Stock' 카테고리의 다른 글
메시지 발행과 데이터베이스의 트랜잭션을 어떻게 원자적으로 처리할까? (Transactional Outbox Pattern) (0) | 2024.09.10 |
---|---|
결제서비스 - 결제 승인 시스템 구조와 Retry 전략[#52] (0) | 2024.09.03 |
결제서비스 - Checkout 서비스 구현 [#50] (0) | 2024.09.03 |
Spring Interceptor를 이용한 JWT 개발 - 2탄 (0) | 2024.08.05 |
JWT를 사용한 인증 개발기 (0) | 2024.08.05 |