첫 결제 받기: AI로 만든 앱에 진짜 돈을 더하되 그르치지 않는 법

AI로 만든 앱에 결제를 더하는 순간은 취미가 사업이 되는 순간입니다. 어떻게 생각해야 하는지 — AI 빌더에게 무엇을 맡기고, 무엇을 절대 직접 만들지 말며, 진짜 카드가 닿기 전에 어떻게 테스트하는지 — 알려 드립니다.

AI로 만든 앱이 장난감이기를 멈추고 사업이 되는 특정한 순간이 있습니다: 진짜 돈이 처음으로 그 안을 통과하는 때입니다. 그 전까지는 실수가 쌉니다. 깨진 버튼은 짜증 나는 정도입니다. 아무도 결제하지 않는 화면의 잘못된 합계는 오타입니다. 하지만 진짜 고객의 카드가 청구되는 날부터, 실수는 실제 돈을 — 당신 돈이든 그들 돈이든 — 잃게 하며, “AI가 그렇게 만들었어요”는 청구에 이의를 제기하는 사람에게 하고 싶은 말이 아닙니다.

좋은 소식: AI로 만든 앱에서 결제를 받는 일은 들리는 것보다 다가가기 쉽습니다. 단, 어떤 부분을 AI 빌더에게 맡기고 어떤 부분을 절대 직접 건드리지 말아야 하는지 안다면요. 이 글은 그 경계에 관한 안내입니다.

당신을 지켜 주는 단 하나의 규칙: 카드 번호를 절대 저장하지 마라

여기서 시작하세요. 다른 모든 것이 여기에 매달려 있으니까요. 당신의 앱은 절대로 원본 신용카드 번호를 보거나, 저장하거나, 다뤄서는 안 됩니다. 데이터베이스에도, 당신이 만든 폼에도, “그냥 잠깐”도 안 됩니다. 카드 데이터를 직접 다루면, 어떤 초보 메이커도 짊어져서는 안 될 법적·보안 의무가 무더기로 당신에게 떨어집니다.

대신, 결제 제공업체를 씁니다 — Stripe가 흔한 선택이고, 대부분의 AI 앱 빌더가 잘 압니다. 제공업체가 미리 만들어진 안전한 결제 폼을 줍니다. 고객은 카드를 제공업체의 폼에 입력하고, 제공업체가 청구하며, 당신의 앱은 “네, 결제됐습니다”라는 메시지만 받습니다. 당신의 앱은 결제가 일어났다는 걸 압니다. 카드 번호는 결코 알지 못합니다.

AI 빌더에게 결제를 추가하라고 할 때, 이렇게 명확히 말하세요: “Stripe Checkout(또는 Stripe의 호스팅 결제 폼)을 써서 내 앱이 원본 카드 데이터를 절대 다루지 않게 해 줘.” 빌더가 카드 번호 입력란이 있는 맞춤 폼을 생성하기 시작하면, 멈추세요. 그게 바로 빌더가 만들지 않기를 바라는 단 하나입니다.

”결제 추가”가 실제로 무엇을 포함하는가

시작하기 전에 구성 요소를 알아 두면, 뭔가 빠졌을 때 알아챌 수 있어 유용합니다. 작동하는 결제 흐름에는 네 조각이 있습니다:

  1. 가격. 무엇을 얼마에 청구하는지, 그리고 일회성인지 정기인지. 이건 앱에 하드코딩하는 게 아니라 결제 제공업체에 있습니다.
  2. 결제 단계. 고객이 클릭하는 버튼으로, 그들을 제공업체의 안전한 폼으로 보냅니다.
  3. 앱으로 돌아오는 확인. 결제 후, 제공업체가 당신의 앱에 “이 사람이 이것을 결제했습니다”라고 알립니다. 이건 초보자가 가장 자주 건너뛰는 부분이며 — 건너뛰면 결제는 했는데 접근 권한은 못 받은 사람들이 생깁니다.
  4. 누가 무엇을 결제했는지에 대한 기록. 그래야 앱이 알맞은 것의 잠금을 풀 수 있고, 나중에 “이 사람이 결제했나?”에 답할 수 있습니다.

