에러 코드

"이미 취소되었거나 취소가 가능한 결제가 아닙니다"(-2105)가 납니다.

취소 API 가 1초도 안 되는 사이에 두 번 이상 호출된 경우가 가장 많습니다. 첫 요청이 성공하고 두 번째가 이 응답을 받습니다. 서버에서 중복 요청을 막으면 사라집니다.

이 코드로 들어온 상담 4건을 읽고 정리했습니다.

중복 호출이거나, 이미 전체 취소됐거나

  • 취소 API 가 중복 호출됐습니다. 버튼 연타나 재시도 로직에서 잘 생깁니다.
  • 부분 취소를 요청하기 전에 이미 전체 취소가 끝나 있었습니다.

중복 호출을 막는 방법

취소는 되돌릴 수 없는 동작이라 서버에서 한 번만 나가도록 잠가야 합니다. 주문 단위로 잠금을 잡거나, 취소 요청에 cancel_id 를 붙여 같은 값이 두 번 나가지 않게 하는 방식이 흔합니다.

이 에러가 왔을 때는 실패로 처리하기 전에 결제 상태를 다시 조회해 보세요. 이미 취소가 끝나 있으면 성공으로 정리하는 편이 맞습니다.

기준입니다. 같은 코드라도 PG 와 계약 상태에 따라 응답 문구가 달라질 수 있습니다. 응답 본문 전체를 함께 확인하세요.

내 서비스 기준으로 확인하고 싶으시면 알려주세요.

← 자주 묻는 질문 전체 보기