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