피드로 돌아가기
Dev.toBackend
원문 읽기
SDK 제거와 Native Fetch 기반의 Serverless 결제 아키텍처 구현
How I add Polar (Merchant of Record) + Stripe to any Next.js app in 10 minutes — without an SDK
AI 요약
Context
Serverless 환경에서 결제 SDK의 Keep-alive 소켓 오작동으로 인한 fetch failed 에러 발생. 국가별 Stripe 가입 제한 해결을 위한 Merchant of Record(MoR) 도입 필요성과 SDK의 의존성 문제 공존.
Technical Solution
- SDK 의존성 제거를 통한 Native Fetch REST API 직접 호출 방식 채택으로 Serverless 런타임 안정성 확보
- crypto.timingSafeEqual 기반의 HMAC 서명 검증 로직 구현을 통한 Webhook 변조 방지 및 보안 강화
- Success URL 리다이렉션 신뢰 배제 및 서버 사이드 결제 상태 재검증(Re-fetch) 프로세스 구축
- Typed Object 기반의 단일 진실 공급원(Single Source of Truth) 설계로 요금제 관리 복잡도 제거
- Polar 및 Stripe API의 공통 추상화 계층 설계를 통한 결제 벤더 전환 유연성 확보
실천 포인트
- Serverless 환경에서 SDK의 불투명한 에러 발생 시 REST API 직접 호출 검토 - Webhook 검증 시 시간 기반 공격 방지를 위해 단순 비교 연산자 대신 timingSafeEqual 사용 - 클라이언트 측 리다이렉션 완료를 결제 완료로 간주하지 않고 반드시 서버 API로 최종 상태 확인 - 요금제 정보의 파편화를 막기 위해 중앙 집중형 구성 객체(Configuration Object) 정의