Get refunded orders and refunded order items details in Woocommerce 3 Get refunded orders and refunded order items details in Woocommerce 3 wordpress wordpress

Get refunded orders and refunded order items details in Woocommerce 3


To get refunded orders you could use some dedicated WC_Order methods like the following ones that have Item Id as argument:

$item_qty_refunded = $order->get_qty_refunded_for_item( $item_id ); // Get the refunded amount for a line item.$item_total_refunded = $order->get_total_refunded_for_item( $item_id ); // Get the refunded amount for a line item.

You can access an array WC_Order_Refund Objects for this order using get_refunds() method:

So you can use the following example code:

// Get the WC_Order Object instance (from the order ID)$order = wc_get_order( $order_id );// Get the Order refunds (array of refunds)$order_refunds = $order->get_refunds();// Loop through the order refunds arrayforeach( $order_refunds as $refund ){    // Loop through the order refund line items    foreach( $refund->get_items() as $item_id => $item ){        ## --- Using WC_Order_Item_Product methods --- ##        $refunded_quantity      = $item->get_quantity(); // Quantity: zero or negative integer        $refunded_line_subtotal = $item->get_subtotal(); // line subtotal: zero or negative number        // ... And so on ...        // Get the original refunded item ID        $refunded_item_id       = $item->get_meta('_refunded_item_id'); // line subtotal: zero or negative number    }}

To get the order items discounted values that appear in admin order edit pages you will use the following code:

// Get the WC_Order Object instance (from the order ID)$order = wc_get_order($order_id);// Loop through the order refund line itemsforeach( $order->get_items() as $item_id => $item ){    $line_subtotal     = $item->get_subtotal();    $line_total        = $item->get_total();    $line_subtotal_tax = $item->get_subtotal_tax();    $line_total_tax    = $item->get_total_tax();        // Get the negative discount values    $line_discount     = $line_total - $line_subtotal; // (Negative number)    $line_discount_tax = $line_total_tax - $line_subtotal_tax; // (Negative number)}

Related Answers:


If you are using get_qty_refunded_for_item( $item_id ) or get_total_refunded_for_item( $item_id ) returns 0 use absint().

$item_qty_refunded = $order->get_qty_refunded_for_item( $item_id ); // Get the refunded amount for a line item.$item_total_refunded = $order->get_total_refunded_for_item( $item_id ); // Get the refunded amount for a line item.