Frecuentemente, a la hora de hacer una web de comercio eléctrónico, al cliente le surge la necesidad de incrementar el precio de los productos en un porcentaje según el método de pago elegido.
Normalmente esto ocurre con Paypal, ya que los porcentajes por venta que manejan son bastante superiores a los TPV de los bancos, mermando de esta manera considerablemente los ya de por sí pequeños margenes que algunas empresas manejan.
Woocommerce es una plataforma para la venta online que está bastante bien, y que en la mayoria de los casos es suficiente para la mayoría de clientes.
Como ya sabréis es un plugin para wordpress.
Buscando una solución para el problema que se nos plantea, encontré un plugin, el cual hacía – digo hacía porque actualmente no funciona tal cual – que promete hacer lo que buscamos.
Dicho plugin se llama «WooCommerce Add Charges To Payment Gateway«.
Para que funcione, simplemente debemos parchear el archivo «woocommerce-add-extra-charges-option-to-payment-gateways.php», y añadir las siguientes líneas:
function add_form_fields(){ global $woocommerce; // Get current tab/section $current_tab = ( empty( $_GET['tab'] ) ) ? '' : sanitize_text_field( urldecode( $_GET['tab'] ) ); $current_section = ( empty( $_REQUEST['section'] ) ) ? '' : sanitize_text_field( urldecode( $_REQUEST['section'] ) ); //if($current_tab == 'payment_gateways' && $current_section!=''){ if($current_tab == 'checkout' && $current_section!=''){ $gateways = $woocommerce->payment_gateways->payment_gateways(); foreach($gateways as $gateway){ if(strtolower(get_class($gateway))==$current_section){ $current_gateway = $gateway -> id; $extra_charges_id = 'woocommerce_'.$current_gateway.'_extra_charges'; $extra_charges_type = $extra_charges_id.'_type'; if(isset($_REQUEST['save'])){ echo $extra_charges_id."\n"; echo $extra_charges_type."\n"; update_option( $extra_charges_id, $_REQUEST[$extra_charges_id] ); update_option( $extra_charges_type, $_REQUEST[$extra_charges_type] ); } $extra_charges = get_option( $extra_charges_id); $extra_charges_type_value = get_option($extra_charges_type); } } ?> <script> jQuery(document).ready(function($){ $data = '<h4>Add Extra Charges</h4><table class="form-table">'; $data += '<tr valign="top">'; $data += '<th scope="row" class="titledesc">Extra Charges</th>'; $data += '<td class="forminp">'; $data += '<fieldset>'; $data += '<input style="" name="<?php echo $extra_charges_id?>" id="<?php echo $extra_charges_id?>" type="text" value="<?php echo $extra_charges?>"/>'; $data += '<br /></fieldset></td></tr>'; $data += '<tr valign="top">'; $data += '<th scope="row" class="titledesc">Extra Charges Type</th>'; $data += '<td class="forminp">'; $data += '<fieldset>'; $data += '<select name="<?php echo $extra_charges_type?>"><option <?php if($extra_charges_type_value=="add") echo "selected=selected"?> value="add">Total Add</option>'; $data += '<option <?php if($extra_charges_type_value=="percentage") echo "selected=selected"?> value="percentage">Total % Add</option>'; $data += '<br /></fieldset></td></tr></table>'; $('.form-table:last').after($data); }); </script> <?php } }
Espero que os sirva, y no dudéis en comentar o compartir si os ha sido de interés.