Woocommerce – Sovrapprezzo per il pagamento alla consegna

Plugins Programmazione Wordpress
0

In questo post vedremo uno snippet di codice piuttosto “corposo” che permetterà di far pagare un sovrapprezzo qualora il cliente decida di ricevere il prodotto in contrassegno.
Mi è venuta questa idea in seguito ad una domanda di un mio cliente che necessitava nel suo e-commerce di far pagare un sovrapprezzo per tutti i clienti che decidevano di ricevere i prodotti a casa loro pagandoli al ricevimento.

Se dovete aggiungere un sovrapprezzo per il pagamento alla consegna in WooCommerce, o anche detta “fee” per il “Cash on Delivery“, abbreviato a cod, allora fatelo senza plugin e seguite questa guida, compatibile con le più recenti versioni di WooCommerce.

Per prima cosa se vogliamo fare le cose fatte bene, dobbiamo creare un custom field all’interno della pagina del pagamento alla consegna, che ci permetterà di salvare un valore che verrà usato come maggiorazione.

Ecco il codice completo:

<?php
/**
* @package Cash on Delivery Fee
*/
/**
* Add custom options to COD gateway
*/
function mini_add_fee_setting( $form_fields ) {
$form_fields['cod_fee'] = [
'title'         => esc_html__( 'COD fee', 'textdomain' ),
'type'          => 'number',
'description'   => esc_html__( 'Add fee for orders using Cash on Delivery.', 'textdomain' ),
'default'       => 0,
'desc_tip'      => true,
'custom_attributes' => array(
'step'  => .01,
'min'   => 0
)
];
return $form_fields;
}
add_filter( 'woocommerce_settings_api_form_fields_cod', 'mini_add_fee_setting');
/**
* Add Fee for cash on delivery 
*/
// Part 1: apply fee
function mini_add_checkout_fee_for_cod() {
// Get all COD settings
$cod_settings = get_option( 'woocommerce_cod_settings' );
$fee = (int) $cod_settings['cod_fee'];
// Check if COD is enabled
if ( $cod_settings['enabled'] !== 'yes' || $fee <= 0 ) {
return;
}
// Current selection from user
$chosen_gateway = WC()->session->get( 'chosen_payment_method' );
// Label
$label = esc_html__( 'Extra charge for', 'textdomain' ) .' '. $cod_settings['title'];
if ( $chosen_gateway == 'cod' ) {
WC()->cart->add_fee( $label, $fee );	
}
}
add_action( 'woocommerce_cart_calculate_fees', 'mini_add_checkout_fee_for_cod' );
// Part 2: reload checkout on payment gateway change
function mini_refresh_checkout_on_cod_change() {
?>
<script type="text/javascript">
(function($){
$( 'form.checkout' ).on( 'change', 'input[name^="payment_method"]', function() {
$('body').trigger('update_checkout');
});
})(jQuery);
</script>
<?php
}
add_action( 'woocommerce_review_order_before_payment', 'mini_refresh_checkout_on_cod_change' );
Facebook Comments
0
carrello contrassegno pagamento php wordpress

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Related Posts