AI 빌더가 카드를 청구하는 결제 버튼을 줬는데 그 뒤로 앱이 아무것도 다르게 하지 않는다면, 2번 조각은 만들고 3번과 4번 조각은 잊은 겁니다. 그게 가장 흔한 반쯤 만들어진 결제 흐름이고, 고객이 결제하고 아무것도 못 받기 전까지는 멀쩡해 보입니다.

AI 빌더에게 어떻게 설명할까

위의 조각들을 다 담은 프롬프트입니다:

이 앱에 Stripe Checkout으로 유료 접근을 추가해 줘. 요금제는 하나야: 월 19달러.

로그인한 사용자가 “업그레이드”를 클릭하면 Stripe의 호스팅 결제 페이지로 보내. 맞춤 카드 폼은 만들지 마 — 내 앱은 카드 번호를 절대 다루지 않아야 해.

결제에 성공하면 그 사용자를 데이터베이스에서 “결제됨”으로 표시하고 리포트 페이지의 잠금을 풀어 줘. 결제가 실패하거나 취소되면, 메시지와 함께 가격 페이지로 되돌려 보내.

무언가의 잠금을 풀기 전에 Stripe 웹훅으로 서버 쪽에서 결제를 확인해 — 사용자가 성공 페이지로 돌아온 것만으로 잠금을 풀지 마.

그 마지막 문단이 진짜 결제 흐름과 허술한 결제 흐름을 가르는 부분입니다. 성공 페이지가 접근 권한을 풀게 하면, 성공 페이지의 주소를 알아낸 사람이 누구든 공짜로 잠금을 풀 수 있습니다. 웹훅 — Stripe에서 당신 앱의 백엔드로 가는 직접적이고 검증된 메시지 — 이 믿을 수 있는 신호입니다. 당신의 AI 빌더는 이걸 어떻게 설정하는지 알고 있습니다. 당신은 그저 이름을 대고 요청하기만 하면 됩니다.

진짜 돈 전에 가짜 돈으로 테스트하라

Stripe(그리고 대부분의 제공업체)는 진짜처럼 동작하는 가짜 카드 번호가 있는 테스트 모드를 줍니다 — 성공하는 카드, 거절되는 카드, 오류를 일으키는 카드까지요. 그걸 쓰세요. 진짜 카드 한 장이 앱에 닿기 전에, 모든 경로를 끝까지 거쳐 보세요:

  • 성공한 결제. 알맞은 것이 잠금 해제됐나요? 사용자 상태가 “결제됨”으로 바뀌었나요?
  • 거절된 카드. 앱이 매끄럽게 처리했나요, 아니면 사용자를 깨진 화면에 가둬 뒀나요?
  • 취소된 결제 — 사용자가 결제 대신 “뒤로”를 클릭한 경우. 그들이, 여전히 업그레이드되지 않은 채, 말이 되는 곳에 도착했나요?
  • 결제한 뒤, 로그아웃했다가 다시 로그인하기. 여전히 “결제됨” 상태인가요? (현재 세션에서만 접근 권한을 풀고 내일이면 잊어버리는 앱을 이걸로 잡아냅니다.)

AI 빌더에게 테스트 카드 번호를 물어보거나, 제공업체 문서에서 찾아보세요. “이 결제는 성공함” 용 흔한 테스트 카드는 빌더에게 요청하면 줄 수 있습니다. 네 가지 시나리오를 모두 돌려 보세요. 거절된 카드와 취소된 결제 경로가 AI 빌더가 가장 자주 깨진 채로 두는 것들입니다. 행복한 경로가 그들이 최적화하는 경로니까요.

진짜 돈을 잃게 하는 실수들

첫 결제 흐름에서 거듭 나타나는 몇 가지 구체적인 실패 양상이 있습니다:

웹훅 대신 성공 페이지에서 잠금 해제하기. 위에서 다뤘지만, 비싼 실수라 다시 짚을 만합니다. 사용자가 /success에 도착하는 순간 앱이 유료 기능의 잠금을 푼다면, 결제 여부에 대해 사용자의 브라우저가 정직하기를 믿는 셈입니다. 늘 그렇지는 않습니다. 웹훅에서 잠금을 푸세요.

