결제
결제 연동, 출시 전에 반드시 확인해야 할 체크리스트
결제는 AI로 만든 앱에서 가장 조용히, 그리고 가장 비싸게 새는 지점입니다. 아래는 출시 전 직접 확인할 수 있는 최소 체크리스트입니다.
1. 프리미엄 판정을 클라이언트가 혼자 하고 있지 않은가
결제 여부를 서버가 아니라 프론트엔드 코드(예: localStorage의 플래그)만으로 판단하면, 개발자 도구에서 값 하나만 바꿔도 무료로 유료 기능을 쓸 수 있습니다.
2. 결제 성공을 영수증/웹훅으로 검증하는가
결제 완료 리다이렉트 URL에 도달했다는 것만으로 결제 성공을 확정하면 안 됩니다. 결제 게이트웨이(포트원·토스페이먼츠·Stripe 등)의 웹훅이나 영수증 검증 API로 실제 결제 상태를 다시 확인해야 합니다.
3. 웹훅 중복 호출에 안전한가
같은 결제 웹훅이 네트워크 재시도로 두 번 들어왔을 때 중복 청구되거나 크레딧이 두 번 지급되지 않는지 확인합니다. 멱등키(idempotency key) 처리가 없으면 흔히 발생하는 문제입니다.
4. 0원 결제·가격 조작이 가능한가
결제 요청 시 가격 정보를 클라이언트에서 서버로 그대로 전달받아 쓰면, 요청을 가로채 가격을 0이나 음수로 바꿔 보낼 수 있습니다. 가격은 항상 서버 쪽 상품 정의에서 다시 조회해야 합니다.
5. 결제는 됐는데 권한이 안 열리는 경우는 없는가
결제 웹훅 처리가 실패하거나 지연되면, 사용자가 돈은 냈는데 유료 기능은 못 쓰는 상황이 생깁니다. 이런 경우를 위한 수동 확인·재처리 경로가 있어야 합니다.
참고 — 1·4번은 코드 리뷰나 브라우저 요청 가로채기로 비교적 쉽게 확인됩니다. 2·3·5번은 실제 테스트 결제(게이트웨이 테스트 모드)를 돌려봐야 확실히 검증됩니다.
공식 참고 자료
- 포트원 V2 인증 결제 연동 공식 문서 — 결제 ID·주문명·금액을 포함한 요청 구조
- 포트원 웹훅 연동 공식 문서 — 결제 완료 누락 방지와 서버 상태 동기화