Add individual charges for each payment method as a flat rate and/or as a percentage of the cart total. The plugin first calculates the percentage rate and then adds the fixed rate on top. Coupons are not supported. (Sorry guys. I tried, but no way.)
Supports PHP 8.0
You will find a stable version in WordPress plugin directory.
Previous versions have been created by Jörn Lund, who abandoned this project due to a pile of other projects in 2016. See the previous GitHub for details. The new version is maintained by Karolína Vyskočilová since 2017.
- none
- Deploy Github actions: WordPress.org Plugin Deploy & WordPress.org Plugin Readme/Assets Update
Applied to the payment gateway fee before it is added to woocomerce' cart. If you work with subtotal, check how to get it.
Example:
function my_pay4pay_amount( $amount , $calculation_base , $current_payment_gateway , $taxable , $include_taxes , $tax_class ) {
if ( my_customer_complained_too_much() )
return $amount * 10;
else
return $amount;
}
$current_gateway_id = 'cod';
add_filter( "woocommerce_pay4pay_{$current_gateway_id}_amount", 'my_pay4pay_amount' , 10 , 6 );
Handle if a payment fee is applied. If you work with subtotal, check how to get it.
Example:
function my_pay4pay_handle_christmas( $do_apply , $amount , $calculation_base , $current_payment_gateway ) {
if ( today_is_christmas() )
return false;
else
return $do_apply;
}
add_filter( "woocommerce_pay4pay_apply", 'my_pay4pay_handle_christmas' , 10 , 4 );
Handle if a payment fee on a specific payment method should be applied. If you work with subtotal, check how to get it.
Example:
function my_pay4pay_apply( $do_apply , $amount , $calculation_base , $current_payment_gateway ) {
if ( my_customer_is_a_nice_guy() )
return false;
else
return $do_apply;
}
$current_gateway_id = 'cod';
add_filter( "woocommerce_pay4pay_applyfor_{$current_gateway_id}", 'my_pay4pay_apply' , 10 , 4 );
Allows you to modify the current gateway settings before the fee calculation - in pretty edge cases that allows you to change tax rate dynamically
Within your filter use following lines:
$cart = WC()->cart;
if ( wc_prices_include_tax() ) {
$subtotal = intval( $cart->subtotal );
} else {
$subtotal = intval( $cart->subtotal_ex_tax );
}