주문 상태 흐름

결제·배송·취소 상태를 미리 정해야 CS와 정산이 안 틀어져요. 상태를 몇 개 둘지보다 어디서 어디로 넘어가도 되는지가 먼저예요.

쉽게 말하면

계산대 옆 벽에 전표 걸이를 세 개 박아 뒀다고 생각해 보세요. 접수 · 준비 · 나감 순서로요. 전표는 왼쪽에서 오른쪽으로만 옮기기로 정했고, 손님이 무르면 따로 박아 둔 취소 걸이로 빼요. 이 벽에 그려 둔 화살표가 주문 상태 흐름이에요. 상태 이름을 짓는 일이 아니라, 어느 걸이에서 어느 걸이로 옮겨도 되는지를 미리 정해 두는 일이에요.

그래서 상태를 몇 개 둘지보다 화살표를 몇 개 허락할지가 먼저예요. 상태가 여섯 개면 옮길 수 있는 경우의 수는 서른 가지인데, 실제로 열어 둘 길은 예닐곱 개뿐이에요.

화살표를 안 정한 가게
상태 목록 접수 / 준비 / 발송 / 완료 / 취소 (아무나 아무 상태로 바꿀 수 있음)

발송이 끝난 주문을 접수로 되돌리는 실수가 나와요. 그 한 번에 재고 숫자와 정산 숫자가 같이 어긋나요.

화살표를 정한 가게
접수 → 준비 → 발송 → 완료 접수 → 취소 (열어 둠) 발송 → 취소 (막음, 반품으로만)

막아 둔 길은 사람이 실수해도 눌리지 않아요. 사고가 나고 수습하는 게 아니라 사고가 안 생겨요.

돈 줄과 물건 줄을 따로 그려요

주문 하나에는 사실 줄이 두 개예요. 돈이 어디까지 갔는가물건이 어디까지 갔는가는 따로 움직여요.

이 둘을 한 줄로 합치면 표현할 수 없는 상황이 반드시 생겨요. 결제는 승인됐는데 물건은 아직 창고에 있는 상태, 물건은 나갔는데 환불이 진행 중인 상태를 적을 자리가 없어지거든요.

여기서 쓰는 상태바뀌는 계기틀리면 생기는 일
돈 줄결제대기 · 결제완료 · 결제취소 · 환불완료결제대행사가 보내 주는 통보정산 금액이 안 맞아요
물건 줄접수 · 준비중 · 발송완료 · 배송완료내가 손으로 바꾸거나 송장이 들어올 때손님 문의가 몰려요
둘이 만나는 자리취소 가능 · 반품접수돈 줄과 물건 줄을 함께 봐야 정해져요받아 주면 안 될 취소를 받아 줘요
기록 줄누가 언제 무엇을 바꿨는지상태가 바뀔 때마다 한 줄씩 쌓아요분쟁에서 증명할 게 없어요

돈은 상태가 아니라 사건이에요

결제 승인, 결제 취소, 환불은 한 번 일어난 사건이에요. 지웠다 다시 쓰는 값이 아니라 아래로 쌓이는 기록으로 남겨요. 그래야 정산과 입금 내역과 한 줄씩 맞춰 볼 수 있어요.

허락할 화살표를 표로 적어요

여기까지 정했으면 표 한 장으로 옮겨요. 이 표가 그대로 개발 지시서가 되고, 알바에게 주는 응대 기준이 돼요.

지금 상태갈 수 있는 곳막아 둘 곳돈이 움직이나
결제대기결제완료 · 주문취소준비중 · 발송완료아직 안 움직여요
결제완료준비중 · 주문취소결제대기로 되돌리기취소하면 결제 취소가 나가요
준비중발송완료 · 주문취소결제대기취소하면 결제 취소나 환불이 나가요
발송완료배송완료 · 반품접수주문취소반품이 끝난 뒤에 환불이 나가요
배송완료반품접수 · 거래종료발송완료로 되돌리기부분환불이 섞일 수 있어요
주문취소여기서 끝다시 살리기환불 기록이 남아요

