Le WordPress d'aujourd'hui, décodé pour les développeurs

Tips

Verrouiller un module de paiement Stripe pendant une maintenance planifiée

Basculer l'affichage vers un message d'indisponibilité plutôt que de laisser un paiement échouer silencieusement.

Par Clément Hadrot • 1 janvier 2025 • 4 min de lecture • Aucun commentaire
Verrouiller un module de paiement Stripe pendant une maintenance planifiée

« Le paiement a échoué, merci de réessayer plus tard. » Ce message générique, affiché à un client qui vient de saisir sa carte bancaire pendant une opération de maintenance sur la configuration Stripe, est l’un des pires scénarios possibles pour une boutique en ligne : le client ne sait pas si son compte a été débité, l’équipe support reçoit un ticket inquiet, et la confiance dans le site en prend un coup disproportionné par rapport à la cause réelle du problème.

La bonne pratique consiste à anticiper explicitement les fenêtres de maintenance qui touchent le module de paiement, en remplaçant le tunnel d’achat par un message d’indisponibilité assumé, plutôt que de laisser le système échouer de façon opaque.

Définir une fenêtre de maintenance dédiée au paiement

Contrairement à une maintenance générale du site (souvent gérée par un simple code HTTP 503), une maintenance ciblée sur le paiement doit permettre au client de continuer à naviguer, consulter le catalogue et remplir son panier — seule l’étape de règlement doit être bloquée. Un réglage stocké en base, avec une date de début et une date de fin, pilote ce comportement :

update_option( 'paiement_maintenance', array(
    'actif'      => true,
    'debut'      => '2025-01-01 16:00:00',
    'fin'        => '2025-01-01 18:00:00',
    'message'    => "Le paiement en ligne est momentanément indisponible pour une opération de maintenance. Votre panier est conservé, revenez dans deux heures.",
) );

Intercepter la tentative de paiement

L'essentiel à retenir : Un statut de maintenance dédié au module de paiement ; Un message clair plutôt qu'une erreur technique ; Une purge du panier évitée pendant la coupure

Sur WooCommerce, le filtre woocommerce_available_payment_gateways permet de retirer temporairement la passerelle Stripe de la liste des moyens de paiement disponibles, sans toucher à sa configuration ni risquer de casser l’intégration une fois la maintenance terminée :

add_filter( 'woocommerce_available_payment_gateways', 'bloquer_stripe_pendant_maintenance' );
function bloquer_stripe_pendant_maintenance( $gateways ) {
    $config = get_option( 'paiement_maintenance' );

    if ( ! empty( $config['actif'] ) && en_fenetre_maintenance( $config ) ) {
        unset( $gateways['stripe'] );
    }

    return $gateways;
}

function en_fenetre_maintenance( $config ) {
    $maintenant = current_time( 'timestamp' );
    return $maintenant >= strtotime( $config['debut'] )
        && $maintenant <= strtotime( $config['fin'] );
}

Afficher le message d’indisponibilité à la place

Retirer la passerelle sans explication laisse le client face à une page de paiement vide. Un message explicite, affiché via le hook woocommerce_before_checkout_form, évite l’incompréhension :

  • Rappel que le panier reste conservé pendant toute la durée de la coupure
  • Horaire précis de reprise du service
  • Lien vers un canal de contact en cas d’urgence commerciale

Ne jamais vider le panier automatiquement

Un piège fréquent consiste à faire coïncider la maintenance du paiement avec une purge de session, ce qui vide le panier du client sans qu’il l’ait demandé. Le panier WooCommerce doit rester intact pendant toute la fenêtre : seule l’étape de règlement final est concernée par la coupure, jamais la persistance des articles sélectionnés.

Prévenir plutôt que subir : la notification en amont

Si la maintenance est planifiée plusieurs jours à l’avance (migration de compte Stripe, changement de mode de capture, mise à jour majeure de l’extension de paiement), un bandeau d’avertissement affiché sur les pages produit dans les vingt-quatre heures précédentes limite le nombre de clients surpris en plein tunnel d’achat.

Un client qui sait à l’avance qu’un service sera coupé pendant deux heures pardonne facilement ; un client qui découvre la coupure en pleine saisie de sa carte bancaire, beaucoup moins.

Vérifier la levée automatique de la restriction

La fenêtre de maintenance doit se lever automatiquement à l’heure de fin prévue, sans intervention manuelle oubliable un dimanche soir. Un test simple consiste à vérifier, une minute après l’heure de fin programmée, que la passerelle Stripe réapparaît bien dans la liste des moyens de paiement disponibles, avant de considérer l’opération terminée.

En résumé

Bloquer proprement un module de paiement pendant une maintenance demande trois éléments : une fenêtre temporelle stockée en base, un filtre qui retire la passerelle sans la désactiver définitivement, et un message honnête qui rassure plutôt qu’il n’inquiète. Le coût de mise en œuvre est minime comparé au coût d’image d’un paiement resté dans les limbes.

Partager :

À propos de l'auteur

Clément Hadrot

Développeur WordPress, passionné par Elementor, le FSE et l’automatisation par IA.

Voir tous ses articles

Dans la même veine

À lire aussi