WooCommerce でさまざまな支払い方法に料金または割引を追加する方法
公開: 2019-03-26e コマースの Web サイトでは、チェックアウト時に選択した各支払い方法に、サービス料や割引が関連付けられていることがよくあります。 また、代金引換の手数料がその他の支払い方法の手数料よりも高いことも注目に値します。 これは、前払いの可能性を高めるためです。 前払いは、顧客から支払いを受けられないリスクを軽減するだけでなく、ビジネスのキャッシュフローを確保するのにも役立ちます。 お支払い方法に手数料がかからない場合、代金引換以外の方法でお支払いいただくと割引が適用される場合があります。
また、実行したいスキームやプロモーションに応じて、特定の支払い方法に対して割引を追加することもできます. 割引は一般的に顧客にとって魅力的であり、売り上げの増加に役立ちます。 この投稿では、WooCommerce でさまざまな支払い方法に料金または割引を追加し、その結果、同じメリットを享受できるさまざまな方法を紹介します。
コード スニペットを介してさまざまな支払い方法に割引率を追加する
これは、子テーマの functions.php ファイルにコード スニペットを追加することで実現できます。
以下のコードは、WooCommerce のチェックアウト ページで支払い方法として PayPal が選択されている場合に、合計金額に割引を追加します。 $percent に値を割り当てることで、目的の支払い方法に適用する割引率を指定できます。 WooCommerce のデフォルトの支払い方法は、直接銀行振込 (bacs)、小切手支払い (cheque)、代金引換 (cod)、および PayPal (paypal) で、括弧内に ID が記載されています。
add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
function ts_add_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
// 支払い方法について言及します。例: cod、bacs、check、paypal
$payment_method = 'ペイパル';
// 適用するパーセンテージ
$パーセント = 2; // 2%
$cart_total = $cart_object->subtotal_ex_tax;
$chosen_payment_method = WC()->session->get('chosen_payment_method'); //選択した支払い方法を取得
if( $payment_method == $chosen_payment_method ){
$label_text = __( "PayPal 割引" );
// パーセンテージの計算
$discount = number_format(($cart_total / 100) * $percent, 2);
// 割引を追加
$cart_object->add_fee( $label_text, -$discount, false );
}
}
add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
関数 ts_refresh_payment_method(){
// jQuery
?>
<script type="text/javascript">
(関数($){
$( 'form.checkout' ).on( 'change', 'input[name^="支払い方法"]', function() {
$('body').trigger('update_checkout');
});
})(jQuery);
</script>
<?php
}ここでは 2 つの関数が必要です。1 つは適切な割引または手数料を追加するジョブを実行するためのもので、もう 1 つはユーザーによる支払い方法の選択の変更を監視するためのもので、これには JavaScript を使用します。 woocommerce_cart_calculate_feesおよびwoocommerce_review_order_before_paymentフックは、これら 2 つの関数をそれぞれ追加するために使用されます。
Direct Bank Transfer、Cheque、Cash-on-Delivery、および PayPal の支払い方法の値は、それぞれbacs 、 check 、 cod 、およびpaypalです。 add_fee()関数は、WooCommerce のWC_Cartクラスの組み込みメソッドです。
これにより、割引額が小計から差し引かれ、合計が表示されます。

少し変更するだけで、同じコード スニペットで複数の支払い方法の割引について言及できます。
add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
function ts_add_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
$label_text=__("");
$パーセント= 0;
// 支払い方法について言及します。例: cod、bacs、check、paypal
$cart_total = $cart_object->subtotal_ex_tax;
$chosen_payment_method = WC()->session->get('chosen_payment_method'); //選択した支払い方法を取得
if( $chosen_payment_method == "ペイパル" ){
$label_text = __( "PayPal 割引" );
// 適用するパーセンテージ
$パーセント = 2; // 2%
}
else if( $chosen_payment_method == "bacs"){
$label_text = __( "銀行振込割引" );
// 適用するパーセンテージ
$パーセント = 3; // 3%
}
else if( $chosen_payment_method == "小切手"){
$label_text = __( "小切手支払い割引" );
// 適用するパーセンテージ
$パーセント = 2; // 2%
}
そうしないと {
$label_text = __( "代引き割引" );
// 適用するパーセンテージ
$パーセント= 0; // 0%
}
// パーセンテージの計算
$discount = number_format(($cart_total / 100) * $percent, 2);
// 割引を追加
$cart_object->add_fee( $label_text, -$discount, false );
}
add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
関数 ts_refresh_payment_method(){
// jQuery
?>
<script type="text/javascript">
(関数($){
$( 'form.checkout' ).on( 'change', 'input[name^="支払い方法"]', function() {
$('body').trigger('update_checkout');
});
})(jQuery);
</script>
<?php
}コード スニペットを使用してさまざまな支払い方法に定額割引額を追加する
パーセンテージではなく金額を言及したいとします。 同じスニペットを使用して、パーセンテージを計算するステップを省略し、各支払い方法に基づいて割引額を入力として受け入れることで、これを行うことができます。
add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
function ts_add_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
$label_text=__("");
$discount_amount=0;
// 支払い方法について言及します。例: cod、bacs、check、paypal
$cart_total = $cart_object->subtotal_ex_tax;
$chosen_payment_method = WC()->session->get('chosen_payment_method'); //選択した支払い方法を取得
if( $chosen_payment_method == "ペイパル" ){
$label_text = __( "PayPal 割引" );
// 適用する割引額
$割引金額 = 200;
}
else if( $chosen_payment_method == "bacs"){
$label_text = __( "銀行振込割引" );
// 適用する割引額
$割引金額 = 150;
}
else if( $chosen_payment_method == "小切手"){
$label_text = __( "小切手支払い割引" );
// 適用する割引額
$割引金額 = 100;
}
そうしないと {
$label_text = __( "代引き割引" );
// 適用する割引額
$割引金額 = 0;
}
// 割引を追加
$cart_object->add_fee( $label_text, -$discount_amount, false );
}
add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
関数 ts_refresh_payment_method(){
// jQuery
?>
<script type="text/javascript">
(関数($){
$( 'form.checkout' ).on( 'change', 'input[name^="支払い方法"]', function() {
$('body').trigger('update_checkout');
});
})(jQuery);
</script>
<?php
}