표에서 가장 값진 칸은 막아 둘 곳이에요. 실수를 줄이는 건 교육이 아니라 눌리지 않는 버튼이에요.

여기서 CS와 정산이 틀어져요

사고는 늘 같은 순서로 커져요. 웹훅(결제사가 결과를 먼저 알려 주는 통보)이 몇 초 늦게 도착하는 자리에서 시작해요.

  1. 1손님이 결제하고 완료 화면을 봐요. 우리 쪽에는 결제대행사의 통보가 아직 도착하지 않아서 주문은 결제대기로 남아 있어요.
  2. 2손님이 새로고침해도 결제대기라 결제 버튼을 다시 눌러요. 같은 주문에 승인이 두 건 잡혀요.
  3. 3뒤늦게 통보 두 건이 함께 도착해요. 화살표를 안 정해 뒀으면 두 번째 통보가 첫 번째 기록을 그대로 덮어써요.
  4. 4문의를 받은 창구는 취소를 한 건만 처리해요. 남은 한 건은 아무도 모르는 채 정산에 들어가요.
  5. 5월말에 주문 수와 입금액이 안 맞아요. 원인을 찾는 데 하루가 들고, 그사이 손님은 카드사에 이의를 넣어요.

같은 통보가 두 번 와도 한 번만 처리되게

결제대행사는 우리 서버에서 잘 받았다는 답을 못 들으면 같은 통보를 다시 보내요. 고장이 아니라 정상 동작이에요. 그래서 이미 결제완료인 주문에 결제완료 통보가 또 오면 아무 일도 하지 않도록 정해 둬요. 화살표 표에 한 줄 넣는 것으로 충분해요.

가게에서 실제로 겪는 장면

장면 1 · 알바가 물었다

손님이 방금 취소해 달라는데, 송장은 아침에 이미 찍었어요. 취소 눌러도 되나요?

이 질문이 나온다는 건 화살표 표가 없다는 뜻이에요. 발송완료에서 주문취소로 가는 길은 막아 두고, 대신 반품접수라는 다른 길을 열어 둬요. 두 길은 돈이 나가는 시점이 달라요. 취소는 지금 나가고, 반품은 물건을 받아 확인한 뒤에 나가요. 차이는 결제취소와 환불의 차이에서 봐요.

장면 2 · 외주 개발자가 말했다

상태는 그냥 글자로 저장해 뒀어요. 나중에 필요하면 값 추가하시면 돼요.

편해 보이지만 이러면 누구든 아무 값이나 넣을 수 있어요. 넣을 수 있는 값의 목록과 화살표를 코드에 박아 달라고 요구해요. 목록에 없는 값은 저장 자체가 거부되게요. 사장님이 표 한 장만 건네면 개발자는 그대로 옮기면 돼요.

헷갈리기 쉬운 것

상태 이야기에서 사장님들이 가장 자주 부딪히는 오해 네 가지예요. 여기서 어긋나면 표를 아무리 잘 그려도 소용이 없어요.

흔한 오해실제로는
상태를 잘게 나눌수록 정확해진다내 행동이 달라지지 않는 구분은 상태가 아니에요. 알림만 늘고 직원 손이 더 가요
취소를 누르면 돈도 같이 돌아간다주문 상태와 돈은 따로 움직여요. 결제 취소 요청이 별도로 나가고, 실패할 수도 있어요
상태를 되돌리면 원래대로 돌아온다이미 나간 알림과 이미 잡힌 정산은 안 돌아와요. 되돌리기 대신 새 기록을 쌓아요
상태는 화면 표시일 뿐이다재고 차감·정산·증빙이 전부 상태에 매달려 있어요. 표시가 아니라 장부예요

자주 묻는 것