무엇을 결제했는지에 대한 기록이 없음. 앱이 그냥 전역적인 “결제됨: 예” 플래그만 켠다면, 요금제가 둘 이상이 되거나, 누군가 해지하거나, 환불해 줘야 하는 순간 곤란해집니다. 구체적인 것을 저장하세요: 어떤 요금제인지, 언제인지, 그 결제에 대한 제공업체의 ID. 나중에 고객 응대 질문에 필요합니다.

구독이 끝난다는 걸 잊기. 일회성 결제는 단순합니다: 결제하면 결제한 겁니다. 정기 구독은 끊길 수 있습니다 — 카드가 만료되거나, 다음 달 결제가 실패하거나. 앱이 “결제했음”만 듣고 “구독이 끝났음”은 절대 안 듣는다면, 결제를 멈춘 뒤에도 공짜로 접근 권한을 유지하는 사람들이 생깁니다. 빌더에게 성공뿐 아니라 “구독 취소되거나 결제 실패함” 메시지도 처리하라고 말하세요.

가격이 두 곳에 있어서 잘못된 금액을 청구함. 가격이 앱의 화면에 그리고 결제 제공업체에도 적혀 있으면, 결국 둘이 어긋나서 고객이 19달러를 봤는데 29달러가 청구됩니다. 가격은 한 곳에 — 제공업체에 — 두고, 앱은 제공업체가 말하는 것을 그대로 표시하게 하세요. 진실의 원천은 하나로.

출시 전 짧은 체크리스트

테스트 모드에서 진짜 돈으로 전환하기 전에:

  • 내 앱에는 누군가 원본 카드 번호를 입력하는 입력란이 없다.
  • 결제는 사용자가 성공 페이지에 도달한 게 아니라 제공업체의 웹훅으로 확인된다.
  • 성공한 결제, 거절된 카드, 취소된 결제를 테스트했고 — 셋 다 말이 되게 동작한다.
  • 결제 후, 로그아웃해도 그리고 다음 날에도 접근 권한이 풀린 채로 유지된다.
  • 내 앱은 사람마다 단지 결제했다는 사실이 아니라 무엇을 결제했는지 기록한다.
  • 구독이 끊기면 접근 권한이 자동으로 제거된다.
  • 제공업체 키를 테스트 모드에서 라이브 모드로 전환했다 (잊기 쉽습니다 — 첫 진짜 고객이 테스트 키에 부딪히면 혼란스러운 오류를 받습니다).

모든 칸에 체크가 됐다면, 진짜 카드를 받을 준비가 된 겁니다. 안 됐다면, 그게 AI 빌더와 나눌 다음 대화입니다 — 링크를 공유하기 전에요, 첫 분쟁 후가 아니라.

도움이 되는 마음가짐

돈은 앱에서 “작동하는 것처럼 보임”과 “실제로 작동함”이 가장 멀리 떨어진 부분입니다. 깨진 레이아웃은 즉시 보입니다. 결제를 확인하지 않고 접근 권한을 푸는 결제 흐름은 완벽해 보입니다 — 누군가 알아채고 친구들에게 말하기 전까지는요.

그러니 결제 흐름을, AI로 만든 앱에서 회의론자처럼 테스트하는 단 하나의 부분으로 다루세요. 결제하지 않고 들어가 보려 해 보세요. 깨 보려 해 보세요. 결제한 다음 접근 권한을 잃어 보려 해 보세요. 당신 자신의 앱을 속이려고 쓰는 30분이, 당신이 그 앱에 들 수 있는 가장 싼 보험입니다.


만든 것에 결제를 추가하려 하나요? 다음 AI 빌더 세션을 열 때, 결제 버튼만 요청하지 말고 전체 흐름을 — 가격, 결제, 웹훅 확인, 무엇이 잠금 해제되는지 — 한 번에 설명하세요. 결제 버튼은 쉬운 10%입니다. 나머지 90%가 돈을 정직하게 지키는 부분입니다.