サービス料金を追加するには、 add_fee関数の引数の 1 つの符号を「-」から「+」に変更するか、正を意味する符号をまったく変更する必要があります。
add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
function ts_add_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
$label_text=__("");
$service_charge=0;
// 支払い方法について言及します。例: cod、bacs、check、paypal
$cart_total = $cart_object->subtotal_ex_tax;
$chosen_payment_method = WC()->session->get('chosen_payment_method'); //選択した支払い方法を取得
if( $chosen_payment_method == "ペイパル" ){
$label_text = __( "PayPal サービス料" );
// 適用するサービス料金
$service_charge=200;
}
else if( $chosen_payment_method == "bacs"){
$label_text = __( "銀行振込手数料" );
// 適用するサービス料金
$service_charge=100;
}
else if( $chosen_payment_method == "小切手"){
$label_text = __( "小切手支払い手数料" );
// 適用するサービス料金
$service_charge=150;
}
そうしないと {
$label_text = __( "代引き手数料" );
// 適用するサービス料金
$service_charge=250;
}
// サービス料を加算
$cart_object->add_fee( $label_text, $service_charge, false );
}
add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
関数 ts_refresh_payment_method(){
// jQuery
?>
<script type="text/javascript">
(関数($){
$( 'form.checkout' ).on( 'change', 'input[name^="支払い方法"]', function() {
$('body').trigger('update_checkout');
});
})(jQuery);
</script>
<?php
}
このように、選択した支払い方法に従ってサービス料が適用されます。

ログインしたユーザーのみに異なる支払い方法の割引を追加する (コード スニペット経由)
これらの割引をログイン ユーザーにのみ提供したい場合 (この投稿のコメントで要求されたとおり)、ユーザーがログインしているかどうかを確認する条件を追加するだけです。 これは関数is_user_logged_in()によって行うことができます。 以下のコード スニペットは、ログインしているユーザーのみを対象に、特定の支払い方法にパーセンテージ ディスカウントを追加する方法を示しています。
add_action( 'woocommerce_cart_calculate_fees','ts_add_discount', 20, 1 );
function ts_add_discount( $cart_object ) {
if ( is_admin() && ! defined( 'DOING_AJAX' ) ) return;
if (is_user_logged_in()){
// 支払い方法について言及します。例: cod、bacs、check、paypal
$payment_method = 'ペイパル';
// 適用するパーセンテージ
$パーセント = 2; // 2%
$cart_total = $cart_object->subtotal_ex_tax;
$chosen_payment_method = WC()->session->get('chosen_payment_method'); //選択した支払い方法を取得
if( $payment_method == $chosen_payment_method ){
$label_text = __( "PayPal 割引" );
// パーセンテージの計算
$discount = number_format(($cart_total / 100) * $percent, 2);
// 割引を追加
$cart_object->add_fee( $label_text, -$discount, false );
}
}
}
add_action( 'woocommerce_review_order_before_payment', 'ts_refresh_payment_method' );
関数 ts_refresh_payment_method(){
// jQuery
?>
<script type="text/javascript">
(関数($){
$( 'form.checkout' ).on( 'change', 'input[name^="支払い方法"]', function() {
$('body').trigger('update_checkout');
});
})(jQuery);
</script>
<?php
}要件に応じて、この投稿のコード スニペットを使用できます。 これをログインしているユーザーだけに制限したい場合は、そのコード スニペット内に condition -if (is_user_logged_in())を追加するだけです。
プラグインを介してさまざまな支払い方法に料金または割引を追加する
コード スニペットを追加したくない場合は、同じことを実現する簡単な方法があります – プラグインです! さまざまな機能を提供する無料および有料のプラグインがあります。
WooCommerce の支払いゲートウェイベースの料金と割引
これは私たちが提供する無料のプラグインで、手数料、割引、税金などを追加したり、カートの最小額と最大額を同じ基準として設定したりできます。 割引を適用した後、料金を四捨五入することもできます。 また、ダッシュボードからアクセスできる使いやすいインターフェイスを使用して、これらすべてを実行できます。

- WooCommerce (無料) の支払い方法ごとの割引
これは WPCodelibrary による無料のプラグインで、WordPress ダッシュボード内にシンプルなインターフェイスを提供して、WooCommerce が提供するデフォルトの支払い方法に割引を設定します。 ただし、サービス料や手数料を追加する機能はありません。
- WooCommerce の支払いゲートウェイベースの料金と割引 ($39)
私たちによるこのプレミアムプラグインには、国、州、製品カテゴリなどに基づいてさまざまな支払い方法の手数料や割引を追加できる一連の機能が付属しています。これに加えて、手数料に税金を適用することもできます(配送料を除く) ) プラグインを使用します。 インターフェースはシンプルで使いやすく、個々の製品にさまざまな割引や料金を適用することもできます.
