- 카드결제 / 결제취소 / 결제정보 조회 REST API 개발
- Maven Project
- Java 8
- Junit
- Swagger
- h2 database
- jpa
- security jwt
- 객체 지향의 기본 원리와 의미 있는 코드 작성
- 라이브러리 및 기능 추가 시 이유 있는 선택과 사용 목적 고려
- Junit을 사용하여 테스트 코드 작성
- 대용량 트래픽 환경을 고려하여 WAS의 Scale-out 구조로 개발
- 결제 API
- 카드정보과 금액정보를 입력받아서 카드사와 협의된 string 데이터로 DB에 저장합니다.
- request
- required
- 카드번호(10 ~ 16자리 숫자)
- 유효기간(4자리 숫자, mmyy)
- cvc(3자리 숫자)
- 할부개월수 : 0(일시불), 1 ~ 12
- 결제금액(100원 이상, 10억원 이하, 숫자)
- optional
- 부가가치세
- response
- 성공
- 관리번호(unique id, 20자리)
- 카드사에 전달한 string 데이터 : "공통 헤더부문" + "데이터 부문"
- 성공
- required
- 결제취소 API
- 결제에 대한 전체취소는 1번만 가능합니다.
- 부가가치세 정보를 넘기지 않는 경우, 결제데이터의 부가가치세 금액으로 취소합니다.
- 할부개월수 데이터는 00(일시불)로 저장합니다.
- request :
- required
- 관리번호(unique id, 20자리)
- 취소금액
- optional
- 부가가치세
- response
- 성공
- 관리번호(unique id, 20자리)
- 카드사에 전달한 string 데이터 : "공통 헤더부문" + "데이터 부문"
- 성공
- required
- 데이터 조회 API
- DB에 저장된 데이터를 조회해서 응답값으로 만들어줍니다.
- request : 관리번호(unique id)
- response
- 성공
- required
- 관리번호(unique id)
- 카드정보 : 암호화된 데이터를 복호화해서 데이터를 만들어주세요.
- 카드번호 : 앞 6자리와 뒤 3자리를 제외한 나머지를 마스킹처리
- 유효기간
- cvc
- 결제/취소 구분
- 금액정보
- 결제/취소 금액
- 부가가치세
- optional
- 추가로 내려주면 좋을 데이터들을 자유롭게 추가해주세요.
- required
- 성공
- 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
- url 접근시 swagger 를통해 API 확인
- http://localhost:8080/swagger-ui.html#/
- http://localhost:8080/h2-console/ 접속 후
- setting 값을 Generic h2 (embedded) 설정
- JDBC url 값을 jdbc:h2:~/billing 접속 후 확인