Удаление платежных шлюзов от WooCommerce

У меня есть магазин WooCommerce (работает локально), но я хочу удалить платежные шлюзы. Клиент должен иметь возможность разместить заказ без оплаты какого-либо процента, я вышлю им счет-фактуру вручную.

Я не могу найти, где отключить это, кажется, не является стандартным в WooCommerce.

Попробовали отключить все платежные шлюзы в бэкэнд, но вам нужно оставить один шлюз оплаты.

Спасибо заранее!

Ответ 1

Оставьте "Cash on Delivery" включенным, и он не будет принимать платеж при оформлении заказа. Вы можете легко изменить заголовки и ярлыки "Наличные деньги" на что-то вроде "Без оплаты" или аналогичных.

Ответ 2

Просто добавьте эту строку в functions.php в свою тему: add_filter('woocommerce_cart_needs_payment', '__return_false');

Ответ 3

Что-то, что другие ответы на этот вопрос не затронули, - это тот факт, что вам нужен способ для клиента в конечном счете оплатить счет. Использование Cash on Delivery (переименованное в соответствии с вашими потребностями) отлично выполняет то, что пользователь не платит при оформлении заказа, но проблема в том, что если Cash on Delivery был вашим единственным методом оплаты, он все равно будет единственным способом оплаты, когда вы отправите им счет-фактура.

Я думаю, что в большинстве случаев вам понадобится только доставка наложенным платежом во время проверки корзины и другой способ оплаты (например, Stripe) для способа оплаты счетов.

Здесь полный рабочий процесс для создания установки отложенного платежа.

  • Как упоминается @crdunst, вы должны использовать Cash on Delivery и переименовать это "Подождать счета" или что-то в этом роде.
  • Включите все платежные шлюзы, которые вы когда-либо захотите использовать (в этом примере мы просто используем Cash on Delivery и Stripe. Наличные деньги при доставке будут нашим платежным шлюзом "checkout", а Stripe будет нашей платежной ведомостью шлюз.
  • Используйте следующий фильтр для включения и выключения шлюзов на основе того, находитесь ли вы в конечной точке order-pay (страница, используемая для платежей по счетам).

    /**
     * Only show Cash on Delivery for checkout, and only Stripe for order-pay
     *
     * @param   array   $available_gateways    an array of the enabled gateways
     * @return  array                          the processed array of enabled gateways
     */
    function so1809762_set_gateways_by_context($available_gateways) {
        global $woocommerce;
    
        $endpoint = $woocommerce->query->get_current_endpoint();
    
        if ($endpoint == 'order-pay') {
            unset($available_gateways['cod']);
        } else {
            unset($available_gateways['stripe']);
        }
    
        return $available_gateways;
    }
    add_filter( 'woocommerce_available_payment_gateways', 'so1809762_set_gateways_by_context');
    

Конечно, если вы используете шлюз, отличный от полосы для страницы order-pay, вам нужно убедиться, что вы обновили unset($available_gateways['stripe']); до соответствующего массива.

После этого вы должны быть хорошими! Теперь ваш сайт будет отображать различные шлюзы на основе того, находитесь ли вы на странице оплаты счетов!

Ответ 4

Другой вариант - использовать метод оплаты BACS, где вы могли бы объяснить клиенту, что он будет выставляться позже.

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