[정산이란?]
정산은 상품이나 서비스를 판매한 거래 대금 중에서 상점이 받을 수 있는 실제 금액을 계산하는 과정을 말합니다. 판매 대금에서 결제수단별 수수료, 부가세, 기타 비용 등을 차감한 금액을 계산해 상점에 실제 지급되는 금액을 정산 금액이라고 합니다.
즉, 상점에서 이루어진 결제를 PG사에서 정산 대금 및 주기를 계산해 지급하는 과정이에요. 정산 대금 계산은 계약할 때 정한 수수료율에 따라 지급할 금액을 계산하는 것을 뜻합니다. 정산 주기 계산은 계약할 때 정한 주기에 따라 정산 지급일을 확정하는 것을 뜻하죠.
[정산 과정 이해하기]
1️⃣ 구매 고객이 결제하면, 2️⃣ 상점에서 PG사에 결제 승인을 요청해요. 3️⃣ PG사는 카드사 등 결제 기관에 결제 승인, 대금 지급을 요청해요. 4️⃣ 결제 기관 → 토스페이먼츠로 지급하는 정산 금액이 입금되면, 5️⃣ 토스페이먼츠 → 상점으로 대금을 지급합니다.
[기능 요구사항]
어드민 회원(Member) 기능
- 회원가입, 로그인, 권한관리
- 권한 : 일반 < 운영 일반 < 운영 팀장 < 관리자
- 일반 : 조회(R)만 가능
- 관리자 : CRUD 모두 가능
업주(StoreOwner) 관리 기능
- 관리자에 의해 등록, 수정, 삭제 가능
- 업주(1)는 여러 주문(N)을 가짐
- 업주는 검색할 수 있어야 함 => 해당하는 업주 정보는 사용자를 특정할 수 있는 id, 이메일, 전화번호라고 가정한다.
주문(Order) 관리 기능
- 관리자에 의해 등록, 수정, 삭제 가능
- 주문(1)은 일시(일자, 시간) 및 주문상세(N)를 가짐
- 주문상세는 결제수단과 결제금액을 가짐
- 주문은 업주 정보 및 주문 발생 일시로 검색가능
보상금액(CompensationAmount) 기능
- 관리자에 의해 등록,수정,삭제 가능
- 보상금액은 대상 업주, 보상사유, 보상날짜, 보상금액을 가짐
지급(Payment) 관리 기능
- 주문상세 및 보상금액으로 전체 업주에 대해 지급되는 금액을 계산
- 운영 일반 권한을 가진 어드민 회원이 지급금을 요청
- 운영 팀장 권한을 가진 어드민 회원이 지급금 요청 승인
- 지급금 요청, 승인 시, 상세내역(주문상세, 보상금액 내역) 조회 가능
[기능 요구사항2 - (내가 추가한)]
자동 지급 관리 기능
- 매월 1일 전체 업주에 대해 지급되는 금액을 계산
- 단, 1일 기준으로 3일 이내에 발생한 거래는 정산 대상에 포함되지 않는다
[기술 요구사항]
OOP (객체지향) 코드 & 클린 코드 (JUnit5) 단위 테스트 & 통합 테스트 SQL 인잭션, 스크립팅 공격을 비롯한 기본적인 보안 HTTP API Spring Boot 2.6.x => 3.x JPA Gradle 7.x 이상 Git & GitLab JIRA => x flyway Mysql (React) 모던 JS 환경 => 당장 필요 x
[정의한 내용 - (내가 추가한)]
- 정산은 수동정산, 월정산만 있다고 가정한다.
- 매월 1일 00:00:00에 월정산이 차례대로 수행된다고 가정한다.
- 1일이 휴일이더라도 정산은 수행된다고 가정한다.
- 결제 수단은 토스 페이먼츠만 있다고 가정한다.
- 공급가액, 부가세 등 결제 수수료 외 다른 수수료는 존재하지 않는다고 가정한다.
- 결제 수수료는 3%라고 가정한다.
- 결제시 할부는 존재하지 않는다고 가정한다.
- 수동 지급시 order
[기대하는 내용]
- 코드를 많이 짜보면서 코딩력 및 생산력을 늘린다.
- 핀테크 도메인에 대한 이해를 경험해 본다.
- Kotlin + Spring 조합의 숙련도를 늘린다.
- 경험해보고 싶던 기술 스택들을 사용해 본다.
- Envers, JooQ, Spring Batch, Spring Security
[참고]
- 우아한 기술블로그 - 우당탕탕 정산어드민 시스템 파일럿 프로젝트 도전기(feat. 정산플랫폼팀) : https://techblog.woowahan.com/8357/
- 토스 페이먼츠 개발자센터 - 정산 : https://docs.tosspayments.com/common/glossary/settlement#%EC%A0%95%EC%82%B0-%EA%B3%BC%EC%A0%95-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0
- 토스 페이먼츠 개발자센터 - 정산 조회하기 : https://docs.tosspayments.com/common/apis/settlements#%EC%A0%95%EC%82%B0-%EC%A1%B0%ED%9A%8C-API-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0
- 포트원이 들려주는 결제이야기 - 정산도메인의 이해 : https://www.youtube.com/watch?v=BIDt9ycbQk0
- 카페24 - 정산관리 사용자 매뉴얼 : https://img.echosting.cafe24.com/guide/cafe24_New_statistics_manual.pdf