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

Thèmes

PayPal Buttons dans un thème événementiel : un acompte sans WooCommerce

Pour encaisser un acompte sur un devis d'événement, un bouton PayPal Buttons intégré au template suffit, sans installer une extension e-commerce complète.

Par WordPress Développement • 15 avril 2021 • 4 min de lecture • Aucun commentaire
PayPal Buttons dans un thème événementiel : un acompte sans WooCommerce

paypal.Buttons().render() : ces quelques mots suffisent à résumer l’intégration d’un paiement d’acompte sur un template de devis événementiel, sans passer par une extension e-commerce complète. Une entreprise qui organise des événements sur devis (mariages, séminaires, animations) a rarement besoin d’un catalogue de produits ni d’un panier : elle a besoin d’encaisser un acompte ponctuel, dont le montant varie à chaque devis.

Installer WooCommerce pour ce seul besoin reviendrait à ajouter une couche de complexité disproportionnée : gestion de produits fictifs, de commandes, de statuts de paiement, pour un usage qui se résume en réalité à un unique paiement par client, déclenché depuis une page de devis générée au cas par cas.

Le SDK JavaScript de PayPal Buttons

PayPal Buttons fournit un SDK JavaScript qui affiche un bouton de paiement directement dans une page, sans nécessiter de traitement côté serveur pour l’affichage initial. Le montant à encaisser, ici l’acompte calculé pour chaque devis, se transmet au moment de la création de la commande PayPal, directement depuis le navigateur du client.

<div id="paypal-button-container"></div>
<script src="https://www.paypal.com/sdk/js?client-id=IDENTIFIANT_CLIENT&currency=EUR"></script>
<script>
paypal.Buttons({
    createOrder: function( data, actions ) {
        return actions.order.create({
            purchase_units: [{
                amount: { value: '150.00' }
            }]
        });
    },
    onApprove: function( data, actions ) {
        return actions.order.capture().then(function( details ) {
            alert( 'Acompte réglé par ' + details.payer.name.given_name );
        });
    }
}).render('#paypal-button-container');
</script>

Intégrer le montant dynamique du devis

Chaque devis étant différent, le montant de l’acompte ne peut pas rester codé en dur dans le script. Le template de la page de devis, un template de page personnalisé du thème, injecte le montant calculé côté PHP directement dans un attribut de données HTML, que le script JavaScript vient lire au moment de créer la commande PayPal.

L'essentiel à retenir : PayPal Buttons s'intègre en JavaScript pur, sans dépendance côté serveur ; Un montant d'acompte variable se transmet via un attribut de données ; WooCommerce serait disproportionné pour un seul paiement ponctuel par devis
<div id="paypal-button-container" data-montant="<?php echo esc_attr( $montant_acompte ); ?>"></div>
<script>
var conteneur = document.getElementById('paypal-button-container');
var montant = conteneur.dataset.montant;

paypal.Buttons({
    createOrder: function( data, actions ) {
        return actions.order.create({
            purchase_units: [{ amount: { value: montant } }]
        });
    }
}).render('#paypal-button-container');
</script>

Le montant de l’acompte, calculé côté serveur à partir des champs personnalisés du devis (généralement un pourcentage du montant total), est ainsi transmis au script sans jamais être modifiable depuis le code source affiché dans le navigateur au-delà de ce que PayPal accepte de valider côté serveur.

Charger le script uniquement sur la page concernée

Le script PayPal ne doit pas être chargé sur l’ensemble du site, seulement sur les pages de devis qui en ont réellement besoin. La fonction wp_enqueue_script(), conditionnée à la détection du bon template de page, évite un chargement inutile sur les autres pages du site :

  • Le script est enregistré avec wp_register_script() au chargement du thème
  • Il est mis en file d’attente uniquement si is_page_template( 'template-devis.php' ) retourne vrai
  • L’identifiant client PayPal reste stocké dans une option du thème, jamais codé en dur dans le template
  • Le mode sandbox de PayPal permet de tester l’intégralité du parcours avant la mise en production

Confirmer le paiement côté serveur

Faire confiance uniquement à la réponse JavaScript côté client pour confirmer un paiement reste risqué : un visiteur malintentionné pourrait théoriquement déclencher l’alerte de confirmation sans paiement réel effectué. Une vérification complémentaire, via un appel à l’API REST de PayPal depuis le serveur pour confirmer le statut réel de la transaction avant d’envoyer une confirmation par e-mail, referme cette faille.

Le réflexe à adopter systématiquement avec ce type d’intégration légère : ne jamais considérer un paiement comme confirmé sur la seule base d’un événement JavaScript côté navigateur. Une vérification serveur, même minimale, reste indispensable avant toute action définitive.

En résumé

Pour un besoin de paiement ponctuel comme l’encaissement d’un acompte sur devis événementiel, PayPal Buttons offre une intégration légère qui évite l’installation d’une extension e-commerce complète. Le montant dynamique se transmet simplement via un attribut de données HTML généré côté PHP, et une vérification serveur complémentaire garantit la fiabilité de la confirmation de paiement, sans jamais dépendre uniquement du navigateur du client.

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