POST https://api.payplug.com/v1/payments : une seule requête vers cette adresse suffit à générer un lien de paiement complet chez PayPlug, prestataire français de paiement en ligne. Pour un centre de formation qui demande un acompte de réservation avant un stage, sans vouloir installer WooCommerce pour autant, cette simplicité change beaucoup de choses.
Ce billet détaille l’intégration d’un bloc Gutenberg d’acompte d’inscription branché sur l’API PayPlug, pensé comme alternative à Stripe pour un besoin ponctuel et non récurrent. Les paiements récurrents, qui impliquent une tout autre logique d’abonnement, ne font pas partie de ce périmètre.
Pourquoi ne pas simplement prendre Stripe
Stripe reste un choix solide et largement documenté, mais son intégration complète (éléments de paiement, gestion des webhooks, tableau de bord en anglais) représente un effort disproportionné pour un besoin très ponctuel : encaisser un acompte fixe de réservation de stage, sans gestion d’abonnement ni de panier complexe. PayPlug, société française, propose une API plus restreinte mais parfaitement suffisante pour ce cas d’usage, avec un tableau de bord et un support en français.
Générer le lien de paiement côté serveur
Le bloc n’affiche jamais de formulaire de carte bancaire lui-même : il se contente d’un bouton qui déclenche, côté serveur, la création d’un paiement auprès de PayPlug, puis redirige le visiteur vers la page de paiement hébergée par le prestataire.
function creer_paiement_acompte( $stage_id ) {
$reponse = wp_remote_post( 'https://api.payplug.com/v1/payments', array(
'headers' => array(
'Authorization' => 'Bearer ' . PAYPLUG_CLE_SECRETE,
'Content-Type' => 'application/json',
),
'body' => wp_json_encode( array(
'amount' => 8900, // en centimes
'currency' => 'EUR',
'hosted_payment' => array(
'return_url' => home_url( '/inscription-confirmee/' ),
'cancel_url' => home_url( '/stage/' . $stage_id ),
),
'metadata' => array( 'stage_id' => $stage_id ),
) ),
) );
$corps = json_decode( wp_remote_retrieve_body( $reponse ) );
return $corps->hosted_payment->payment_url;
}

Le bloc, côté éditeur
Le bloc expose un seul réglage utile dans le panneau latéral : l’identifiant du stage concerné, sélectionné dans une liste des stages publiés. Le montant de l’acompte, lui, provient directement d’un champ personnalisé attaché au stage, pour éviter toute divergence entre le prix affiché et le montant réellement facturé.
Confirmer le paiement avec une notification
Une fois le paiement effectué, PayPlug envoie une notification vers une route dédiée du site, qu’il faut vérifier avant de considérer l’inscription comme confirmée :
add_action( 'rest_api_init', function() {
register_rest_route( 'stages/v1', '/notification-payplug', array(
'methods' => 'POST',
'callback' => 'traiter_notification_payplug',
'permission_callback' => '__return_true',
) );
} );
Cette route se contente de relire l’identifiant du paiement transmis, d’interroger à nouveau l’API PayPlug pour confirmer son statut, puis de marquer l’inscription correspondante comme réglée en base de données WordPress.
Ce qu’il ne faut jamais faire
- Ne jamais considérer l’inscription confirmée sur la seule foi de l’URL de retour, sans revérifier le statut auprès de l’API
- Ne jamais stocker la clé secrète PayPlug ailleurs que dans une constante définie hors du dépôt de code versionné
- Ne jamais afficher le montant de l’acompte en dur dans le bloc, au risque d’un décalage avec le tarif réel du stage
Sur un besoin d’encaissement ponctuel, sans catalogue produit ni panier, mieux vaut toujours comparer le coût réel d’intégration avant de partir automatiquement sur la solution la plus connue.
En résumé
Pour un acompte d’inscription simple, sans gestion d’abonnement ni de panier, l’API de PayPlug demande nettement moins de code qu’une intégration Stripe complète, tout en restant entièrement conforme aux exigences de sécurité des paiements en ligne. Le bloc reste léger côté WordPress : toute la complexité du paiement lui-même reste hébergée chez le prestataire.