출시·운영 가이드

결제 앱의 주문·결제·취소·환불 상태는 어떻게 설계할까요?

결제 승인은 주문이나 서비스 제공 완료와 같은 상태가 아닙니다. 결제 앱 개발에서 주문과 결제 상태를 분리하고 중복 요청, 취소, 부분 환불과 응답 지연을 고객 앱·서버·관리자에서 일관되게 처리하는 기준을 설명합니다.

약 11분처음 앱을 만드는 분을 위한 안내
고객 앱과 서버, 결제사, 관리자를 연결하면서 주문 상태와 결제 상태를 별도로 관리하는 결제 앱 개발 흐름
01

결제 완료와 주문 완료는 같은 상태가 아닙니다

결제 앱을 기획할 때 결제가 성공하면 주문 완료라는 상태 하나로 묶기 쉽습니다. 하지만 결제 승인은 금액 처리가 승인됐다는 뜻이고, 주문·예약·상담 완료는 약속한 상품이나 서비스가 제공됐다는 뜻입니다.

예를 들어 고객이 상담비를 결제해도 상담 일정은 아직 전문가 확인 전일 수 있습니다. 상품 주문은 결제가 승인된 뒤 재고 확인과 배송 준비가 남습니다. 반대로 무통장입금처럼 주문이 먼저 접수되고 결제 확인이 나중에 이루어지는 방식도 있습니다.

따라서 결제 앱 개발에서는 최소한 다음 두 흐름을 별도로 기록해야 합니다.

두 상태를 분리하면 결제는 승인됐지만 예약은 확인 중, 서비스 일부만 이용해 부분 환불 처리 중처럼 실제 상황을 정확하게 표시할 수 있습니다.

확인해보세요

  • 주문·서비스 상태: 신청, 확인, 준비·진행, 완료, 취소
  • 결제 상태: 결제 대기, 처리 중, 승인, 실패, 취소 요청, 부분 환불, 전액 환불
02

주문 상태와 결제 상태를 연결하는 기준을 정합니다

상태를 따로 저장하는 것만으로는 충분하지 않습니다. 어떤 상태 조합이 가능한지, 다음 상태로 바꾸는 주체가 누구인지 함께 정해야 합니다.

대표 상태 조합은 다음과 같습니다.

모든 서비스가 같은 상태명을 사용할 필요는 없습니다. 다만 상태 이름만 보고 고객이 무엇을 기다리는지, 운영자가 무엇을 해야 하는지, 금액이 어디까지 처리됐는지를 구분할 수 있어야 합니다.

결제 앱에서 주문 상태와 결제 상태를 두 줄로 나누고 고객 앱, 서버, 결제사와 관리자를 연결한 흐름
결제 승인과 서비스 제공 완료를 분리하면 고객 안내와 운영 처리를 정확하게 연결할 수 있습니다.

확인해보세요

  • 결제 수단 선택 중 — 주문·서비스: 신청 작성 중 · 결제: 결제 대기 · 다음 처리: 고객
  • 카드 승인 확인 중 — 주문·서비스: 접수 전 또는 접수 중 · 결제: 처리 중 · 다음 처리: 서버·결제사
  • 결제 후 담당자 확인 대기 — 주문·서비스: 확인 중 · 결제: 승인 · 다음 처리: 운영자
  • 상품 준비 또는 서비스 진행 — 주문·서비스: 준비·진행 · 결제: 승인 · 다음 처리: 운영자·파트너
  • 고객 취소 요청 — 주문·서비스: 취소 요청 · 결제: 승인 또는 취소 요청 · 다음 처리: 운영자·서버
  • 일부 금액 환불 — 주문·서비스: 일부 취소 또는 진행 · 결제: 부분 환불 · 다음 처리: 운영자·결제사
  • 전체 취소 완료 — 주문·서비스: 취소 · 결제: 전액 환불 · 다음 처리: 서버·결제사
03

결제 결과는 고객 화면이 아니라 서버에서 확인합니다

