인프런 커뮤니티 질문&답변
PG 결제 승인 로직
작성
·
13
0
안녕하세요!
PG 결제 승인 API 구현 중 고민이 되는 부분이 있어서 질문드립니다!
PG사로 부터 /callback/success 등과 같이 콜백 url로 요청을 받았을때 결제 승인을 서버에서 진행하는 플로우인데
결제 승인 요청 전 결제 검증
PG 결제 승인 API 호출
정상 승인 or 승인 실패 시 transaction_history 저장
의 흐름인 것 같은데 추가적으로 3번에서 정상 승인 시에 PG사로 부터 응답받은 paymentKey, amount 등을 요청한 paymentKet, amount와 동일한지 검증이 필요할까? 라는 생각이 들었습니다.
궁금한 점은
실무에서 PG사 연동 시에는 결제 승인 응답 후 검증 로직을 다루는지? 다룬다면 실제 승인 요청 내역과 응답 내역이 다르다면 어떻게 처리하는지? (클라이언트로 응답, 불일치 시 보정 전략 등..)
외부 API 호출 시 서킷 브레이커를 사용하는 걸 선호하는지?
정도가 있습니다!
제미니님 덕분에 항상 많이 배워갑니다 감사합니다~!
답변 1
0
안녕하세요, 인프런 AI 인턴입니다. educrinity5님.
PG 결제 승인 로직과 관련된 질문 감사드립니다. 실제 PG사 연동 환경에서는 결제 승인 시 다양한 상황을 고려해야 하며, 특히 데이터 정합성 문제에 대한 대비가 필요합니다. 아래에 관련된 몇 가지 실무적 접근 방법을 소개하겠습니다.
1. 결제 승인 응답 후 검증 및 처리
실제로 PG사 연동 시 결제 approval 후 검증 로직을 포함하는 것은 중요한 단계입니다. 승인 요청 내역과 응답 내역의 불일치가 있을 경우, 두 가지로 접근할 수 있습니다:
데이터 검증: PG사로부터 응답 받은
paymentKey,amount등을 요청한 값과 일치하는지 검토합니다. 이 과정은 금액 실수나 중복 처리 등을 빠르게 발견할 수 있게 합니다.불일치 시 처리: 만약 응답 값과 요청 값이 다르다면, 다음과 같은 대응이 필요합니다:
- 로그 기록: 비정상적인 흐름이 발생할 경우, 상황을 충분히 로그로 남깁니다. 이는 향후 분석에 유용합니다.
- 보정 로직: 불일치가 발생한 경우, 보정 가능한 경우(예: 금액 오차)라면, 이를 맞추거나 수동 조치를 통해 해결해야 합니다.
- 클라이언트 알림: 사용자에게 문제가 발생했음을 알리고, 상황에 맞게 재시도 또는 명확한 대안을 제시합니다.
- 로그 기록: 비정상적인 흐름이 발생할 경우, 상황을 충분히 로그로 남깁니다. 이는 향후 분석에 유용합니다.
관련된 기존 논의 내용을 참고하여 더 풍부한 사례를 파악해 보시면 좋겠습니다:
- 외부 API 연동 시 데이터 정합성을 고려해야 할 때.. - 외부 API 연동에서의 트랜잭션 및 데이터 정합성 문제
2. 서킷 브레이커 사용 여부
서킷 브레이커는 API 호출 안정성을 높이는 데 있어 많이 사용됩니다. 외부 PG사 API를 호출할 때 네트워크 불안정이나 외부 시스템 이슈로 인해 시스템이 지속적으로 실패하는 것을 방지하는 역할을 합니다. 특히 대량의 트래픽을 처리하는 환경에서는 서킷 브레이커가 유용합니다.
서킷 브레이커를 사용하면 아래와 같은 장점이 있습니다:
- 장애 격리: 외부 시스템의 장애가 내부 시스템 전반에 영향을 미치는 것을 방지합니다.
- 빠른 실패 처리: 외부 API가 일정 횟수 실패하면 이후 호출을 빠르게 실패 처리하여 시스템 자원을 보존합니다.
관련하여 추가적인 방법론을 알고 싶으시면 아래 질문과 답변을 참고해 주세요:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




