从WooCommerce中删除支付网关

时间:2013-05-24 07:21:00

标签: wordpress woocommerce

我有一个WooCommerce商店(在本地运行),但我想删除支付网关。客户应该能够在不支付任何费用的情况下下订单,我会手动向他们发送发票。

我无法真正找到禁用它的位置,它似乎不是WooCommerce的标准。

尝试禁用后端中的所有支付网关,但您必须启用一个支付网关。

提前致谢!

4 个答案:

答案 0 :(得分:22)

只需在主题中的functions.php中添加以下行: add_filter('woocommerce_cart_needs_payment', '__return_false');

答案 1 :(得分:17)

启用“货到付款”,结账时不会付款。您可以轻松地将“货到付款”标题和标签更改为“无需付款”或类似内容。

答案 2 :(得分:3)

另一个问题没有解决的问题是,您需要一种方法让客户最终支付发票。使用货到付款(重新命名以满足您的需求)完美地实现了用户实际上没有在结账时付款,但问题是,如果货到付款是您的付款方式,它将仍然是您向发票发送时唯一的付款方式。

我认为在大多数情况下,您只需要在购物车结帐时使用货到付款,并使用不同的付款方式(如Stripe)进行发票付款方式。

以下是创建延期付款设置的完整工作流程。

  1. 与@crdunst提及一样,您应该使用货到付款并重命名 它是“等待发票”或其他什么。
  2. 启用您想要使用的所有支付网关(在此示例中,我们只使用货到付款和条纹。货到付款将是我们的“结帐”支付网关,Stripe将是我们的发票付款网关。
  3. 根据您是否位于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');
    
  4. 当然,如果您在order-pay页面使用条带以外的网关,则需要确保将unset($available_gateways['stripe']);更新为正确的数组密钥。

    在那之后,你应该好好去!您的网站现在将根据您是否在发票付款页面上显示不同的网关!

答案 3 :(得分:0)

其他选项是使用BACS支付方式,您可以向客户解释他将在以后开具发票。

您甚至可以在使用BACS时发送的电子邮件中添加一些信息。