HTTPQUERY
Русский

402 Payment Required

Применение

При получении ошибки 402 Payment Required клиент понимает, что доступ к запрошенному ресурсу в данный момент не предоставлен.

Зарезервированный статус

402 Payment Required зарезервирован для будущего использования. Сейчас его поведение нестандартно и различается в разных реализациях.

Поскольку это нестандартный ответ, разные провайдеры используют данный статус по-разному. Например, API Shopify возвращает 402 Payment Required, указывая, что интернет-магазин заморожен и администратору магазина необходимо погасить задолженность для восстановления доступа.

API Stripe возвращает 402 Payment Required, когда попытка платежа не удалась, например при отклонении карты или недостатке средств.

Влияние на SEO

Поисковые системы вроде Google не индексируют URL, возвращающий статус 402 Payment Required. Ранее проиндексированные 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 нестандартно, точные шаги по устранению определяет документация провайдера. Если тело ответа не содержит подробностей, создайте обращение в поддержку с идентификатором запроса и отметкой времени.

Примеры кода

.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