고객 앱에서 결제 성공 화면이 열렸다는 사실만으로 결제 완료를 확정하면 안 됩니다. 화면 전환 도중 통신이 끊기거나 고객이 앱을 닫을 수 있고, 결제사 응답이 늦게 도착하거나 같은 응답이 다시 전달될 수도 있습니다.

안전한 결제 흐름은 다음 순서로 이해할 수 있습니다.

이렇게 하면 앱 화면, 관리자와 결제사 중 한 곳에만 다른 결과가 남는 상황을 줄일 수 있습니다. 앱·관리자·서버·데이터가 연결되는 기본 구조는 앱·관리자·서버·데이터베이스는 어떻게 연결될까요?에서 직접 확인할 수 있습니다.

확인해보세요

  • 서버가 주문번호와 결제 요청 식별값, 결제할 금액을 만듭니다.
  • 고객 앱은 그 값을 사용해 결제를 시작합니다.
  • 결제 완료 화면이 열려도 앱은 서버에 결과 확인을 요청합니다.
  • 서버는 결제사 결과의 주문번호·금액·승인 여부를 다시 확인합니다.
  • 확인된 결과만 주문과 결제 기록에 반영합니다.
  • 고객 앱과 관리자는 서버에 저장된 최신 상태를 조회합니다.
04

같은 결제 요청이 반복돼도 한 번만 처리되게 합니다

결제 버튼을 여러 번 누르거나 네트워크가 느려 앱이 같은 요청을 다시 보내는 상황을 고려해야 합니다. 단순히 버튼을 잠시 비활성화하는 것만으로는 서버에 중복 요청이 도착하는 모든 경우를 막기 어렵습니다.

서버는 결제 시도마다 고유한 요청 식별값을 사용하고, 같은 식별값의 요청이 다시 오면 새 결제를 만들지 않고 이미 처리한 결과를 돌려주는 방식으로 설계할 수 있습니다. 고객에게는 처리 중임을 보여주고 결과가 불확실하면 다시 결제시키기 전에 기존 요청의 상태를 확인합니다.

운영자도 주문번호와 결제 거래번호를 함께 검색할 수 있어야 중복 승인 여부를 확인하기 쉽습니다. 중복 방지는 결제 버튼 하나의 동작이 아니라 앱, 서버와 관리자에 공통으로 적용되는 규칙입니다.

05

취소 요청과 결제 취소 완료를 구분합니다

고객이 취소 버튼을 눌렀다고 바로 환불이 끝나는 것은 아닙니다. 서비스 정책에 따라 운영자의 확인이 필요할 수 있고, 이미 사용한 상품이나 수수료를 계산한 뒤 일부만 환불할 수도 있습니다.

취소 과정은 다음처럼 나눌 수 있습니다.

서비스 제공 전 자동 취소가 가능한지, 담당자 확인이 필요한지, 마감 이후에는 어떤 기준을 적용하는지를 먼저 정해야 합니다. 결제사의 취소 완료와 고객 카드·계좌에 금액이 반영되는 시점은 다를 수 있으므로 특정 환불 완료 시간을 고정적으로 약속하지 않습니다.

확인해보세요

  • 취소 요청 — 고객이 취소 의사를 전달한 상태
  • 취소 확인 — 운영자가 가능 여부와 취소 금액을 확인하는 상태
  • 결제 취소 요청 — 서버가 결제사에 전체 또는 일부 취소를 요청한 상태
  • 취소·환불 처리 완료 — 결제사 결과를 서버가 확인해 기록한 상태
  • 고객 안내 완료 — 앱 내역과 알림에 최종 결과가 반영된 상태
06

전체 환불과 부분 환불은 금액 단위로 기록합니다

상품 여러 개를 한 번에 주문하거나 서비스를 일부 사용한 뒤 취소할 수 있다면 환불됨이라는 상태 하나로는 부족합니다.

부분 환불을 지원할 때는 다음 내용을 확인해야 합니다.

