php – How to add refund in custom payment gateway woocommerce

Question

I want to add refund to the woocommerce-payment-gateway

  • in class WC_Custom_Gateway extends WC_Payment_Gateway
        function __construct()
        {
            $this->supports             = array('products', 'refunds');
            $this->id = 'custom';
            $this->icon = plugins_url('../assets/custom-logo.png', __FILE__);
            $this->has_fields = true;
            $this->method_title="Custom";
            $this->method_description = 'Payment using Custom card';
            $this->init_form_fields();


            $this->init_settings();
            $this->title = sanitize_textarea_field($this->get_option('title'));
            $this->description = sanitize_textarea_field($this->get_option('description'));
            $this->enabled = sanitize_key($this->get_option('enabled'));
            $this->discount = intval($this->get_option('discount'));
            $this->token = sanitize_text_field($this->get_option('token'));
            $this->client = sanitize_text_field($this->get_option('client'));
            $this->back_url = esc_url_raw($this->get_option('back_url'));
            $this->response_type = $this->get_option('response_type');

            add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
            // if (is_admin()) {
            //     add_action('woocommerce_update_options_payment_gateways_' . $this->id, array($this, 'process_admin_options'));
            // }
            //https://woocommerce.com/document/wc_api-the-woocommerce-api-callback/
            add_action('woocommerce_api_custom', array($this, 'webhook'));

            if (!function_exists('write_log')) {

                function write_log($log)
                {
                    if (true === WP_DEBUG) {
                        if (is_array($log) || is_object($log)) {
                            error_log(print_r($log, true));
                        } else {
                            error_log($log);
                        }
                    }
                }
            }

            write_log('THIS IS THE START OF MY CUSTOM DEBUG');
        }
        public function can_refund_order($order){
            if($order instanceof WC_Order && method_exists($order,'get_transaction_id'))
            {
                return true;
            }
            return false;
        }

        public function process_refund($order_id, $amount = null, $reason = '')
        {
            return true;
        }

I want to call the function process_refund($order_id, $amount = null, $reason = '') in the class of WC_Custom_Gateway

0
reguieg younes 3 months 2022-05-31T03:52:54-05:00 0 Answers 0 views 0

Leave an answer

Browse
Browse