~/VibeHandbook
무료 PDF

결제

stripe.com

Stripe

개요

계산대에 놓인 카드 단말기를 떠올려 보세요 — 손님의 카드를 받아 돈을 옮겨주죠. Stripe는 그것의 소프트웨어 버전, 즉 결제 처리업체(PSP)입니다. 앱이 신용카드, 지갑, 은행 결제를 받을 수 있게 해주는 (Application Programming Interface, 프로그램끼리 대화하는 통로)와 대시보드의 집합이며, 이후 구독, 인보이스, 정산까지 관리해줍니다. API가 깔끔하고 문서가 훌륭하며, 거의 모든 튜토리얼과 라이브러리가 Stripe를 전제로 하기 때문에 개발자들의 기본 선택지입니다. 연동해두면 고객이 결제하고, 돈이 여러분의 은행 계좌로 들어옵니다.

강점

  • 업계 최고 수준의 개발자 경험 — 명확한 API, 테스트 모드, 훌륭한 문서.
  • 거대한 생태계: SDK (Software Development Kit, 미리 만들어둔 코드 묶음), 사전 구축된 체크아웃, 결제 청구, 서드파티 연동.
  • 일회성 결제, 구독, 마켓플레이스, 사용량 기반 청구까지 모두 다룰 만큼 유연함.
  • 강력한 사기 방지 도구(Radar)와 신뢰할 수 있고 잘 문서화된 (웹훅, 결제 이벤트가 생기면 자동으로 보내는 알림).
  • 다양한 국가와 통화를 지원.

트레이드오프

  • 결제 처리업체일 뿐 MoR가 아닙니다. MoR (, 등록 판매자)는 법적으로 판매 주체가 되어 영수증과 세금을 대신 처리해주는 회사인데, Stripe는 그게 아닙니다. Stripe에서는 여러분이 판매 주체가 됩니다. 따라서 판매세와 VAT (Value Added Tax, 부가가치세 — 여러 나라에서 쓰는 판매세)의 징수 및 납부는 여러분의 책임입니다(Stripe Tax가 계산을 돕지만, 신고는 여전히 여러분 몫입니다).
  • 호스팅형 스토어보다 설정할 것이 많고, 흐름의 더 많은 부분을 직접 구축해야 합니다.
  • 규모가 커질수록 컴플라이언스, 차지백, 세무 등록이 여러분에게 떨어집니다.

언제 사용하나

결제 흐름을 최대한 제어하고 싶고 세무 컴플라이언스를 직접 감당할 수 있을 때, 또는 호스팅형 스토어로는 표현할 수 없는 것(마켓플레이스, 사용량 측정 기반 청구, 복잡한 구독, 깊이 맞춤화된 체크아웃)을 만들 때 Stripe를 선택하세요.

바이브 코딩 적합성

Stripe는 AI 친화도가 가장 높은 결제 옵션입니다. 에이전트가 수천 개의 Stripe 예제를 접해봤기 때문에 체크아웃, webhook, 고객 포털을 빠르게 골격화할 수 있습니다. 여기서 webhook은 결제 이벤트가 생길 때 Stripe가 여러분 앱에 자동으로 보내는 메시지라서, 여러분의 앱이 알아서 반응하게 됩니다. 다만 함정이 있습니다. 에이전트는 기꺼이 결제를 연동해주지만, 이제 여러분이 수십 개 관할 지역에서 세금을 내야 한다는 사실은 잊어버립니다. 명확히 지시하세요. 대신 MoR 구성을 원하는지 알려주고, 항상 webhook 서명을 검증하세요. 이벤트도 멱등()하게 처리하세요 — 즉, 같은 이벤트가 두 번 도착해도 두 번 결제되거나 두 번 해제되지 않도록 하세요. 라이브로 전환하기 전에 Stripe의 테스트 카드로 테스트하세요.

// 체크아웃 세션 생성 (서버 측)
import Stripe from "stripe";
const stripe = new Stripe(process.env.STRIPE_SECRET_KEY);

const session = await stripe.checkout.sessions.create({
  mode: "payment",
  line_items: [{ price: "price_123", quantity: 1 }],
  success_url: "https://example.com/thanks",
  cancel_url: "https://example.com/cancel",
});
// 고객을 session.url 로 리다이렉트