Q. 상태를 몇 개부터 시작하면 되나요?
결제대기·결제완료·준비중·발송완료·배송완료·주문취소 여섯 개면 물건 파는 가게 대부분이 돌아가요. 반품과 부분환불이 실제로 생긴 다음에 늘려도 늦지 않아요.
Q. 이미 운영 중인데 지금 화살표를 정해도 되나요?
돼요. 순서가 있어요. 먼저 지금 쌓인 주문에 어떤 상태 값이 들어 있는지 세어 보세요. 표에 없는 값이 나오면 그 자리가 그동안 새던 곳이에요. 그 값을 어디로 보낼지 정한 뒤에 새 규칙을 켜요.
Q. 손님에게도 이 상태 이름을 그대로 보여주나요?
안 그러는 편이 좋아요. 안에서 쓰는 이름과 손님 화면에 쓰는 말은 따로 정해요. 표기를 고르는 요령은 주문 상태 관리에 있어요.
Q. 부분취소는 어느 화살표인가요?
주문 전체가 아니라 품목마다 상태를 따로 두는 이야기예요. 금액 계산에 배송비와 쿠폰이 얽히니 부분환불을 먼저 읽고 설계해요.
Q. 상태가 바뀔 때마다 손님에게 알림을 보내야 하나요?
전부 보낼 필요는 없어요. 손님의 기다림이 달라지는 지점에서만 보내요. 보통 결제완료·발송완료·환불완료 셋이면 충분해요.

확인해 보세요

손님이 결제 버튼을 두 번 눌러 승인이 두 건 잡혔어요. 다시 안 생기게 하려면 무엇을 먼저 정해야 할까요?

하나 더

발송이 끝난 주문에 손님이 취소를 요청했어요. 표에는 어떻게 적어 두는 게 맞을까요?

직접 해보기

내 가게 화살표 표를 화면으로 만들어 보세요

에이전트 스튜디오에 이렇게 적어 보세요. "주문 상태를 결제대기·결제완료·준비중·발송완료·배송완료·주문취소로 두고, 정해진 순서로만 바꿀 수 있게 해줘. 막힌 이동은 버튼이 아예 안 눌리게 하고, 상태가 바뀔 때마다 시각과 바꾼 사람을 기록으로 남겨줘." 표로 적어 둔 규칙이 화면에서 어떤 버튼으로 바뀌는지 만들어 보면 바로 알아요.

에이전트 스튜디오 열기

더 깊이 (안 읽어도 괜찮아요)

지금 상태는 한 칸, 기록은 여러 줄 · 주문 표에는 지금 상태 한 칸만 두고, 바뀐 내역은 별도 기록 표에 한 줄씩 쌓아요. 지금 상태만 읽으면 목록 화면이 빨라지고, 기록을 펼치면 분쟁 때 시각까지 증명돼요. 남기는 요령은 누가 무엇을 했나 기록에 있어요.

돈이 움직이는 화살표는 한 묶음으로 · 결제 취소 요청과 주문 상태 변경은 둘 다 되거나 둘 다 안 되어야 해요. 하나만 성공하면 돈은 나갔는데 주문은 살아 있는 상태가 돼요. 묶는 방법은 한 묶음으로 처리하기에서 봐요.

표에 없는 값이 들어오면 멈추게 · 상태를 자유로운 글자로 받으면 오타 하나가 조용히 저장돼요. 목록에 없는 값이 오면 저장을 거부하고 기록만 남기도록 요구해요. 조용히 들어간 이상한 값은 몇 달 뒤 정산에서야 발견돼요.

이것만 기억하세요

  • ·상태 목록보다 화살표 목록이 먼저예요. 어디서 어디로 갈 수 있는지 표로 적어요
  • ·돈 줄과 물건 줄을 따로 그려요. 결제는 사건이라 기록으로 쌓아요
  • ·막아 둘 화살표를 정하면 사람이 실수해도 사고가 안 생겨요
  • ·같은 통보가 두 번 와도 한 번만 처리되게 못 박아요
  • ·발송이 끝난 뒤의 취소는 반품 길로 보내요. 돈이 나가는 시점이 달라요
VibeCampus새 빌드