HTTPQUERY
한국어

402 Payment Required

사용법

402 Payment Required 오류가 도착하면 클라이언트는 현재 요청한 리소스에 대한 접근이 허용되지 않음을 이해합니다.

예약된 상태

402 Payment Required는 향후 사용을 위해 예약되어 있습니다. 현재로서는 그 동작이 비표준이며 구현마다 다릅니다.

비표준 응답이므로 제공자마다 이 상태를 서로 다른 방식으로 사용해 왔습니다. 예를 들어 Shopify API는 온라인 상점이 동결되었으며 접근을 복구하려면 상점 관리자가 미납 금액을 결제해야 함을 나타내기 위해 402 Payment Required를 반환합니다.

Stripe API는 카드 거절이나 잔액 부족처럼 결제 시도가 실패했을 때 402 Payment Required를 반환합니다.

SEO 영향

Google 같은 검색 엔진은 402 Payment Required 상태를 반환하는 URL을 색인하지 않습니다. 이전에 색인되었다가 이 상태 코드를 반환하는 URL은 검색 결과에서 제거됩니다.

예시

클라이언트가 리소스를 요청하고, 서버는 결제가 이루어질 때까지 접근이 차단되었음을 알리기 위해 402 Payment Required로 응답합니다. 응답 본문은 그 이유를 설명하고 문제를 해결할 링크를 제공합니다.

요청

GET /tech-news HTTP/1.1
Host: example.com

응답

HTTP/1.1 402 Payment Required
Content-Type: text/html
Content-Length: 187

<html>
  <head>
    <title>Payment Required</title>
  </head>
  <body>
    <p>Access to this resource requires an active
    subscription. Renew at /account/billing.</p>
  </body>
</html>

해결 방법

402 Payment Required는 해당 서비스가 접근을 허용하기 전에 결제나 활성 구독을 요구한다는 뜻입니다. 이 상태는 비표준이므로 해결 방법은 오류를 반환하는 특정 서비스에 따라 달라집니다.

결제 및 구독 상태를 확인하세요. 서비스 대시보드에 로그인해 계정이 활성 상태인지 확인하세요. 만료된 체험판, 끊긴 구독, 미납 금액이 이 상태를 유발합니다. Shopify는 미결제 청구서로 상점이 동결되면 402를 반환합니다. Stripe는 청구가 실패하면(카드 거절, 잔액 부족) 402를 반환합니다.

결제 정보가 최신인지 확인하세요. 만료된 신용카드, 실패한 청구, 삭제된 결제 수단은 접근을 막습니다. 제공자의 결제 포털에서 결제 정보를 갱신하세요. 카드 발급사에 연락해 해당 결제 수단에 보류나 이상거래 차단이 걸려 있는지 확인하세요.

API 요금제 한도를 검토하세요. 일부 서비스는 사용량이 현재 요금제 등급을 초과하면 402를 반환합니다. 제공자의 사용량 대시보드에서 할당량 소비를 확인하세요. 요금제를 상향하거나 청구 주기가 초기화될 때까지 기다리세요.

응답 본문에서 해결 정보를 확인하세요. 대부분의 제공자는 402 응답 본문에 구체적인 오류 메시지, 오류 코드, 또는 결제 페이지 링크를 포함합니다. Stripe 응답에는 실패 원인을 짚어 주는 decline_code 필드(insufficient_funds, card_declined, expired_card)가 들어 있습니다.

다른 결제 수단으로 재시도하세요. 특정 카드나 은행 계좌가 실패하면 다른 결제 수단으로 바꿔 다시 제출하세요. 일부 제공자는 미리 설정해 둔 대체 결제 수단을 허용합니다.

API 제공자나 서비스 관리자에게 문의하세요. 402의 동작은 비표준이므로, 정확한 해결 절차는 제공자 문서가 정의합니다. 응답 본문에 상세 정보가 없다면 요청 ID와 타임스탬프를 적어 지원 티켓을 여세요.

코드 참고

.NET

HttpStatusCode.PaymentRequired

Rust

http::StatusCode::PAYMENT_REQUIRED

Rails

:payment_required

Go

http.StatusPaymentRequired

Symfony

Response::HTTP_PAYMENT_REQUIRED

Python3.5+

http.HTTPStatus.PAYMENT_REQUIRED

Java

java.net.HttpURLConnection.HTTP_PAYMENT_REQUIRED

Apache HttpComponents Core

org.apache.hc.core5.http.HttpStatus.SC_PAYMENT_REQUIRED

Angular

@angular/common/http/HttpStatusCode.PaymentRequired