관리자에서 금액만 직접 바꾸게 하기보다 원 결제와 각 취소 기록을 연결해 남기는 것이 좋습니다. 그래야 고객 문의, 정산 차이와 재처리 여부를 확인할 수 있습니다.

확인해보세요

  • 최초 결제 금액, 이미 환불한 금액과 남은 환불 가능 금액
  • 어떤 상품·회차·인원에 대한 환불인지
  • 할인, 쿠폰, 배송비와 취소 수수료를 어떻게 계산하는지
  • 여러 결제 수단을 함께 사용했을 때 각각 돌려줄 금액
  • 누가 어떤 사유로 환불을 요청하고 승인했는지
  • 결제사 취소 거래번호와 처리 시간
07

응답 지연과 앱 종료 후에도 결과를 다시 확인합니다

정상적인 결제 성공 화면만 설계하면 운영 중 가장 곤란한 결과를 알 수 없는 상태를 처리하기 어렵습니다.

예를 들어 결제사에서는 승인됐지만 고객 앱이 결과를 받기 전에 종료될 수 있습니다. 서버가 결제사 알림을 늦게 받거나 관리자가 새로고침하기 전까지 이전 상태가 보일 수도 있습니다.

이때 고객에게 바로 재결제를 권하면 중복 승인 위험이 생깁니다. 결제 결과를 확인하고 있습니다라고 안내하고 서버가 기존 주문번호로 상태를 다시 조회한 뒤 승인·실패·확인 필요 중 하나로 정리해야 합니다.

결제사에서 같은 알림을 여러 번 보내더라도 이미 처리한 거래라면 상태와 금액을 중복 변경하지 않아야 합니다. 자동 확인으로 결정할 수 없는 경우에는 운영자의 확인 필요 목록으로 보내고 고객에게 문의 경로를 안내합니다.

중복 클릭, 승인 응답 지연, 부분 환불, 앱 종료, 관리자 수동 처리와 정산 차이를 고객 안내·서버 확인·관리자 조치로 나눈 화면
정상 결제뿐 아니라 결과가 늦거나 불확실한 상황을 운영자가 확인할 수 있어야 합니다.
08

운영 관리자에는 상태 이력과 처리 근거가 필요합니다

운영 관리자는 단순히 결제 건수를 보는 대시보드보다 개별 거래의 현재 상태와 변경 과정을 확인할 수 있어야 합니다.

필요한 기본 항목은 다음과 같습니다.

중요 상태를 수동으로 변경할 수 있다면 담당자, 변경 전후 값, 사유와 시간을 이력으로 남겨야 합니다. 결제와 정산 운영 화면을 실제로 구현한 범위는 대면·원격·링크·QR 결제와 정산을 연결한 기업용 페이앱 ‘셀러페이온’ 사례에서 확인할 수 있습니다.

확인해보세요

  • 주문번호, 결제 거래번호와 고객·상품 정보 검색
  • 주문 상태와 결제 상태의 별도 표시
  • 최초 결제액, 취소액, 남은 금액과 정산 정보
  • 결제 요청·승인·실패·취소·환불 시간
  • 상태를 변경한 시스템 또는 담당자
  • 취소·환불 사유와 고객에게 안내한 내용
  • 자동 처리 실패와 사람이 확인해야 할 항목
  • 민감한 결제 정보에 접근하거나 상태를 바꿀 수 있는 권한
09

고객 안내 문구는 처리 단계와 일치해야 합니다

상태 이름은 개발자와 운영자만 이해하는 코드가 아니라 고객이 다음 행동을 판단하는 안내가 되어야 합니다.

처리 단계별 고객 안내는 다음처럼 구분합니다.

결제 실패와 결제 결과 확인 중을 같은 문구로 처리하면 고객이 다시 결제해도 되는지 판단하기 어렵습니다. 알림도 상태가 실제로 확정된 시점에 발송하고, 앱 내역·문자·이메일과 관리자 상태가 서로 다르게 보이지 않도록 기준을 맞춥니다.

