J’ai récemment eu un petit problème dans une installation WordPress / WooCommerce avec le plugin WooCommerce PayPal Payments.
Lorsque nous arrivons au moment ou les boutons de paiement s’affichent, on peut initier le paiement sans avoir coché la case “accepter les conditions générales de vente” que propose WooCommerce en standard.
La transaction PayPal s’exécute mais une fois de retour sur le site marchand, le système indique que cette case n’est pas cochée et propose de recommencer le paiement.
C’est une très mauvaise expérience pour l’acheteur qui pense devoir acheter une seconde fois son produit…
Aucun moyen trouvé à ce jour pour contourner le problème de façon “native”. Si vous lisez ces lignes et que vous connaissez une solution, je suis preneur !
J’ai trouvé ce bout de code sur internet et j’en ai fait un plugin.
Le code permet de créer sa propre case à cocher obligatoire au moment de la saisie des informations de facturation.
Lorsque le mode “par onglet” est activé dans le flux d’achat WooCommerce, on ne peut plus dépasser cette étape sans avoir coché ladite case.
Il ajoute également des métas dans la commande pour attester que le client a bien coché la case.
Attention cependant si la configuration est placée en one page, le problème se représentera.
<?php
/*
Plugin Name: Acceptation Obligatoire des CGV
Description: Ce plugin force l'acceptation des CGV dès la page de création des informations de facturation et permet de désactiver la fonction native de WooCommerce qui est court-circuitée par le module de paiement Woocommerce Paypal Payments
Version: 0.1
License: GPL
Author: Noël Galtiau
Author URI: https://kitcreanet.fr
*/
// Add Checkbox
add_action('woocommerce_after_checkout_billing_form', 'cgv_accept_field');
function cgv_accept_field()
{
woocommerce_form_field('cgv_accept', array(
'type' => 'checkbox',
'class' => array('input-checkbox'),
'label' => __('J\'ai lu et j\'accepte les <b><a href="https://nom_de_domaine/slug-de-la-page/">conditions générales de vente</a></b>'),
'required' => true,
), WC()->checkout->get_value('cgv_accept'));
}
//Update the order meta with field value
add_action('woocommerce_checkout_update_order_meta', 'cgv_accept_update_order_meta');
function cgv_accept_update_order_meta($order_id)
{
if ($_POST['cgv_accept']) {
update_post_meta($order_id, 'Le client a accepté les conditions générales de vente', esc_attr($_POST['cgv_accept']));
}
}
// Code trouvé sur https://easywpcode.com/how-to-add-checkbox-to-checkout-in-woocommerce/
// symbole de fermeture désactivé ?>
Le code php
Créer un fichier accept-cgv.php et y placer ce code.
Le code du fichier index.php
<?php // Silence is golden
Créer le plugin
Il suffit de zipper les deux fichiers et d’importer le plugin normalement
Code source trouvé, traduit et adapté depuis https://easywpcode.com/how-to-add-checkbox-to-checkout-in-woocommerce/
