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

Elementor

Elementor pour une association loi 1901 : un bouton de don Stripe sans WooCommerce

Installer WooCommerce pour collecter des dons ponctuels est souvent disproportionné. Retour sur une intégration de Stripe Checkout directement dans un widget HTML Elementor.

Par WordPress Développement • 11 avril 2020 • 4 min de lecture • Aucun commentaire
Elementor pour une association loi 1901 : un bouton de don Stripe sans WooCommerce

150 euros par mois de budget numérique, pas de trésorier disponible pour gérer une boutique en ligne, et un seul besoin réel : encaisser des dons ponctuels depuis le site vitrine. C’est le cahier des charges reçu d’une association loi 1901 qui gère un refuge animalier, construit sur Elementor gratuit.

Installer WooCommerce pour un unique produit virtuel « don libre » aurait ajouté des tables en base, un tunnel de commande complet, une gestion de stock inutile et une maintenance supplémentaire pour une association qui n’a ni le temps ni le budget de suivre ces mises à jour. Stripe Checkout, en mode hébergé, permet d’éviter tout cela.

Le principe : une session Checkout créée à la volée

Stripe Checkout propose une page de paiement hébergée par Stripe lui-même : aucune donnée bancaire ne transite par le serveur WordPress, ce qui simplifie considérablement la conformité PCI-DSS. Le site n’a besoin que de créer une « session » via l’API Stripe, puis de rediriger le visiteur vers l’URL renvoyée par cette session.

Côté WordPress, cette création de session doit se faire côté serveur (la clé secrète Stripe ne doit jamais apparaître dans le navigateur). Un petit plugin maison expose donc un point de terminaison REST dédié :

add_action( 'rest_api_init', function () {
    register_rest_route( 'refuge/v1', '/don', [
        'methods'  => 'POST',
        'callback' => 'refuge_creer_session_stripe',
        'permission_callback' => '__return_true',
    ] );
} );

Le widget HTML : formulaire de montant et appel JavaScript

Dans Elementor, le widget natif HTML accueille un petit formulaire (trois boutons de montants suggérés, plus un champ libre) et le script qui appelle le point de terminaison REST créé précédemment :

L'essentiel à retenir : WooCommerce est disproportionné pour un simple bouton de don ; Stripe Checkout se déclenche depuis un widget HTML personnalisé ; Le montant du don reste modifiable par le donateur
fetch('/wp-json/refuge/v1/don', {
  method: 'POST',
  headers: { 'Content-Type': 'application/json' },
  body: JSON.stringify({ montant: montantChoisi })
})
.then(r => r.json())
.then(data => window.location.href = data.url);

Trois lignes suffisent côté client : construire la requête, récupérer l’URL de session renvoyée par le serveur, rediriger le navigateur. Le montant du don reste modifiable par le donateur jusqu’au dernier moment, y compris sur la page Stripe elle-même si l’option submit_type: 'donate' est activée côté API.

Ce que fait la fonction PHP côté serveur

  • Valider que le montant reçu est un entier positif raisonnable (borne haute pour éviter les erreurs de saisie à quatre zéros)
  • Appeler l’API Stripe (\Stripe\Checkout\Session::create) avec le montant en centimes et le mode payment
  • Renvoyer l’URL de session au format JSON, consommée par le fetch du widget

Pourquoi éviter WooCommerce dans ce cas précis

WooCommerce reste pertinent dès qu’il existe une notion de panier, de plusieurs produits, ou d’adhésions récurrentes avec des statuts métier à suivre. Ici, aucune de ces conditions n’est réunie : un don est une transaction unique, sans stock, sans facture obligatoire au sens commercial (une association peut émettre un reçu fiscal séparément, hors du champ de cet article).

Conseil maison : pour une association, mieux vaut un widget HTML de trente lignes maintenu par un seul développeur qu’une boutique WooCommerce configurée une fois puis jamais mise à jour faute de compétences en interne.

Sécurité et limites du webhook

La confirmation du paiement ne doit jamais reposer uniquement sur la redirection de succès affichée au donateur : un webhook Stripe (checkout.session.completed) reste indispensable pour déclencher, côté serveur, l’envoi de l’e-mail de remerciement et l’enregistrement du don dans une table dédiée. Sans ce webhook, un donateur qui ferme l’onglet juste après paiement ne recevrait jamais sa confirmation.

La clé secrète Stripe doit être stockée dans une constante définie en dehors de la racine web accessible, via wp-config.php, jamais dans les options de la base de données visibles depuis l’administration.

Notre verdict

Pour une association qui a besoin d’un seul bouton de don, Stripe Checkout branché sur un widget HTML Elementor répond au besoin en une poignée d’heures de développement, sans dette technique liée à une boutique complète jamais réellement exploitée. WooCommerce reste un excellent choix, mais pas pour ce cas d’usage précis.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Partager :

À propos de l'auteur

WordPress Développement

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

Voir tous ses articles

Dans la même veine

À lire aussi