코딩관계론

결제 서비스 개발기 본문

개발/Hot-Stock

결제 서비스 개발기

개발자_티모 2024. 9. 2. 03:04
반응형

비즈니스 규칙

  1. 쿠폰 할인 적용: 사용자는 결제 시 쿠폰을 사용할 수 있으며, 적용된 금액은 100원 단위로 절삭됩니다.
  2. 다중 쿠폰 사용: 여러 장의 쿠폰을 한 번의 결제에서 적용할 수 있습니다. 하지만 최종 결제 금액은 최소 100원 이상이어야 합니다.
  3. 회원 등급 승격: 결제가 완료되면 해당 회원의 등급이 VIP로 승격됩니다.

서비스  FLOW

Checkout Service

2024.09.03 - [개발] - 결제서비스 - Checkout 서비스 구현 [#50]

 

결제서비스 - Checkout 서비스 구현 [#50]

서론이 글에서는 쿠팡의 결제 서비스에서 Checkout 프로세스를 어떻게 처리하고 있는지 분석하고, 특히 Checkout ID의 보안 및 관리에 대해 논의하고자 합니다. Checkout ID는 결제 프로세스의 핵심 요소

bjwan-career.tistory.com

 

Payment Confrim Service

2024.09.03 - [개발] - 결제서비스 - 결제 승인 시스템 구조와 Retry 전략[#52]

 

결제서비스 - 결제 승인 시스템 구조와 Retry 전략[#52]

시스템 구조결제 승인 구조는 포트와 어댑터 패턴을 사용하여 설계되었습니다. 이 패턴을 사용한 이유는 여러 결제 시스템을 유연하고 확장 가능하게 처리하기 위해서입니다. 예를 들어, Toss Pa

bjwan-career.tistory.com

 

 

서비스  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관계를 가집니다. 즉, 하나의 주문은 여러 개의 이력 레코드를 가질 수 있습니다.

 

 

반응형