402 Payment Required
Utilisation
Lorsqu’une erreur 402 Payment Required arrive, le client comprend que l’accès à la ressource demandée ne lui est pas accordé pour le moment.
Statut réservé
402 Payment Required est réservé pour un usage futur. Son comportement est actuellement non standard et varie selon les implémentations.
Comme il s’agit d’une réponse non standard, différents fournisseurs ont employé ce statut de manières différentes. Par exemple, l’API Shopify renvoie 402 Payment Required pour indiquer que la boutique en ligne est gelée et que l’administrateur du magasin doit régler un solde impayé pour rétablir l’accès.
L’API Stripe renvoie 402 Payment Required lorsqu’une tentative de paiement échoue, par exemple en cas de carte refusée ou de fonds insuffisants.
Impact SEO
Les moteurs de recherche tels que Google n’indexent pas une URL qui renvoie un statut 402 Payment Required. Les URL précédemment indexées qui renvoient ce code de statut sont retirées des résultats de recherche.
Exemple
Le client demande une ressource et le serveur répond 402 Payment Required pour indiquer que l’accès est bloqué tant que le paiement n’est pas effectué. Le corps de la réponse explique la raison et fournit un lien permettant de résoudre le problème.
Requête
GET /tech-news HTTP/1.1
Host: example.com
Réponse
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>
Comment corriger
Un 402 Payment Required signifie que le service attend un paiement ou un abonnement actif avant d’accorder l’accès. Comme ce statut est non standard, la correction dépend du service précis qui renvoie l’erreur.
Vérifiez l’état du paiement et de l’abonnement. Connectez-vous au tableau de bord du service et vérifiez que le compte est actif. Un essai expiré, un abonnement échu ou un solde impayé déclenche ce statut. Shopify renvoie 402 lorsqu’une boutique est gelée en raison de factures impayées. Stripe renvoie 402 lorsqu’un prélèvement échoue (carte refusée, fonds insuffisants).
Vérifiez que les informations de facturation sont à jour. Une carte bancaire expirée, un prélèvement échoué ou un moyen de paiement supprimé bloquent l’accès. Mettez à jour les coordonnées de paiement via le portail de facturation du fournisseur. Vérifiez auprès de l’émetteur de la carte l’absence de blocages ou de restrictions antifraude sur le moyen de paiement.
Examinez les limites du forfait API. Certains services renvoient 402 lorsque l’utilisation dépasse le niveau du forfait en cours. Consultez le tableau de bord d’utilisation du fournisseur pour voir la consommation du quota. Passez à un forfait supérieur ou attendez la réinitialisation du cycle de facturation.
Inspectez le corps de la réponse pour y trouver les détails de résolution. La plupart des fournisseurs incluent un message d’erreur précis, un code d’erreur ou un lien vers une page de facturation dans le corps de la réponse 402. Les réponses de Stripe comportent un champ decline_code (insufficient_funds, card_declined, expired_card) qui identifie la cause de l’échec.
Réessayez avec un autre moyen de paiement. Lorsqu’une carte ou un compte bancaire précis échoue, passez à un autre moyen de paiement et soumettez à nouveau la demande. Certains fournisseurs permettent de configurer à l’avance des sources de paiement de secours.
Contactez le fournisseur de l’API ou l’administrateur du service. Le comportement du 402 étant non standard, c’est la documentation du fournisseur qui définit les étapes exactes de résolution. Si le corps de la réponse manque de détails, ouvrez un ticket de support en indiquant l’identifiant de la requête et son horodatage.
Références de code
.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