피드로 돌아가기
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
Vercel과 같은 Serverless 플랫폼에서 기존 결제 SDK의 HTTP 클라이언트 및 keep-alive 소켓 오작동으로 인한 fetch failed 에러 발생. 특히 비미국 거주 개발자가 Merchant of Record(MoR)를 이용할 때 SDK 의존성으로 인한 배포 불안정성 증가.
Technical Solution
- SDK 제거 및 Native Fetch 도입을 통한 Serverless 환경의 런타임 예측 가능성 확보
- REST API 직접 호출 방식으로 라이브러리 버전 drift 및 불투명한 네트워크 에러 제거
- crypto.timingSafeEqual을 활용한 HMAC 기반 Webhook Signature 검증으로 보안 무결성 확보
- Success Page 진입 시 Server-side에서 결제 상태를 재검증하는 Zero-trust 아키텍처 적용
- 구독 티어 정보를 단일 Typed Object로 관리하여 UI 생성 및 플랜 변경의 단일 진실원(Single Source of Truth) 구축
실천 포인트
1. Serverless 환경에서 SDK의 네트워크 라이브러리 충돌 발생 시 REST API 직접 호출 검토
2. Webhook 검증 시 단순 비교 연산자(==) 대신 timingSafeEqual을 사용하여 타이밍 공격 방지
3. 클라이언트 리다이렉션 기반의 성공 페이지를 신뢰하지 말고 서버에서 결제 상태를 재확인하는 로직 구현
4. 비즈니스 티어 설정을 코드 내 상수 객체로 관리하여 변경 전파 비용 최소화