14

WooCommerce ショップ (ローカルで運営) を持っていますが、支払いゲートウェイを削除したいと考えています。顧客は 1 セントも支払うことなく注文できるはずです。手動で請求書を送信します。

これを無効にする場所を実際に見つけることができません。WooCommerce の標準ではないようです。

バックエンドですべての支払いゲートウェイを無効にしようとしましたが、1 つの支払いゲートウェイを有効にしておく必要があります。

前もって感謝します!

4

4 に答える 4

25

テーマの functions.php に次の行を追加するだけです。 add_filter('woocommerce_cart_needs_payment', '__return_false');

于 2015-10-09T15:14:49.123 に答える
4

この質問に対する他の回答が対処していないことは、顧客が最終的に請求書を支払う方法が必要であるという事実です。代金引換 (ニーズに合わせて名前を変更) を使用すると、ユーザーがチェックアウト時に実際に支払う必要がなくなりますが、問題は、代金引換が唯一支払い方法である場合、請求書。

ほとんどの場合、カートのチェックアウト時に代金引換のみが必要になり、請求書の支払い方法には別の支払い方法 (Stripe など) が必要になると思います。

後払い設定を作成するための完全なワークフローは次のとおりです。

  1. @crdunst が言及しているように、Cash on Delivery を使用し、名前を「請求書待ち」などに変更する必要があります。
  2. 使用するすべての支払いゲートウェイを有効にします (この例では、代金引換と Stripe のみを使用します。代金引換は「チェックアウト」支払いゲートウェイになり、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');
    

もちろん、ページにストライプ以外のゲートウェイを使用している場合は、適切な配列キーにorder-pay更新する必要があります。unset($available_gateways['stripe']);

その後、あなたは行く準備ができているはずです!請求書の支払いページを表示しているかどうかに基づいて、サイトに異なるゲートウェイが表示されるようになりました。

于 2016-06-14T21:57:31.663 に答える
0

他のオプションは、後で請求されることをクライアントに説明できる BACS 支払い方法を使用することです。

BACS の使用時に送信される電子メールに情報を追加することもできます。

于 2014-02-15T04:50:58.393 に答える