소개
음성이나 텍스트로 메모하면 AI가 전사·제목·태그를 붙여주는 앱(혼잣말사전 / Ramble)을 만들고 있습니다.
👉 랜딩 — https://td4u.kr/ramble/
👉 앱 (가입 없이 바로 써보실 수 있습니다) — https://td4u.kr/ramble/app.html
4주차 과제가 커스텀 도메인이 붙은 배포 주소와 결제 흐름이라, 제가 그 둘을 어떤 순서로 어떻게 붙였는지 그대로 적겠습니다. 후기는 맨 끝에 짧게 붙입니다.
먼저 지금 상태를 밝혀둡니다. 결제 연동은 끝났고, 실제 결제는 아직 못 받습니다. 카드사 심사가 8월 중순입니다. 그리고 저는 개발자가 아닙니다. 20년 동안 편집실을 만들고 고치는 일을 했고, 코드는 AI한테 물어가며 씁니다.
제가 이번에 제일 크게 배운걸 먼저 말씀드리면 이겁니다.
도메인·호스팅·가격·PG를 저는 네 개의 일로 알고 하나씩 정했습니다. 사실은 하나의 결정이었습니다. 그래서 순서를 틀릴 때마다 앞으로 돌아가야 했습니다.
진행 방법
사용 도구
hosting.kr — 도메인 구매
Cloudflare Workers — 사이트가 도는 자리 (무료)
포트원(PortOne) V2 — 여러 결제사를 한 번에 연결해주는 중개 플랫폼
한국결제네트웍스(KPN) — 실제로 카드 결제를 처리하는 PG사
Supabase — 발급한 이용권을 저장하는 데이터베이스
Claude / Codex / ChatGPT
제가 실제로 밟은 순서와, 다시 한다면 밟을 순서
제가 한 순서
여기서 되돌아왔습니다
1
가격을 정했다 (월 1,900 / 연 9,900)
← 이게 나중에 결제 수단을 먼저 지웠습니다
2
결제사를 알아봤다 (토스페이먼츠 직접 문의 → 33만원)
3
도메인을 샀다 (td4u.kr)
← 이걸로 호스팅 문제가 풀린 줄 알았습니다
4
호스팅을 옮겼다 (Vercel → Cloudflare)
← 여기서 3일이 갔습니다
5
중개 플랫폼을 찾았다 (포트원 + KPN, 가입비 0원)
6
결제 흐름을 붙였다
← 코드는 하루
7
카드사 심사 접수
← 지금 여기
다시 한다면 이 순서로 하겠습니다.
지금 만드는 게 상업적 용도인지부터 확정 — 이거 하나로 호스팅 선택지가 갈립니다
도메인 — 첫해 가격 말고 갱신 가격으로 고릅니다
가격과 결제사를 같이 정합니다 — 따로 정하면 안 됩니다. 이유는 5절에
법적 문서 4종과 홈페이지 하단 사업자정보 — 심사에서 이걸 봅니다
결제 흐름 연동
심사 접수 — 2주 걸립니다. 이 2주를 일정에 미리 넣어두세요
1. 도메인 — 2,500원짜리를 사려다 14,000원짜리를 샀습니다
hosting.kr에서 도메인을 검색하고 「낮은 가격순」으로 정렬했습니다. 맨 위가 2,500원이었습니다. 당연히 그걸 사려고 했습니다.
사기 전에 AI한테 물어봤는데, 두 가지가 걸렸습니다.
하나 — 그 값은 첫해 이벤트가였습니다. 취소선 옆에 붙은 정가가 30,000~50,000원이었습니다. 2년차부터는 .com보다 비쌉니다.
둘 — 그런 주소는 스팸으로 걸릴 수 있습니다. .icu · .cyou · .bond 같은 것들이 스팸에 많이 쓰여서, 회사 방화벽이 막거나 보낸 메일이 스팸함으로 갑니다.
이때 친 프롬프트
도메인 사려는데 2500원짜리가 제일 싸.
근데 이런 싼 도메인 써도 문제 없나? 먼저 확인해줘.돌아온 답이 위 두 가지였습니다. 그래서 td4u.kr을 14,000원(갱신 20,000원)에 샀습니다.
결제를 받는 사이트에서 연 2만원 아끼려고 신뢰를 깎는 거래는 안 하기로 했습니다. 사고파는 사이트에서 주소는 간판이더군요.
확인해보실 것 — 도메인 목록을 「낮은 가격순」으로 정렬하지 마세요. 그 정렬은 첫해 값으로 줄을 세웁니다. 갱신가 칸을 찾아서 그걸로 보시면 순서가 완전히 달라집니다.
2. 도메인을 샀는데 아무 문제도 안 풀렸습니다
저는 예전에 다른 앱 랜딩에 도메인을 붙여본 적이 있습니다. 연 2,000원에 샀던 기억이 있어서, 이번에도 「이름 하나 사면 되는 일」로 생각하고 있었습니다.
아니었습니다. 이름과, 코드가 도는 자리는 별개였습니다.
제가 하나로 세고 있던 게 사실은 두 개였습니다.
문제
무엇 이 푸는가
PG 심사에 낼 서비스 주소가 없다
도메인이 푼다
지금 쓰는 호스팅이 상업적 이용을 금지한다
호스팅 이전이 푼다
도메인을 붙여도 코드는 그대로 원래 자리에서 돕니다. 그리고 약관은 주소가 아니라 용도를 봅니다. 그래서 도메인을 사도 두 번째 문제는 그대로 남아 있었습니다.
두 개인 줄 몰랐기 때문에 「2,000원이면 되는 일」로 보였던 겁니다.
3. 호스팅 — 무료로 잘 돌아가던 걸 옮겼습니다
MVP를 Vercel 무료 플랜(Hobby)에 올려두고 있었습니다. 아무 문제 없이 잘 돌았습니다.
그런데 약관을 읽어보니 Hobby는 비상업적·개인 용도 전용이었습니다. 결제를 켜는 날부터 약관 위반이 됩니다. 유료인 Pro는 $20/월, 연 33.6만원입니다.
그래서 Cloudflare Workers 무료 플랜으로 옮겼습니다. 상업적 이용이 가능합니다.
실제로 손이 많이 간 건 따로 있었습니다.
환경변수 읽는 방식이 다릅니다. Vercel은 파일 어디서나 읽히는데, Workers는 함수가 실행될 때 넘어오는 값으로 받아야 합니다. 이것 때문에 파일 4개의 구조를 바꿨습니다. 이식에서 제일 큰 작 업이었습니다
주소를 정하는 방식이 다릅니다. Vercel은 폴더 구조가 곧 주소인데, Workers는 라우팅 표에 직접 적습니다
확인해보실 것 — 지금 쓰시는 무료 플랜 약관에서
commercial한 단어만 검색해보세요. 결제를 붙일 계획이 있으면 붙이기 전에 보시는 게 낫습니다. 저는 결제를 알아보다가 우연히 발견했습니다.
주소 구조는 폴더 방식으로 정했습니다.
td4u.kr/ 회사 원페이지
td4u.kr/ramble/ Ramble 랜딩
td4u.kr/ramble/app 앱
td4u.kr/ramble/api/ 서버 함수앱마다 폴더를 나눈 이유는, 나중에 다른 앱을 같은 도메인에 올릴 때 서비스 워커(오프라인 캐시) 범위가 서로 부딪히기 때문입니다. 루트에 하나 올려두면 나중에 되돌리기가 어렵습니다.
4. 결제사 — 직접 가느냐 중개를 거치느냐로 가입비가 갈렸습니다
제일 유명해서 토스페이먼츠에 직접 문의를 넣었습니다. 초기 비용 33만원이라고 돌아왔습니다. 한 명도 안 판 앱이라 거기서 멈췄습니다.
다른 길을 찾다가 포트원을 봤습니다. 여러 결제사를 한 번에 연결해주는 중개 플랫폼입니다. 여기서 별개인 두 가지가 둘 다 0원이라는 걸 알았습니다.
무엇
조건
포트원 이용료
Free 플랜
월 순거래액 5,000만원 미만
PG사 가입비
PG사마다 다름
아래 표
연 9,900원짜리로 월 5,000만원을 채우려면 한 달에 5,050명이 사야 합니다. 저한테는 사실상 상한이 없는 셈이었습니다.
그리고 포트원 콘솔에서 PG사별 가입비를 봤더니 이렇게 갈렸습니다.
0원 — NHN KCP, 한국결제네트웍스(KPN)
각 20만원(VAT 별도) — 토스페이먼츠, KG이니시스, 스마트로, KSNET, 키움페이 등
같은 회사인데 직접 가느냐 중개를 거치느냐로 값이 달랐고, 0원인 곳도 두 곳이나 있었습니다.
저는 KPN으로 정했습니다.
확인해보실 것 — PG사를 고르기 전에 중개 플랫폼 콘솔의 「PG사별 가입비」 표를 먼저 보세요. 저는 그걸 안 보고 제일 유명한 곳에 직접 전화를 걸었습니다. 그 이틀 동안 제가 한 고민은 「33만원을 어떻게 마련하지」였는데, 실제 질문은 「이 길 말고 다른 길이 있나」였어야 했습니다.
5. 순서가 거꾸로였습니다 — 가격을 먼저 정한 게 결제 수단을 지웠습니다
이게 이 글에서 제일 실용적인 부분일 것 같아 따로 뺐습니다.
저는 처음에 연 6,900원으로 생각했다가, 더 부담 없이 쓰시라고 월 1,900원 / 연 9,900원으로 내렸습니다. 사용자한테 좋은 결정이라고 믿었고, 지금도 그 판단은 맞다고 봅니다.
그런데 그 1,900원이 제 결제 선택지를 먼저 지워놨습니다.
가입비가 없다는 해외 결제 대행(MoR)을 알아봤는데 수수료가 5% + 건당 $0.50이었습니다. 환율 1,400원으로 계산하면 이렇습니다.
상품
5% + 건당 $0.50
국내 카드 2.90%
월 1,900원
795원 = 41.8%
55원 = 2.9%
연 9,900원
1,195원 = 12.1%
287원 = 2.9%
문제는 5%가 아니라 뒤에 붙은 $0.50, 그러니까 700원이었습니다. 수수료율은 상품 값에 비례하는데 건당 고정비는 비례하지 않습니다. 소액 상품에서는 이 고정비가 전부입니다.
가격을 정하는 일과 결제사를 고르는 일이 사실은 같은 결정이었습니다. 저는 그걸 따로 했고, 순서까지 거꾸로였습니다.
확인해보실 것 — 상품 단가가 만원 아래면, 결제사를 고르기 전에 계산기 한 번만 두드려보세요.
단가 × 수수료율 + 건당 고정비입니다. 단가가 3만원, 5만원이면 고정비 비중이 확 떨어져서 이야기가 완전히 달라집니다. 숫자는 업체·시점마다 다르니 직접 확인하시는 게 좋습니다.이 계산 이야기는 지난 사례글에 자세히 적었습니다.
6. 결제 흐름은 이렇게 붙였습니다 — 코드는 하루 걸렸습니다
여기가 과제의 「결제 흐름 구현」 부분입니다. 네 단계입니다.
결제 페이지 ─① /api/pay/prepare 서버가 금액을 정해서 PG에 미리 등록
─② 결제창 (PG SDK)
─③ /api/pay/complete PG에 다시 물어봄 → 금액 대조 → 이용권 키 발급
PG사 ─④ /api/pay/webhook 브라우저가 안 돌아와도 같은 발급 함수를 부름실기기에서 한 바퀴 다 돌렸습니다 — 사전등록 → 결제창 → 이용권 키 발급 → 앱 활성화. 웹훅 서명 검증도 통과했습니다.
확인해보실 것 — 결제 완료 화면에서 새로고침을 한 번 해보세요. 저는 이때 이용권 키가 화면에서 사라졌습니다. 같은 결제를 다시 물어볼 방법을 화면에 안 남겨둔 탓이었습니다.
7. 지금 상태 — 신청은 냈고 심사 중입니다
지금 도는 건 테스트 채널입니다. 실제 돈은 아직 못 받습니다. 카드사 심사가 끝나고 가맹점 번호가 나오면, 환경변수 하나를 넣는 것으로 실연동으로 바뀌게만들어뒀습니다. 코드는 안 고쳐도 됩니다.
심사 접수까지 필요했던 것을 적어둡니다. 코드보다 이쪽이 오래 걸렸습니다.
사업자등록증 (개인사업자로 냈습니다)
통신판매업 신고
홈페이지 하단 사업자정보 — 상호·대표자·사업자번호·주소·연락처
법적 문서 4종 — 이용약관 · 개인정보처리방침 · 환불정책 · 요금표
유선전화 착신 확인
확인해보실 것 — 결제를 붙이기 전에 문서 4종과 사업자정보를 먼저 깔아두세요. 심사 단계에서 이걸 봅니다. 미리 있으면 그날 접수되고, 없으면 거기서 며칠이 갑니다. 저는 개인정보처리방침에 이미 계약을 끝낸 회사 이름이 그대로 남아 있어서 급하게 고쳤습니다.
결과와 배운 점
결과 — 4주 동안 커스텀 도메인 붙은 주소로 배포했고, 결제 흐름을 실기기에서 한 바퀴 돌렸고, 심사를 접수했습니다. 유료 고객은 아직 0명입니다. 심사 통과 전입니다.
나만의 꿀팁 두 가지
무료로 잘 돌아가는 것부터 약관을 보세요. 오류가 안 나니까 아무도 안 알려줍니다. 저는 결제를 알아보다 우연히 발견했고, 발견 안 했으면 결제를 켜는 날 위반 상태로 장사를 시작할 뻔했습니다.
가격과 결제사는 같이 정하세요. 단가가 만원 아래면 수수료「율」이 아니라 건당 고정비가 결정합니다. 계산기 한 번이면 끝나는 일인데 저는 그걸 나중에 했습니다.
시행착오도 있었습니다
도메인 목록을 「낮은 가격순」으로 정렬하고 맨 위를 사려 했습니다. 전부 첫해 이벤트가였습니다.
도메인을 사면 호스팅 문제가 풀리는 줄 알았습니다. 두 개인 줄 몰라서 하나로 세고 있었습니다.
가격을 먼저 정하고 결제사를 나중에 골랐습니다. 순서가 거꾸로였고, 사실 같은 결정이었습니다.
결제 완료 화면에서 새로고침하니 이용권 키가 사라졌습니다.
심사 기간 2주를 일정에 안 넣어놨습니다. 코드가 끝나면 끝인 줄 알았습니다.
도움이 필요한 부분
국내 카드사(PG) 심사가 반려됐을 때 어떻게 하셨는지 궁금합니다. 사유를 안 알려주는 경우가 많다고 들어서, 재신청 계획 자체가 잘 안 서더군요.
해외 결제를 붙여보신 분 계실까요. 지금 붙인 국내 PG는 해외 카드를 안 받아서 따로 붙여야 하는데, 아직 못 열었습니다.
앞으로의 계획은 심사가 도는 동안 앱만 다듬는 것입니다. 목록을 닫아두고 기능 추가는 안 하기로 했습니다. 심사가 통과하면 국내에서 먼저 10건을 팔아보고, 거기서 답이 나오면 해외로 갑니다.
마지막으로 — 4주 후기
지난주 오프라인 모임 발표 마지막에 했던 이야기로 마무리하겠습니다.
이 스터디를 하면서 계속 떠오르던 장면이 하나 있습니다.
항구 옆에 장비 시장이 열린 것 같았습니다. 새 기능, 자동화, 콘텐츠 제작, 지식 관리 — 매일 좋은 물건이 들어옵니다. 저는 그 시장을 몇 달 동안 구경만 했습니다.
그런데 시장에서 물건을 사는 이유가 뭘까 생각해봤습니다.
출항하려고 사는 겁니다.
장비를 다 갖추는 게 목적이 되면, 배는 영영 안 뜹니다.
이번 4주 동안 제가 한 일을 위에 순서대로 적어놨는데, 다시 읽어보니 대단한 기술은 하나도 없습니다. 도메인을 갱신가로 보고, 약관에서 단어 하나를 검색하고, 계산기를 두드리고, 콘솔 화면을 한 번 더 열어본 게 전부입니다.
부족해도 되고, 잘 몰라도 됩니다. 저는 제 콘텐츠, 제 도메인 안에서 시작하기로 했습니다.
혹시 이 4주 동안 어디선가 멈추신 분이 계시다면 — 장비가 모자라서 멈춘 게 아닐 수도 있습니다. 아직 안해봐서 그럴 수도 있습니다. 저는 위에 적은 것 중 세 번이 그랬습니다. 33만원도, CPU 10ms도, 도메인 값도, 확인해보기 전에 겁먹었고 실제로 보니 겁냈던 크기가 아니었습니다.
읽어주셔서 감사합니다.
도움 받은 글
Vercel — Fair Use Policy (Hobby 비상업 조항)
Cloudflare — Workers 요금제·한도
포트원 — 가격 안내 (Free 플랜 조건)
포트원 헬프센터 — 한국결제네트웍스(KPN) 상세 계약절차 (심사 일정과 서류)
포트원 개발자센터 — 인증 결제 연동하기
포트원 개발자센터 — 웹훅 연동하기