결제 시스템 (PG)

대리점 API

대리점 API

개요

  • 이번 프로젝트는 대리점들이 자신의 관리자 페이지에서 필요한 데이터를 가져오기 위한 대리점 API를 개발하는 것이었습니다. Java와 Spring Boot를 이용하여 개발되었으며, 데이터베이스는 MariaDB를 사용하고 Swagger를 이용하여 문서화하였습니다.
  • 기간: 2021.04 ~ 2023.07
  • 인원: 4명

기술 스택

  • JAVA 11
  • Spring Boot 2.7.7
  • Springframework 5.3.24
  • Spring Security
  • JWT
  • MariaDB
  • JPA
  • Querydsl
  • Swagger
  • Git
  • Jenkins

기술적인 부분

  • JWT(Json Web Token)를 사용하여 사용자 인증을 처리합니다
  • Spring Security를 이용하여 사용자 권한 관리 및 인증 처리를 구현합니다
  • Spring Boot와 Springframework를 사용하여 REST API를 구현합니다
  • Swagger를 사용하여 API 문서화를 진행합니다
  • Git을 사용하여 소스 코드를 관리하고 버전을 관리합니다
  • Jenkins를 사용하여 빌드 및 배포 자동화를 구현합니다
  • JPA와 Querydsl을 사용하여 데이터베이스와 소통합니다

기능 요약

  • 가맹점 관리
  • 결제 관리
  • 공지사항 관리
  • 대리점 정보
  • 대시보드
  • 아이디 찾기, 비밀번호 변경
  • 인증
  • 정산 관리
  • 하위 영업점 관리

상세 설명

가맹점 관리

  • 가맹점 목록 조회
    • 등록된 가맹점 목록을 조회할 수 있는 기능입니다.
  • 가맹점 상세 조회
    • 특정 가맹점의 상세 정보를 조회할 수 있는 기능입니다.
  • 가맹점 결제한도 상향 신청 전 조회 및 처리 현황
    • 가맹점이 결제한도 상향을 신청하기 전에 처리 현황을 조회할 수 있는 기능입니다.
  • 가맹점 상태 조회
    • 가맹점의 현재 상태(영업중, 휴점, 폐업 등)를 조회할 수 있는 기능입니다.
  • 가맹점 정보 수정
    • 가맹점 정보를 수정할 수 있습니다.
  • 가맹점 상태 변경
    • 가맹점의 상태(영업중, 휴점, 폐업 등)를 변경할 수 있는 기능입니다.
  • 가맹점 임시 비밀번호 발급
    • 가맹점의 관리자가 비밀번호를 분실한 경우, 임시 비밀번호를 발급할 수 있는 기능입니다.
  • 가맹점 신청 조회
    • 가맹점 신청서를 조회할 수 있는 기능입니다.
  • 가맹점 신청 등록
    • 가맹점 신청서를 등록할 수 있는 기능입니다.
  • 가맹점 심사 현황 요약 상세 조회
    • 가맹점 심사 현황 요약 정보를 상세하게 조회할 수 있는 기능입니다.
  • 가맹점 심사 현황 요약 상세 변경
    • 가맹점 심사 현황 요약 정보를 변경할 수 있는 기능입니다.
  • 가맹점 심사 현황 재심사용 상세 변경
    • 가맹점 심사 결과를 검토하여, 이에 대한 상세 정보를 변경할 수 있는 기능입니다
  • 가맹점 재심사 신청
    • 가맹점이 심사 결과에 이의를 제기하여 재심사를 신청할 수 있는 기능입니다.
  • 가맹점 심사 현황 조회
    • 가맹점의 심사 현황을 조회할 수 있는 기능입니다.
  • 가맹점 심사 현황 집계
    • 가맹점 심사 현황을 집계하여 통계 정보를 조회할 수 있는 기능입니다.
  • 가맹점 신청 보증보험 정책 조회
    • 가맹점 신청서에 대한 보증보험 정책을 조회할 수 있는 기능입니다.
  • 가맹점 결제 한도 상향 신청
    • 가맹점이 결제한도 상향을 신청할 수 있는 기능입니다.
  • 단말기 목록 조회
    • 등록된 단말기 목록을 조회할 수 있는 기능입니다.
  • 단말기 등록 신청
    • 새로운 단말기를 등록할 수 있는 기능입니다.
  • 단말기 상태 조회
    • 등록된 단말기의 상태를 조회할 수 있는 기능입니다.
  • 단말기 상태 변경
    • 등록된 단말기의 상태를 변경할 수 있는 기능입니다.

