Pourquoi installer une boutique en ligne complète pour encaisser un simple acompte de 30 % sur un devis de menuiserie ? C’est la question posée par un artisan qui refusait catégoriquement d’ajouter WooCommerce à son site, jugé disproportionné pour un besoin aussi ponctuel : valider un acompte après acceptation d’un devis, sans catalogue produit ni panier.
La solution retenue s’appuie sur PayPlug, prestataire de paiement français, intégré directement dans le template de devis du thème via son API, sans passer par une extension e-commerce complète. Voici comment ce dispositif a été construit, du calcul du montant à la vérification du paiement.
Pourquoi PayPlug plutôt qu’une autre solution
PayPlug propose une API REST simple, pensée pour des intégrations sur mesure sans nécessiter de panier d’achat. Pour ce projet, l’artisan avait déjà un compte PayPlug ouvert pour son activité en boutique physique ; réutiliser le même prestataire évitait la double gestion de comptes et de relevés bancaires.
Le principe retenu : chaque devis accepté génère un lien de paiement unique pour l’acompte correspondant, envoyé par email au client, sans jamais transiter par une page panier ou un compte utilisateur côté site.

Calculer l’acompte côté serveur, jamais côté formulaire
Le montant de l’acompte (30 % du devis, arrondi à l’euro) ne doit jamais être transmis depuis un champ caché du formulaire : un montant manipulable côté client ouvrirait la porte à un paiement partiel non détecté. Le calcul est fait côté serveur, à partir du montant du devis stocké en base :
$montant_devis = (float) get_post_meta( $devis_id, 'montant_ttc', true );
$montant_acompte = round( $montant_devis * 0.30, 2 );
$reponse = wp_remote_post( 'https://api.payplug.com/v1/payments', array(
'headers' => array(
'Authorization' => 'Bearer ' . PAYPLUG_SECRET_KEY,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array(
'amount' => intval( $montant_acompte * 100 ),
'currency' => 'EUR',
'customer' => array( 'email' => $client_email ),
'hosted_payment' => array(
'return_url' => home_url( '/confirmation-acompte/' ),
),
) ),
) );
Le montant est converti en centimes, format attendu par l’API, et l’appel se fait via wp_remote_post(), sans bibliothèque cliente supplémentaire à maintenir.
Stocker la référence de paiement sur le devis
La réponse de l’API contient un identifiant de paiement à conserver, associé au devis via update_post_meta(). C’est cette référence qui permettra ensuite de vérifier le statut réel du paiement, plutôt que de se fier uniquement à la redirection du client vers la page de confirmation.
- Identifiant de paiement PayPlug enregistré en méta du devis dès la création du lien.
- Statut initial du devis passé à « acompte en attente ».
- Aucune confirmation d’acompte affichée avant vérification côté serveur.
Vérifier le paiement via une notification, pas via la redirection
Se fier uniquement au retour du client sur /confirmation-acompte/ est une erreur classique : rien n’empêche un visiteur de fermer l’onglet avant la redirection, ou un paiement d’être refusé après affichage d’une page de succès prématurée. PayPlug notifie l’URL de webhook déclarée avec le statut réel de la transaction, que le thème traite via un point de terminaison dédié enregistré avec add_action( 'init', ... ) et add_rewrite_rule().
add_action( 'template_redirect', function () {
if ( ! isset( $_GET['payplug_webhook'] ) ) {
return;
}
$charge = json_decode( file_get_contents( 'php://input' ), true );
if ( 'paid' === $charge['object']['is_paid'] ) {
update_post_meta( $charge['metadata']['devis_id'], 'statut_acompte', 'paye' );
}
status_header( 200 );
exit;
} );
Ne jamais afficher une confirmation de paiement uniquement sur la base d’une redirection réussie : seule la notification serveur à serveur garantit que l’argent a réellement été encaissé.
En résumé
Pour un artisan qui encaisse quelques acomptes par mois, une intégration directe de PayPlug dans le template de devis évite l’installation d’une boutique en ligne complète, tout en gardant un contrôle total sur le calcul du montant et la vérification du paiement. Cette approche reste volontairement limitée à l’acompte : la facturation finale, elle, continue de passer par l’outil comptable habituel de l’artisan.