» » Добавляем новый способ платежа в Woocommerce

Добавляем новый способ платежа в Woocommerce

В категории: Статьи

В данной статье я расскажу как легко и быстро добавить новый метод платежа в CMS Wordpress для плагина Woocommerce. В принципе все несложно, и даже новичок разберется.

Разберем ситуацию когда Вы или Вам сделали интернет-магазин на Woocommerce и нужно добавить новый метод платежей, или даже новый метод доставки, но чтобы клиент ничего сразу не оплачивал, если к примеру это метод доставки бесплатный, или новой службой доставки, и оплата после получения товара.

Делается это через плагин - https://wordpress.org/plugins/woocommerce-custom-payment-gateways/. Он давно не обновлялся, но в целом он нам подойдет, и мы только добавим небольшой кусок кода, чтобы он правильно редиректил на страницу информации о заказе - "Thank You".

И так, плагин мы поставили, все в административной части заработало и выглядит вот так:

Новый платеж в woocommerce

Как видите добавились 5 кастомных методов платежей, которые можно настроить под свои нужды. Но в данном плагине есть небольшая проблема, он не отправляет покупателя на страницу с информацией о покупке, а просто пишет "Ваша корзина пуста". Чтобы исправить такую погрешность, добавляем в каждый метод доставки (файлы class-wc-custom_payment_gateway_1.php и до class-wc-custom_payment_gateway_5.php) такой код. Начиная с строки 121, которую можете удалить (в своем коде я ее закоментил):

        // Return thankyou redirect
	                //return array(            'result'     => 'success',            'redirect'    => add_query_arg('key', $order->order_key, add_query_arg('order', $order_id, get_permalink(woocommerce_get_page_id('thanks'))))        );    
	
	        // Empty the Cart
	    WC()->cart->empty_cart();
	
	    // Get redirect
	    $return_url = $order->get_checkout_order_received_url();
	
	    // Redirect to success/confirmation/payment page
	    if ( is_ajax() ) {
	        echo '<!--WC_START-->' . json_encode(
	            array(
	            'result' => 'success',
	            'redirect' => apply_filters( 'woocommerce_checkout_no_payment_needed_redirect', $return_url, $order )
	            )
	        ) . '<!--WC_END-->';
	        exit;
	    } else {
	        wp_safe_redirect(
	        apply_filters( 'woocommerce_checkout_no_payment_needed_redirect', $return_url, $order )
	        );
	        exit;
	    }
	    // Redirect to success/confirmation/payment page
	    if ( $result['result'] == 'success' ) {
	
	        $result = apply_filters( 'woocommerce_payment_successful_result', $result, $order_id );
	
	        if ( is_ajax() ) {
	            echo '<!--WC_START-->' . json_encode( $result ) . '<!--WC_END-->';
	            exit;
	        } else {
	            wp_redirect( $result['redirect'] );
	            exit;
	        }
	
	    }
	    }

Сохраняете все это дело, жмете CTRL+F5 и тестируете процесс оформления заказа. Все должно работать и показывать информацию о заказе.

Похожие посты

    Оставить комментарий