결제 관리

  • 계좌이체 결제내역 목록
    • 계좌이체 결제 내역 목록을 조회할 수 있는 기능입니다.
  • 현금 영수증 결제 내역 목록
    • 현금 영수증 결제 내역 목록을 조회할 수 있는 기능입니다.
  • 결제 내역 목록
    • 모든 결제 내역 목록을 조회할 수 있는 기능입니다.

공지사항 관리

  • 공지사항 목록
    • 등록된 공지사항 목록을 조회할 수 있는 기능입니다.
  • 공지사항 상세
    • 선택한 공지사항의 상세 내용을 조회할 수 있는 기능입니다.

대리점 정보

  • 대리점 정보 조회
    • 등록된 대리점 정보를 조회할 수 있는 기능입니다.
  • 대리점 정보 수정
    • 등록된 대리점 정보를 수정할 수 있는 기능입니다.

대시보드

  • 대리점 대시보드 년 단위 조회
    • 대리점의 대시보드 정보를 월별로 조회할 수 있는 기능입니다. 정산금액과 거래금액을 포함합니다.
  • 대리점 대시보드 월별 조회
    • 대리점의 대시보드 정보를 월별로 조회할 수 있는 기능입니다. 정산금액과 거래금액을 포함합니다.
  • 대리점 대시보드 가입 현황 조회
    • 대리점의 대시보드 정보 중 가입 현황을 조회할 수 있는 기능입니다.

아이디 찾기, 비밀번호 변경

  • ID 중복확인
    • 사용 가능한 아이디인지 중복 여부를 확인할 수 있는 기능입니다.
  • 아이디 찾기
    • 가입된 이메일 정보를 입력하여 아이디를 찾을 수 있는 기능입니다.
  • 비밀번호 변경
    • 가입된 이메일 정보를 입력하여 비밀번호를 변경할 수 있는 기능입니다.

인증

  • 로그인
    • 사용자가 로그인을 요청하면 JWT로 인증을 처리하는 서버에 API 요청을 보내어 사용자 정보를 확인합니다
    • 로그인이 성공하면 JWT 토큰을 발급받아 사용자에게 반환합니다
  • 토큰 갱신
    • 사용자가 토큰 갱신을 요청하면 JWT로 인증을 담당하는 서버에 API 요청을 보내어 사용자 정보를 확인합니다
    • 인증이 성공하면 새로운 JWT 토큰을 발급받아 사용자에게 반환합

정산 관리

  • 대리점, 리셀러 정산 내역
    • 등록된 대리점, 리셀러의 정산 내역을 조회할 수 있는 기능입니다.
  • 딜러 정산 내역
    • 등록된 딜러의 정산 내역을 조회할 수 있는 기능입니다.
  • 대리점의 직가맹점 정산 내역 일별 상세 조회
    • 등록된 대리점의 직가맹점 정산 내역을 일별 상세 정보로 조회할 수 있는 기능입니다.
  • 대리점의 직가맹점 정산 내역 월별 조회
    • 등록된 대리점의 직가맹점 정산 내역을 월별로 조회할 수 있는 기능입니다.
  • 대리점의 직가맹점 정산 내역 상단 로그인 유저 수수료
    • 등록된 대리점의 직가맹점 정산 내역 중 상단 로그인 유저 수수료 정보를 조회할 수 있는 기능입니다.
  • 대리점 정산내역 상단 로그인 유저 수수료
    • 등록된 대리점의 정산 내역 중 상단 로그인 유저 수수료 정보를 조회할 수 있는 기능입니다.
  • 가맹점 정산 내역
    • 등록된 가맹점의 정산 내역을 조회할 수 있는 기능입니다.
  • 가맹점 정산 결제 내역 상세
    • 등록된 가맹점의 정산 결제 내역을 상세 조회할 수 있는 기능입니다.
  • 가맹점 정산 결제 내역 상세 상단 집계
    • 등록된 가맹점의 정산 결제 내역 중 상단 집계 정보를 조회할 수 있는 기능입니다.

하위 영업점 관리

  • 하위 대리점 목록
    • 등록된 대리점의 하위 대리점 목록을 조회할 수 있는 기능입니다.
  • 하위 대리점 등록
    • 대리점의 하위 대리점을 등록할 수 있는 기능입니다.
  • 하위 대리점 상세
    • 등록된 하위 대리점의 상세 정보를 조회할 수 있는 기능입니다.
  • 하위 대리점 정보 수정
    • 등록된 하위 대리점의 정보를 수정할 수 있는 기능입니다.
  • 하위 대리점 상태 조회
    • 등록된 하위 대리점의 상태를 조회할 수 있는 기능입니다.
  • 하위 대리점 임시 비밀번호 발급
    • 등록된 하위 대리점에 대해 임시 비밀번호를 발급할 수 있는 기능입니다.
  • 하위 대리점 상태 변경
    • 등록된 하위 대리점의 상태를 변경할 수 있는 기능입니다.

성과

  • 대리점 및 하위 영업점 관리에 필요한 다양한 기능을 포함시켰습니다.
  • 대리점 및 하위 영업점 정보의 조회, 등록, 수정, 상태 변경 등 다양한 작업을 수행할 수 있게 되었습니다.
  • 대리점 및 하위 영업점 정보 관리에 대한 일관성을 유지할 수 있게 되었습니다.
  • 대리점 API를 개발하여 대리점들이 필요한 데이터를 보다 간편하게 가져올 수 있도록 도움을 주었습니다.
  • 인증과 관련된 로그인과 토큰 갱신 API를 구현하여, 사용자 인증 처리를 할 수 있게 되었습니다
  • JWT를 사용하여 데이터 보안에 대한 이슈를 해결하였습니다.
  • Swagger를 이용하여 문서화를 통해 API 사용자들이 API에 대한 이해도를 높일 수 있었습니다.
  • Git과 Jenkins를 이용하여 협업 및 배포 과정에서 생산성과 안정성을 높였습니다.
  • JPA와 Querydsl을 활용하여 높은 코드 가독성과 유지보수성 확보하였습니다

개선사항

  • 현재 API에서 제공되는 기능들이 충분히 사용자들의 요구를 수용하는지, 혹은 추가적인 기능이 필요한지를 더 깊이 이해하고 검토해 볼 필요가 있습니다
  • 현재 구현된 API의 보안 취약점을 점검하고, 추가적인 보안 기능을 구현하여 보안 측면에서 더욱 안전한 서비스를 제공할 필요가 있습니다
  • 대량의 데이터 조회 시 성능 이슈가 발생하여, 이를 해결할 수 있는 캐싱 기능을 추가하는 것이 필요합니다.
  • API의 안정성과 보안성을 높이기 위해 로깅과 모니터링을 강화하는 것이 필요합니다.
  • 현재는 대리점 API만을 개발하였지만, 이에 대한 문서화나 개발 가이드 등을 함께 제공함으로써 API 사용자들의 편의성을 높일 수 있습니다.
  • 보안적 측면에서 JWT 대신 OAuth 2.0을 이용한 인증 방식을 도입하면 더욱 안전한 인증 시스템을 구축할 수 있을 것입니다.
  • 현재는 JPA와 Querydsl을 활용하여 SQL을 직접 작성하지 않고도 쉽게 데이터베이스를 조작할 수 있습니다. 하지만 대용량 데이터 처리에는 한계가 있을 수 있으므로, 이에 대한 대응 방안을 모색할 필요가 있습니다.
  • Swagger를 활용한 API 문서화는 개발자들이 API를 이해하고 사용하기 쉽게 해주지만, UI/UX적인 면에서는 한계가 있을 수 있습니다. 이에 대한 대안을 고려할 필요가 있습니다.

© 2020. All rights reserved.

SIKSIK