WC_Gateway_Paypal::process_refund( int $order_id, float $amount = null, string $reason = '' )
Process a refund if supported.
Description Description
Parameters Parameters
- $order_id
-
(Required) Order ID.
- $amount
-
(Optional) Refund amount.
Default value: null
- $reason
-
(Optional) Refund reason.
Default value: ''
Return Return
(bool|WP_Error)
Source Source
File: includes/gateways/paypal/class-wc-gateway-paypal.php
public function process_refund( $order_id, $amount = null, $reason = '' ) { $order = wc_get_order( $order_id ); if ( ! $this->can_refund_order( $order ) ) { return new WP_Error( 'error', __( 'Refund failed.', 'woocommerce' ) ); } $this->init_api(); $result = WC_Gateway_Paypal_API_Handler::refund_transaction( $order, $amount, $reason ); if ( is_wp_error( $result ) ) { $this->log( 'Refund Failed: ' . $result->get_error_message(), 'error' ); return new WP_Error( 'error', $result->get_error_message() ); } $this->log( 'Refund Result: ' . wc_print_r( $result, true ) ); switch ( strtolower( $result->ACK ) ) { // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase case 'success': case 'successwithwarning': $order->add_order_note( /* translators: 1: Refund amount, 2: Refund ID */ sprintf( __( 'Refunded %1$s - Refund ID: %2$s', 'woocommerce' ), $result->GROSSREFUNDAMT, $result->REFUNDTRANSACTIONID ) // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase ); return true; } return isset( $result->L_LONGMESSAGE0 ) ? new WP_Error( 'error', $result->L_LONGMESSAGE0 ) : false; // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase }