Skip to content
This repository has been archived by the owner on Aug 13, 2022. It is now read-only.
/ billing Public archive

[넥슨 이직, 연봉 5000만원 이상] 결제 시스템 개발

Notifications You must be signed in to change notification settings

f-lab-edu/billing

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 

Repository files navigation

billing

목적

  • 빌링 시스템 개발

  • 카드결제 / 결제취소 / 결제정보 조회 REST API 개발

사용 기술

  • Maven Project
  • Java 8
  • Junit
  • Swagger
  • h2 database
  • jpa
  • security jwt

기술적인 집중 요소

  • 객체 지향의 기본 원리와 의미 있는 코드 작성
  • 라이브러리 및 기능 추가 시 이유 있는 선택과 사용 목적 고려
  • Junit을 사용하여 테스트 코드 작성
  • 대용량 트래픽 환경을 고려하여 WAS의 Scale-out 구조로 개발

REST API 사양

  1. 결제 API
  • 카드정보과 금액정보를 입력받아서 카드사와 협의된 string 데이터로 DB에 저장합니다.
  • request
    • required
      • 카드번호(10 ~ 16자리 숫자)
      • 유효기간(4자리 숫자, mmyy)
      • cvc(3자리 숫자)
      • 할부개월수 : 0(일시불), 1 ~ 12
      • 결제금액(100원 이상, 10억원 이하, 숫자)
    • optional
      • 부가가치세
    • response
      • 성공
        • 관리번호(unique id, 20자리)
        • 카드사에 전달한 string 데이터 : "공통 헤더부문" + "데이터 부문"
  1. 결제취소 API
  • 결제에 대한 전체취소는 1번만 가능합니다.
  • 부가가치세 정보를 넘기지 않는 경우, 결제데이터의 부가가치세 금액으로 취소합니다.
  • 할부개월수 데이터는 00(일시불)로 저장합니다.
  • request :
    • required
      • 관리번호(unique id, 20자리)
      • 취소금액
    • optional
      • 부가가치세
    • response
      • 성공
        • 관리번호(unique id, 20자리)
        • 카드사에 전달한 string 데이터 : "공통 헤더부문" + "데이터 부문"
  1. 데이터 조회 API
  • DB에 저장된 데이터를 조회해서 응답값으로 만들어줍니다.
  • request : 관리번호(unique id)
  • response
    • 성공
      • required
        • 관리번호(unique id)
        • 카드정보 : 암호화된 데이터를 복호화해서 데이터를 만들어주세요.
          • 카드번호 : 앞 6자리와 뒤 3자리를 제외한 나머지를 마스킹처리
          • 유효기간
          • cvc
        • 결제/취소 구분
        • 금액정보
          • 결제/취소 금액
          • 부가가치세
      • optional
        • 추가로 내려주면 좋을 데이터들을 자유롭게 추가해주세요.
  1. API 요청 실패시
  • 자유롭게 정의한 에러응답, 에러코드등을 내려줍니다.

제약사항

  • 단, 카드사와 통신하는 부분은 Embedded Database(ex. H2)에 string 데이터를 저장하는 것으로 대체하고 카드사로 전송하는 모든 요청은 성공이라고 가정합니다.
  • 저장하는 string 데이터 카드사로 전송하는 string 데이터를 공통헤더부문과 데이터부문을 합쳐 하나의 string(450자리)으로 만들어서 DB에 저장해주세요.
  • 부가가치세 optional 데이터이므로 값을 받지 않은 경우, 자동계산 합니다. 자동계산 수식 : 결제금액 / 11, 소수점이하 반올림 결제금액이 1,000원일 경우, 자동계산된 부가가치세는 91원입니다. 부가가치세는 결제금액보다 클 수 없습니다. 결제금액이 1,000원일 때, 부가가치세는 0원일 수 있습니다.
  • 카드정보 암/복호화 암/복호화 대상 데이터는 카드번호, 유호기간, cvc입니다. 카드정보는 모두 숫자로 이루어져 있으므로 하나의 string으로 합쳐서 암호화하고 데이터들 사이에 적당한 구 분자를 추가해주세요. ex. encrypt(카드정보|유효기간|cvc) 암호화된 데이터를 복화화했을 때 카드정보의 각 데이터를 사용할 수 있도록 객체화해주세요. 암/복호화 방식은 자유롭게 선택합니다.
  • 트랜잭션 데이터 관리 각 결제, 결제취소 데이터는 관리번호(unique id, 20자리)로 관리되어야 합니다. 취소데이터는 결제데이터와 연결되어있어야 합니다. 관리번호(unique id, 20자리)로 저장되어 있는 데이터를 조회할 수 있어야 합니다. 관리번호로 데이터 조회시에는 결제 혹은 결제취소 데이터 1건만 조회합니다.

실행 방법

  • billing.7z 압축 파일 해제
  • (윈도우 기준) 파일 경로 에서 실행 명령어 실행 (jre or jdk 필요)
  • mvn test package 시 target 파일에 InitialData.txt 복사 해야 정상 구동 됩니다.
cd billing
java -jar billing-0.0.1-SNAPSHOT.jar

API 확인 방법

DB 데이터 확인 방법

ERD

About

[넥슨 이직, 연봉 5000만원 이상] 결제 시스템 개발

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published