Comment ajouter des frais ou des remises pour différents modes de paiement dans WooCommerce
Publié: 2019-03-26Nous constatons sur les sites Web de commerce électronique qu'à chaque mode de paiement que vous choisissez lors du paiement, des frais de service ou même une remise sont souvent associés. Il convient également de noter que les frais de service pour le paiement à la livraison sont plus élevés que ceux des modes de paiement alternatifs. Il s'agit d'augmenter les chances de pré-paiements. Les prépaiements aident non seulement à réduire le risque de ne pas être payé par le client, mais aussi à assurer la trésorerie de l'entreprise. En cas d'absence de frais de service associés aux méthodes de paiement, des remises peuvent être proposées lorsque vous choisissez de payer avec des méthodes autres que le paiement à la livraison.
Vous pouvez également ajouter des remises sur certains modes de paiement en fonction des programmes ou des promotions que vous souhaitez exécuter. Les remises sont généralement attrayantes pour les clients et contribuent à augmenter les ventes. Dans cet article, nous vous montrerons les différentes façons d'ajouter des frais ou des remises pour différents modes de paiement dans WooCommerce et, par conséquent, d'en tirer profit.
Ajout de remises en pourcentage pour différentes méthodes de paiement via des extraits de code
Vous pouvez y parvenir en ajoutant des extraits de code dans le fichier functions.php de votre thème enfant.
Le code ci-dessous ajoute une réduction au montant total lorsque PayPal est choisi comme mode de paiement sur la page de paiement WooCommerce. En attribuant une valeur à $percent, vous pouvez préciser le pourcentage de remise que vous souhaitez appliquer sur le moyen de paiement souhaité. Les modes de paiement par défaut dans WooCommerce sont le virement bancaire direct (bacs), les paiements par chèque (chèque), le paiement à la livraison (cod) et PayPal (paypal), avec leurs identifiants mentionnés entre parenthèses.
add_action('woocommerce_cart_calculate_fees','ts_add_discount', 20, 1); function ts_add_discount( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; // Mentionnez le mode de paiement par exemple cod, bacs, chèque ou paypal $payment_method = 'paypal' ; // Le pourcentage à appliquer $pourcentage = 2 ; // 2% $cart_total = $cart_object->subtotal_ex_tax ; $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Obtenir le mode de paiement sélectionné if( $payment_method == $chosen_payment_method ){ $label_text = __( "Remise PayPal" ); // Calcul du pourcentage $discount = number_format(($cart_total / 100) * $percent, 2); // Ajout de la remise $cart_object->add_fee( $label_text, -$discount, false ); } } add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' ); fonction ts_refresh_payment_method(){ // jQuery ?> <type de script="texte/javascript"> (fonction($){ $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() { $('body').trigger('update_checkout'); }); })(jQuery); </script> <?php }
Vous aurez besoin de deux fonctions ici - une pour faire le travail d'ajouter des remises ou des frais appropriés, et une pour garder un œil sur les changements dans la sélection du mode de paiement par l'utilisateur, pour lequel nous utilisons javascript. Les crochets woocommerce_cart_calculate_fees et woocommerce_review_order_before_payment sont utilisés pour ajouter respectivement ces deux fonctions.
Les valeurs que les méthodes de paiement ont pour le virement bancaire direct, le chèque, le paiement à la livraison et PayPal sont respectivement bacs , chèque , cod et paypal . La fonction add_fee() est une méthode intégrée de la classe WC_Cart dans WooCommerce.
Cela entraînera la déduction du montant de la remise du sous-total, et le total sera ainsi affiché :
Avec peu de modifications, vous pouvez mentionner des remises pour plusieurs modes de paiement dans le même extrait de code :
add_action('woocommerce_cart_calculate_fees','ts_add_discount', 20, 1); function ts_add_discount( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $label_text=__(""); $pourcent=0 ; // Mentionnez le mode de paiement par exemple cod, bacs, chèque ou paypal $cart_total = $cart_object->subtotal_ex_tax ; $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Obtenir le mode de paiement sélectionné if( $chosen_payment_method == "paypal" ){ $label_text = __( "Remise PayPal" ); // Le pourcentage à appliquer $pourcentage = 2 ; // 2% } else if( $chosen_payment_method == "bacs"){ $label_text = __( "Remise sur virement bancaire direct" ); // Le pourcentage à appliquer $pourcentage = 3 ; // 3% } else if( $chosen_payment_method == "chèque"){ $label_text = __( "Remise sur paiement par chèque" ); // Le pourcentage à appliquer $pourcentage = 2 ; // 2% } autre { $label_text = __( "Remise contre remboursement" ); // Le pourcentage à appliquer $pourcentage = 0 ; // 0% } // Calcul du pourcentage $discount = number_format(($cart_total / 100) * $percent, 2); // Ajout de la remise $cart_object->add_fee( $label_text, -$discount, false ); } add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' ); fonction ts_refresh_payment_method(){ // jQuery ?> <type de script="texte/javascript"> (fonction($){ $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() { $('body').trigger('update_checkout'); }); })(jQuery); </script> <?php }
Ajout de montants de remise fixes pour différents modes de paiement via des extraits de code
Supposons que vous souhaitiez mentionner un montant au lieu d'un pourcentage. Vous pouvez le faire en utilisant à nouveau le même extrait, en éliminant l'étape où vous calculez le pourcentage et en acceptant le montant de la remise comme entrée en fonction de chaque mode de paiement :
add_action('woocommerce_cart_calculate_fees','ts_add_discount', 20, 1); function ts_add_discount( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $label_text=__(""); $discount_amount=0 ; // Mentionnez le mode de paiement par exemple cod, bacs, chèque ou paypal $cart_total = $cart_object->subtotal_ex_tax ; $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Obtenir le mode de paiement sélectionné if( $chosen_payment_method == "paypal" ){ $label_text = __( "Remise PayPal" ); // Le montant de la remise à appliquer $remise_montant = 200 ; } else if( $chosen_payment_method == "bacs"){ $label_text = __( "Remise sur virement bancaire direct" ); // Le montant de la remise à appliquer $remise_montant = 150 ; } else if( $chosen_payment_method == "chèque"){ $label_text = __( "Remise sur paiement par chèque" ); // Le montant de la remise à appliquer $remise_montant = 100 ; } autre { $label_text = __( "Remise contre remboursement" ); // Le montant de la remise à appliquer $remise_montant = 0 ; } // Ajout de la remise $cart_object->add_fee( $label_text, -$discount_amount, false ); } add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' ); fonction ts_refresh_payment_method(){ // jQuery ?> <type de script="texte/javascript"> (fonction($){ $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() { $('body').trigger('update_checkout'); }); })(jQuery); </script> <?php }

Pour ajouter des frais de service, il vous suffit de changer le signe de l'un des arguments de la fonction add_fee de "-" à "+" ou pas de signe du tout, ce qui implique positif.
add_action('woocommerce_cart_calculate_fees','ts_add_discount', 20, 1); function ts_add_discount( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; $label_text=__(""); $service_charge=0 ; // Mentionnez le mode de paiement par exemple cod, bacs, chèque ou paypal $cart_total = $cart_object->subtotal_ex_tax ; $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Obtenir le mode de paiement sélectionné if( $chosen_payment_method == "paypal" ){ $label_text = __( "Frais de service PayPal" ); // Les frais de service à appliquer $service_charge=200 ; } else if( $chosen_payment_method == "bacs"){ $label_text = __( "Frais de service de virement bancaire direct" ); // Les frais de service à appliquer $service_charge=100 ; } else if( $chosen_payment_method == "chèque"){ $label_text = __( "Frais de service de paiement par chèque" ); // Les frais de service à appliquer $service_charge=150 ; } autre { $label_text = __( "Frais de service contre remboursement" ); // Les frais de service à appliquer $service_charge=250 ; } // Ajout des frais de service $cart_object->add_fee( $label_text, $service_charge, false ); } add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' ); fonction ts_refresh_payment_method(){ // jQuery ?> <type de script="texte/javascript"> (fonction($){ $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() { $('body').trigger('update_checkout'); }); })(jQuery); </script> <?php }
De cette manière, des frais de service seront appliqués selon le mode de paiement sélectionné :
Ajout de remises pour différentes méthodes de paiement pour les utilisateurs connectés uniquement (via des extraits de code)
Si vous souhaitez offrir ces réductions uniquement aux utilisateurs connectés (comme demandé via un commentaire sur ce post), vous devez simplement ajouter une condition qui vérifie si l'utilisateur est connecté ou non. Cela peut être fait par la fonction is_user_logged_in() . L'extrait de code ci-dessous montre comment vous pouvez ajouter des remises en pourcentage pour un mode de paiement particulier pour les utilisateurs connectés uniquement.
add_action('woocommerce_cart_calculate_fees','ts_add_discount', 20, 1); function ts_add_discount( $cart_object ) { if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return; si (is_user_logged_in()){ // Mentionnez le mode de paiement par exemple cod, bacs, chèque ou paypal $payment_method = 'paypal' ; // Le pourcentage à appliquer $pourcentage = 2 ; // 2% $cart_total = $cart_object->subtotal_ex_tax ; $chosen_payment_method = WC()->session->get('chosen_payment_method'); //Obtenir le mode de paiement sélectionné if( $payment_method == $chosen_payment_method ){ $label_text = __( "Remise PayPal" ); // Calcul du pourcentage $discount = number_format(($cart_total / 100) * $percent, 2); // Ajout de la remise $cart_object->add_fee( $label_text, -$discount, false ); } } } add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' ); fonction ts_refresh_payment_method(){ // jQuery ?> <type de script="texte/javascript"> (fonction($){ $( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() { $('body').trigger('update_checkout'); }); })(jQuery); </script> <?php }
Vous pouvez utiliser n'importe lequel des extraits de code de cet article en fonction de vos besoins. Vous devez simplement ajouter une condition -if (is_user_logged_in()) à l'intérieur de cet extrait de code si vous souhaitez limiter cela aux seuls utilisateurs connectés.
Ajout de frais ou de réductions pour différents modes de paiement via des plugins
Si vous ne souhaitez pas ajouter d'extraits de code, il existe un moyen simple d'obtenir la même chose : les plugins ! Il existe des plugins gratuits et payants qui offrent différentes fonctionnalités.
Frais et réductions basés sur la passerelle de paiement pour WooCommerce
Il s'agit d'un plugin gratuit de notre part qui vous permet d'ajouter des frais, des remises, des taxes, etc. et même de définir les montants minimum et maximum du panier comme critères. Vous pouvez même arrondir les frais après avoir appliqué la remise. Et vous pouvez faire tout cela avec une interface facile à utiliser accessible via le tableau de bord :- Remises par mode de paiement pour WooCommerce (gratuit)
Il s'agit d'un plugin gratuit de WPCodelibrary qui fournit une interface simple dans votre tableau de bord WordPress pour définir des remises pour les méthodes de paiement par défaut fournies par WooCommerce. Il n'a cependant pas de fonctionnalité pour ajouter des frais de service ou des frais.
- Frais et remises basés sur la passerelle de paiement pour WooCommerce (39 $)
Ce plugin premium de notre part est livré avec tout un ensemble de fonctionnalités où vous pouvez ajouter des frais ainsi que des remises pour différents modes de paiement en fonction du pays, de l'état, de la catégorie de produit, etc. En plus de cela, vous pouvez également appliquer des taxes sur les frais (hors frais d'expédition ) à l'aide du plug-in. L'interface est simple et conviviale, et vous pouvez également appliquer différentes remises et frais pour des produits individuels.