토스페이먼츠 붙이기 전, 비개발자가 먼저 정해야 할 것
AI로 만든 서비스에 토스페이먼츠를 붙이기 전에 주문 저장, 성공 URL, 실패 처리, 테스트 키와 운영 키, 관리자 확인 흐름을 먼저 정리해야 하는 이유를 설명합니다.
AI로 MVP를 만들다 보면 결제 기능을 붙이고 싶은 순간이 옵니다. 버튼을 누르면 결제창이 열리고, 테스트 결제가 성공하면 "이제 거의 다 됐다"고 느껴집니다.
하지만 결제창이 뜨는 것과 서비스에서 주문이 완성되는 것은 다른 일입니다. 토스페이먼츠를 붙이기 전에 먼저 정해야 할 것이 있습니다. 이걸 정하지 않고 AI에게 "결제 붙여줘"라고 하면, 결제는 되는 것 같은데 주문은 비는 상태가 나올 수 있습니다.
먼저 주문이 언제 만들어지는지 정해야 한다
결제 기능에서 가장 중요한 질문은 이것입니다.
주문은 결제 전에 만들어지나요, 결제 후에 만들어지나요?
둘 다 가능합니다. 다만 흐름이 달라집니다.
- 결제 전에 임시 주문을 만들면, 결제 성공 후 그 주문을 paid 상태로 바꿔야 합니다.
- 결제 후에 주문을 만들면, 성공 URL로 돌아온 값과 결제 결과를 확인해 주문을 새로 저장해야 합니다.
AI가 이 기준 없이 코드를 만들면 중간이 비는 경우가 많습니다. 결제창은 열리지만, 우리 서비스의 데이터베이스에는 어떤 상품을 누가 샀는지 남지 않을 수 있습니다.
성공 URL과 실패 URL을 운영 도메인 기준으로 잡는다
결제가 끝나면 사용자는 성공 URL이나 실패 URL로 돌아옵니다. 여기에는 주문 번호, 결제 키, 금액 같은 값이 붙을 수 있습니다.
초기 개발에서는 localhost나 미리보기 주소를 넣어 테스트합니다. 문제는 배포 후에도 그 주소가 남아 있는 경우입니다. 실제 고객이 결제했는데 localhost로 돌아가면 당연히 화면은 깨집니다.
확인할 것:
- successUrl이 실제 운영 도메인인가
- failUrl이 실제 운영 도메인인가
- www가 붙는 주소와 안 붙는 주소를 구분했는가
- 환경 변수에 예전 미리보기 주소가 남아 있지 않은가
- 배포 후 다시 테스트 결제를 해봤는가
결제는 배포 환경에서 다시 확인해야 합니다. 로컬에서 된다고 끝난 것이 아닙니다.
테스트 키와 운영 키를 섞지 않는다
결제 연동에는 보통 테스트 키와 운영 키가 나뉩니다. 테스트 결제로는 성공했는데 실제 결제에서 실패한다면 키와 환경을 먼저 봐야 합니다.
비개발자도 최소한 이 정도는 정리해두는 편이 좋습니다.
- 현재 쓰는 키가 테스트용인지 운영용인지
- Vercel이나 Netlify 환경 변수에 어떤 키가 들어갔는지
- 테스트 결제와 실제 결제를 어디까지 해봤는지
- 결제 실패 시 어떤 메시지가 보이는지
API 키 자체를 아무 곳에나 붙여넣을 필요는 없습니다. 대신 키 이름과 용도를 구분해서 관리해야 합니다. 특히 브라우저에 노출되면 안 되는 secret key는 조심해야 합니다.
결제 성공 화면보다 관리자 확인이 먼저다
사용자가 보는 주문 완료 화면도 중요하지만, 운영자가 확인할 수 있는 데이터가 더 중요합니다.
결제 테스트 후 반드시 확인해야 할 것:
- 주문 데이터가 데이터베이스나 관리자 화면에 남는가
- 결제 금액과 주문 금액이 일치하는가
- 상품명이나 옵션이 누락되지 않았는가
- 같은 결제를 새로고침해도 중복 저장하지 않는가
- 실패하거나 취소한 결제는 주문으로 처리되지 않는가
완료 화면에 "결제가 완료되었습니다"라고 떠도 관리자에서 주문을 찾을 수 없다면 운영은 실패입니다. 고객은 결제했다고 생각하고, 운영자는 무엇을 처리해야 하는지 모르는 상황이 됩니다.
AI에게 바로 구현시키기 전에 물어볼 질문
AI에게 결제 기능을 맡길 때는 바로 "토스페이먼츠 붙여줘"보다 아래 질문을 먼저 던지는 편이 안전합니다.
- 우리 프로젝트에서 주문은 결제 전과 결제 후 중 언제 저장하는 게 맞을까?
- 결제 성공 후 successUrl에서 어떤 값을 읽어야 할까?
- 결제 금액과 주문 금액이 일치하는지 어디서 확인해야 할까?
- 테스트 키와 운영 키를 환경 변수로 어떻게 나눠야 할까?
- 결제 실패나 취소 시 사용자는 어떤 화면을 봐야 할까?
이 질문에 대한 답이 정리되면 구현 범위도 작아지고, 나중에 문제가 생겼을 때 어디를 봐야 하는지도 분명해집니다.
정리
토스페이먼츠를 붙이기 전에는 결제창보다 주문 흐름을 먼저 정해야 합니다.
- 주문이 언제 만들어지는지
- 성공 URL과 실패 URL이 운영 도메인인지
- 테스트 키와 운영 키가 구분되어 있는지
- 관리자에서 주문을 확인할 수 있는지
- 실패와 취소 흐름이 준비되어 있는지
결제는 화면 기능이 아니라 운영 흐름입니다. AI가 결제창을 띄워주는 것만으로는 부족합니다. 결제 이후 우리 서비스가 무엇을 저장하고, 무엇을 보여주고, 운영자가 무엇을 확인할지까지 잡아야 합니다.
관련 글: 토스페이먼츠 결제 후 페이지가 비는 문제, AI가 만든 서비스인데 배포 후 안 되는 이유 TOP 10, Supabase 데이터 저장 안됨
LastFix 무료 진단
AI·바이브코딩으로 해결되지 않는 개발 이슈가 있다면 원인부터 확인하세요
배포 오류, UI 깨짐, 결제·예약 연동, 작은 기능 수정을 단건으로 진단하고 필요한 범위만 정리합니다.