Wpd Ai Order Payment Gateway Cost Default Value

Alpha Insights Documentation

Docs Navigation



Filter: wpd_ai_order_payment_gateway_cost_default_value

Filter the default payment gateway fee calculated for an order.

Description

Customize payment processing fee calculation based on payment method, order amount, card type, or integration with actual gateway data.

Location

File:includes/classes/WPD_Order_Calculator.php

Method:WPD_Order_Calculator::get_payment_gateway_cost()

Line:~540

Parameters

Parameter Type Description
$payment_gateway_cost float Calculated payment fee
$order WC_Order WooCommerce order object

Return

Type: float

Description: Modified payment gateway cost

Example Usage

Custom Gateway Fees

add_filter( 'wpd_ai_order_payment_gateway_cost_default_value', 'custom_gateway_fees', 10, 2 );

function custom_gateway_fees( $fee, $order ) {
    $payment_method = $order->get_payment_method();
    $order_total = $order->get_total();
    
    switch ( $payment_method ) {
        case 'stripe':
            // Stripe: 2.9% + $0.30
            return ( $order_total * 0.029 ) + 0.30;
            
        case 'paypal':
            // PayPal: 2.9% + $0.30 domestic, 4.4% + fixed for international
            if ( $order->get_billing_country() === 'US' ) {
                return ( $order_total * 0.029 ) + 0.30;
            } else {
                return ( $order_total * 0.044 ) + 0.30;
            }
            
        case 'bacs':
            // Bank transfer
            return 0.00; // No fee
            
        case 'cod':
            // Cash on delivery
            return 2.50; // Flat handling fee
            
        default:
            return $fee;
    }
}

Integration with Stripe API

add_filter( 'wpd_ai_order_payment_gateway_cost_default_value', 'stripe_actual_fee', 10, 2 );

function stripe_actual_fee( $fee, $order ) {
    if ( $order->get_payment_method() !== 'stripe' ) {
        return $fee;
    }
    
    // Get Stripe charge ID from order meta
    $charge_id = get_post_meta( $order->get_id(), '_stripe_charge_id', true );
    
    if ( $charge_id ) {
        // Fetch actual fee from Stripe (would need Stripe SDK)
        // $charge = StripeCharge::retrieve( $charge_id );
        // $actual_fee = $charge->balance_transaction->fee / 100;
        // return $actual_fee;
    }
    
    return $fee;
}

Volume-Based Merchant Account Fees

add_filter( 'wpd_ai_order_payment_gateway_cost_default_value', 'volume_based_fees', 10, 2 );

function volume_based_fees( $fee, $order ) {
    // Get monthly transaction volume
    $monthly_volume = get_monthly_transaction_volume();
    $order_total = $order->get_total();
    
    // Tiered merchant account rates
    if ( $monthly_volume > 100000 ) {
        // High volume: 1.9% + $0.20
        $fee = ( $order_total * 0.019 ) + 0.20;
    } elseif ( $monthly_volume > 50000 ) {
        // Medium volume: 2.4% + $0.25
        $fee = ( $order_total * 0.024 ) + 0.25;
    } else {
        // Standard volume: 2.9% + $0.30
        $fee = ( $order_total * 0.029 ) + 0.30;
    }
    
    return $fee;
}

Best Practices

  • Always return float value
  • Check payment method exists before using it
  • Cache expensive operations (API calls)
  • Handle different currencies if applicable
  • Test with various payment methods

Related Filters

Got A Question?

Subscribe
Notify of
guest
0 Comments
Newest
Oldest Most Voted
Inline Feedbacks
View all comments
Alpha Insights

Alpha Insights

The World's Most Advanced WooCommerce Drag & Drop Report Builder.

5/5 – Trustpilot

Alpha Insights