Skip to content

Recargo por pagar con contra reembolso en Woocommerce.

Fragmento de código WooCommerce para cobrar una cantidad o porcentaje adicional en pagos contra reembolso para compras inferiores a una cantidad determinada

Con este código personalizado para WooCommerce, podrás agregar automáticamente un cargo adicional a los pagos contra reembolso en tu tienda en línea. Además, se actualizará la página de pago en tiempo real, lo que brinda una experiencia de compra más fluida para tus clientes. Es una solución práctica y sencilla para optimizar tus transacciones en WooCommerce.

Es importante tener en cuenta que cada sitio web es único y pueden surgir variaciones en el funcionamiento de este código en ciertos casos.

Si encuentras dificultades o necesitas ayuda adicional, no dudes en ponerte en contacto para recibir una consulta WordPress gratuita.

Opción 1: Cargo adicional de 10 € para el método de pago contra reembolso

// Añadir cargo adicional para el método de pago contra reembolso
add_action('woocommerce_cart_calculate_fees', 'agregar_cargo_adicional_contra_reembolso');
function agregar_cargo_adicional_contra_reembolso() {
 if (is_admin() && !defined('DOING_AJAX')) {
 return;
 } else {
 $chosen_gateway = WC()->session->chosen_payment_method;
 $cargo_adicional = 10;
 $etiqueta_cargo = 'Cargo Contra Reembolso';
 if ($chosen_gateway == 'cod' && !empty($cargo_adicional) && $cargo_adicional != '0') { 
 WC()->cart->add_fee($etiqueta_cargo, $cargo_adicional, false, '');
 }
 }
}

// Añadir otra verificación si el usuario cambia el método de pago durante el proceso de pago
add_action('wp_footer', 'actualizar_pago_al_cambiar_metodo');
function actualizar_pago_al_cambiar_metodo() {
 if (is_checkout() && !is_wc_endpoint_url()) :
 ?>
 <script type="text/javascript">
 jQuery(function($) {
 $('form.checkout').on('change', 'input[name="payment_method"]', function() {
 $(document.body).trigger('update_checkout');
 });
 });
 </script>
 <?php
 endif;
}

Opción 2: Cargo adicional del 3 % para el método de pago contra reembolso (mínimo 3 €) y no disponible para pedidos mayores de 899 €.

// Añadir cargo adicional para el método de pago contra reembolso
add_action( 'woocommerce_cart_calculate_fees', 'agregar_cargo_adicional_contra_reembolso' );
function agregar_cargo_adicional_contra_reembolso() {
 if ( is_admin() && ! defined('DOING_AJAX') ) {
 return;
 }

 $chosen_gateway = WC()->session->chosen_payment_method;
 $total_pedido = WC()->cart->cart_contents_total;

 // Si el total del pedido excede 899€, no permitir contra reembolso
 if ($total_pedido > 899) {
 if ($chosen_gateway === 'cod') {
 WC()->session->set('chosen_payment_method', ''); // Resetear el método de pago seleccionado
 wc_add_notice( 'El pago contra reembolso no está disponible para pedidos mayores de 899€. Por favor, selecciona otro método de pago.', 'notice' );
 }
 return;
 }

 // Aplicar el cargo adicional si el método de pago seleccionado es contra reembolso
 if ( $chosen_gateway == 'cod' ) {
 $cargo_adicional = $total_pedido * 0.03; // 3% del total del pedido
 $cargo_adicional = max( 3, $cargo_adicional ); // Asegura un mínimo de 3€
 WC()->cart->add_fee( 'Cargo Contra Reembolso', $cargo_adicional, false );
 }
}

// Añadir otra verificación si el usuario cambia el método de pago durante el proceso de pago
add_action( 'wp_footer', 'actualizar_cargo_al_cambiar_metodo_pago' );
function actualizar_cargo_al_cambiar_metodo_pago() {
 if ( is_checkout() && ! is_wc_endpoint_url() ) :
?>
<script type="text/javascript">
jQuery( function($){
 $('form.checkout').on('change', 'input[name="payment_method"]', function(){
 $(document.body).trigger('update_checkout');
 });
});
</script>
<?php
 endif;
}
servicio mantenimiento wordpress

Tu WordPress en buenas manos

Soporte WordPress profesional y completo.