Automattic\WooCommerce\Internal\RestApi\Routes\V4\Settings\OfflinePaymentMethods

Controller::get_itemspublicWC 1.0

Get offline payment methods.

Method of the class: Controller{}

No Hooks.

Returns

WP_REST_Response|WP_Error.

Usage

$Controller = new Controller();
$Controller->get_items( $request );
$request(WP_REST_Request) (required)
Full details about the request.

Controller::get_items() code WC 10.5.0

public function get_items( $request ) {
	try {
		$offline_methods = $this->get_offline_payment_methods_data( $request );
	} catch ( \Exception $e ) {
		return new WP_Error(
			'woocommerce_rest_offline_payment_methods_error',
			$e->getMessage(),
			array( 'status' => 500 )
		);
	}

	if ( is_wp_error( $offline_methods ) ) {
		return $offline_methods;
	}

	// Transform data to match the new format.
	$response_data = array(
		'id'          => 'payments/offline-methods',
		'title'       => __( 'Offline Payment Methods', 'woocommerce' ),
		'description' => __( 'Manage offline payment methods available for your store.', 'woocommerce' ),
		'values'      => array(),
		'groups'      => array(
			'payment_methods' => array(),
		),
	);

	// Validate input is an array.
	if ( ! is_array( $offline_methods ) ) {
		return new WP_Error(
			'woocommerce_rest_invalid_data',
			__( 'Invalid payment methods data received.', 'woocommerce' ),
			array( 'status' => 500 )
		);
	}

	// Process each offline payment method.
	foreach ( $offline_methods as $method ) {
		// Skip if method is not an array.
		if ( ! is_array( $method ) ) {
			continue;
		}

		$method_id = $method['id'] ?? '';
		if ( empty( $method_id ) || ! is_string( $method_id ) ) {
			continue;
		}

		// Add method to values (current settings/state).
		$enabled_state = false;
		if ( isset( $method['state'] ) && is_array( $method['state'] ) ) {
			$enabled_state = $method['state']['enabled'] ?? false;
		}
		if ( is_array( $enabled_state ) ) {
			$enabled_state = $enabled_state['value'] ?? false;
		}
		if ( is_string( $enabled_state ) ) {
			$enabled_state = wc_string_to_bool( $enabled_state );
		} elseif ( ! is_bool( $enabled_state ) ) {
			$enabled_state = (bool) $enabled_state;
		}
		$response_data['values'][ $method_id ] = $enabled_state;

		// Add complete payment method data to groups.payment_methods.
		$response_data['groups']['payment_methods'][ $method_id ] = array(
			'id'          => $method_id,
			'_order'      => isset( $method['_order'] ) ? absint( $method['_order'] ) : 0,
			'title'       => sanitize_text_field( $method['title'] ?? '' ),
			'description' => wp_kses_post( $method['description'] ?? '' ),
			'icon'        => esc_url_raw( $method['icon'] ?? '' ),
			'state'       => array_map(
				'rest_sanitize_boolean',
				wp_parse_args(
					is_array( $method['state'] ?? null ) ? $method['state'] : array(),
					array(
						'enabled'           => false,
						'account_connected' => false,
						'needs_setup'       => false,
						'test_mode'         => false,
						'dev_mode'          => false,
					)
				)
			),
			'management'  => $this->sanitize_management_field( $method['management'] ?? array() ),
		);
	}

	return rest_ensure_response( $response_data );
}