
안녕하세요. 오늘은 결제 시스템 구축을 위한 개념을 정리해 봤어요.
이 포스팅의 목표는
결제 시스템 구축에 대한 PG사와 결제 모듈(PortOne)의 개념을 이해하는 것이에요.
PG (Payment Gateway)
PG사는 온라인에서 상품이나 서비스를 구매할 때, 다양한 결제 수단(카드, 계좌이체, 간편 결제 등)을 통해
안전하게 결제할 수 있도록 지원하는 전자지급결제대행 서비스예요.
오프라인 식당의 신용카드 단말기와 같고, KG이니시스, 토스페이먼츠, NHN KCP, 카카오페이 등 사용해요.
포트원 (PortOne / 구 아임포트)
수많은 PG사의 복잡하고 서로 다른 결제 코드를 하나의 표준화된 API로 통합해 주는 결제 연동 설루션이에요.
개발자는 포트원 코드 하나만 작성하면, 관리자 페이지 설정만으로
PG사를 자유롭게 변경하거나 여러 PG사를 동시에 사용할 수 있어요.
결제 시스템 구축의 목표
1. 주문번호 중복 방지 (무결성)
주문번호는 주민등록번호처럼 전 세계에서 유일해야 해요.
이걸 브라우저(클라이언트)에게 맡기면 중복 사고가 날 수 있어서
반드시 서버(백엔드)가 DB를 확인하고 유니크한 번호를 발급해 줘야 안전합니다.
2. 금액 위변조 방지 (보안)
해커가 프론트엔드 코드를 조작해서 50,000원짜리 충전을 100원 결제로 바꿔서 요청할 수도 있어요.
서버에 미리 '이 주문번호는 50,000원짜리야'라고 딱 박아놔야,
나중에 결제 검증 단계에서 금액이 다를 때 '너 해킹이지?' 하고 막을 수 있어요.
3. 결제 누락 방지 (장애 대응)
사용자가 결제 직후 인터넷이 끊겨서 브라우저가 죽어버리면, 돈은 나갔는데 서버는 모르는 '좀비 결제'가 돼요.
서버에 미리 주문 기록을 남겨놔야, 나중에 포트원 서버와 대조해서 누락된 결제를 찾아내고 복구해 줄 수 있어요.
결제 전체 흐름 요약

⭐ "서버검증"의 의미


여기까지 결제 시스템에 대한 개념에 알아봤는데요.
이번 글을 통해 결제 시스템은 단순한 기능 구현이 아니라
보안, 무결성, 장애 대응까지 고려한 전체 흐름 설계라는 것을 알 수 있었어요.
'Backend > Java' 카테고리의 다른 글
| Spring - Polling (0) | 2026.01.13 |
|---|---|
| Spring - PersistRepository (0) | 2026.01.06 |
| 이메일 중복방지 (0) | 2025.12.31 |
| 회원가입 이메일 인증 기능 (Google smtp 활용) (0) | 2025.12.29 |
| Spring - security crypto (0) | 2025.12.25 |