<aside> 📎
Github : ‣
기간 | 2025.04.21 ~ 2025~05.01 |
---|---|
구성원 | BE 1명 |
담당 역할 | BE |
구현 기능 | - HMAC 기반 요청 검증 및 인증 시스템 - 비동기 결제 처리 흐름 + Webhook 수신 처리 - 결제 상태 관리 및 이력 로그 시스템 - 재시도 가능한 안정적 Webhook 전송 (Fail-safe 처리) |
기술 스택 | Java, Spring Framework 5.3.37, MyBatis, MySQL, Postman |
</aside> |
<aside> 📝
SimplePG는 스프링 레거시와 MyBatis를 사용하여 MVP로 구현한 전자결제(PG) 서비스입니다.
턴키 방식을 사용해 가맹점의 결제 요청 등록, 상태 조회, 웹훅 응답 처리를 지원하는 백엔드 API를 제공합니다. 보안성 과 데이터 무결성 그리고 이 후 확장성을 우선적으로 고려했으며, 다양한 결제 수단과 플랫폼에 유연하게 대응할 수 있도록 구조화했습니다. 특히 HMAC을 활용한 인증 방식, 비동기 기반의 웹훅 처리, 세밀한 상태 흐름 제어를 통해 신뢰할 수 있는 결제 환경을 구현하기 위해 고민했습니다.
</aside>
paymentKey
를 생성합니다.WebhookServiceFactory
를 통해 상태를 처리합니다.paymentKey
로 결제 상태를 조회합니다.보안: API간 모든 요청/응답에 HMAC 서명 검증 적용하도록 하였습니다. (가맹점 ↔ PG ↔ 외부 결제)
확장성: WebhookServiceFactory
로 추후 다양한 웹훅 처리를 지원하도록 설계하였습니다.
추적성: payment_log
로 모든 결제에 관련한 상태 변경 기록을 기록하도록 하였습니다.
안정성: 트랜잭션 관리로 데이터 일관성 보장하였습니다. 추가로, Payment 상태 업데이트와PaymentLog 생성이 동시에 이루어지는 로직에서는 비관적락을 적용하여 동시처리를 방지하였습니다.