결제 수수료와 외부 서비스 비용을 개발비와 구분하는 방법은 앱개발비용과 출시 후 월 운영비는 어떻게 나눠야 할까요?에서 확인할 수 있습니다.

확인해보세요

  • 결제 결과 확인 중 — “결제 결과를 확인하고 있습니다” · 다시 결제하지 말고 잠시 후 내역 확인
  • 결제 실패 확인 — “결제가 완료되지 않았습니다” · 실패 사유 또는 다른 결제 방법 안내
  • 주문 확인 중·결제 승인 — “결제는 완료됐으며 주문을 확인하고 있습니다” · 예상 확인 시간과 문의 경로 안내
  • 취소 요청 접수 — “취소 요청을 접수했습니다” · 검토 기준과 다음 안내 시점 표시
  • 부분 환불 완료 — “일부 금액의 환불 처리가 완료됐습니다” · 대상 항목과 처리 금액 표시
  • 전액 취소 완료 — “결제 취소 처리가 완료됐습니다” · 취소 금액과 결제수단 반영 안내
  • 운영자 확인 필요 — “결제 상태를 확인하고 있습니다” · 중복 결제 금지 안내와 문의 방법 표시
10

개발 전에 결제 운영 정책을 확인할 질문 8가지

결제 화면을 만들기 전에 아래 질문을 고객·운영자·개발자가 같은 기준으로 확인하세요.

PG사, 앱 마켓, 판매 국가와 상품 종류에 따라 결제·취소·환불 규칙과 준비 자료가 달라질 수 있습니다. 계약과 개발 전에 이용할 결제사의 운영 정책과 관련 규정을 별도로 확인해야 합니다.

전체 기획·개발·검수·출시 순서는 개발 진행 방식에서 확인할 수 있습니다.

확인해보세요

  • 결제가 승인된 뒤 주문·예약·상담은 자동 확정되나요, 운영자가 확인하나요?
  • 결제 전 재고·잔여 시간·가격을 서버에서 다시 확인해야 하나요?
  • 고객이 직접 취소할 수 있는 기한과 조건은 무엇인가요?
  • 전체 환불 외에 상품·회차·인원별 부분 환불이 필요한가요?
  • 할인·쿠폰·배송비·수수료와 복합 결제의 환불 금액은 어떻게 계산하나요?
  • 결제 응답이 늦거나 앱이 종료되면 고객과 운영자에게 어떤 상태를 보여주나요?
  • 관리자가 바꿀 수 있는 상태와 권한, 반드시 남길 사유·이력은 무엇인가요?
  • 결제사·앱 마켓·판매 국가·상품 유형별 승인과 운영 규칙을 누가 확인하나요?
11

결제 버튼보다 상태와 예외 흐름을 먼저 설계하세요

결제 앱 개발의 완성도는 결제 성공 화면보다 승인 후 주문 처리, 취소·환불과 결과가 불확실한 상황에서 드러납니다. 주문과 결제 상태를 분리하고 고객 앱·서버·결제사·관리자의 역할을 연결하면 고객에게는 다음 행동을 정확하게 안내하고 운영자는 거래 이력을 근거로 처리할 수 있습니다.

준비 중인 서비스의 주문 방식, 결제 수단, 취소 조건과 운영자 처리 방식을 알려주시면 결제·취소·환불 운영 흐름 30분 무료 상담에서 필요한 상태와 화면 범위를 함께 정리해드립니다.

30분 무료 전화 상담

내 상황에 맞는 개발 방향을 함께 확인하세요

결제 승인은 주문이나 서비스 제공 완료와 같은 상태가 아닙니다. 결제 앱 개발에서 주문과 결제 상태를 분리하고 중복 요청, 취소, 부분 환불과 응답 지연을 고객 앱·서버·관리자에서 일관되게 처리하는 기준을 설명합니다.

결제·취소·환불 운영 흐름 30분 무료 상담
전체 개발 가이드로 돌아가기