WelcartでPayPal支払いの場合に手数料を加算する方法

WelcartでPayPal支払いを選択できるようにした時、高額商品だと、PayPal手数料3~4%は利益を圧迫してしまいます。
そこで、PayPal支払いの場合は、顧客に手数料を支払ってもらえるよう、手数料を設定できるようにしたいことがあるかと思います。
今回はその方法を詳細に記述しました。

    1. バックアップをとる
      私はUpdraftPlusというプラグインを使っています。
    2. Code Snippetsプラグインでfunction.phpを編集する
    3. 以下のcodeをCode Snippetsにコピー&ペーストして有効化すればfunction.phpに追記されることになり、OK。


      // add 3.6% fee in case Paypal payment
      add_filter('usces_filter_getCODFee', 'my_filter_getCODFee', 10, 3);
      function my_filter_getCODFee($fee, $payment_name, $amount_by_cod){
      global $usces_entries;
      global $usces;
      $total_items_price = $usces->get_total_price(); // we cannot use $usces_entries[‘order’][‘total_items_price’] because sometimes it has not set yet.
      if($payment_name == "PayPal"){
      if($total_items_price > 10000000){
      $fee = $total_items_price * 0.029;
      } elseif ($total_items_price > 1000000){
      $fee = $total_items_price * 0.032;
      } elseif ($total_items_price > 300000){
      $fee = $total_items_price * 0.034;
      } else {
      $fee = $total_items_price * 0.036;
      }
      }
      return $fee;
      }

      // output fee name in case PayPal payment
      add_filter('usces_filter_cod_label', 'my_filter_cod_label', 10, 1);
      function my_filter_cod_label(){
      global $usces_entries;
      if($usces_entries['order']['payment_name'] == "PayPal"){
      $text = "PayPal手数料";
      } else {
      $text = __('COD fee', 'usces');
      }
      return $text;
      }

      // print PayPal fee in a thankyou mail
      add_filter('usces_filter_order_confirm_mail_meisai', 'my_order_confirm_mail_meisai', 10, 3);
      function my_order_confirm_mail_meisai($meisai, $data, $cart){
      if($data[order_payment_name] == "PayPal払い"){
      $meisai .= "※上記お支払い金額にはPayPal払い手数料(" . usces_crform( $data['order_cod_fee'], true, false, 'return' ) . ")が含まれております。\r\n";
      }
      return $meisai;
      }

      参考 代引き以外の支払方法で手数料を設定する方法
      paypal手数料の上乗せについて

      実はfunction.phpの編集は、以下の注のように色々試したのですがうまく行かず、結局このCode Snippetsというプラグインを使う方法なら一発でうまくいきました。
      参考 WordPressでfunctions.phpファイルを編集する方法
      注1) function.phpに
      locate_template('inc/myfunc.php');
      などとincludeしても、なぜか手数料は有効になりませんでした。
      注2) function.phpを直接編集しても、手数料が有効になりませんでした。function.phpの最後に書き足したのがだめだったのかもしれませんが、よくわかりません。
      注3) 子テーマを作成するとstyleが崩れてしまいました。一応style.cssと同じ階層にある.cssファイル全てを、wp_enqueue_style()を使って依存関係を書いたのですが。しかし、どうやら最近では、子テーマを作成するのはあまりおすすめの方法ではないようです。
      参考 WordPress 子テーマは CSS 変更でデザイン修正するだけなら作成不要

これで、PayPal支払いのときにPayPal規定の手数料を取るようにできました。

…がしかし!実際やってみると罠が!
welcartでPayPal支払いを設定すると、PayPalショートカットボタンが自動で作られる仕様になっており、カートの中を確認した時点でこのボタンが現れます。そして、その時点でこのショートカットボタンを押すと、設定した手数料が加算されません!これでは手数料が加算されない抜け道になってしまいます。
うーん、次回はこの問題を解決しましょう。
(解決方法はこちら)
それではまた。Chiao!

Please follow and like us:

1件のコメント

  1. こんにちは。とっても有用な記事をありがとうございます。
    参考にさせていただき、コードスニペットに、上記のコードをコピペし有効化いたしましたが、
    paypal選択時の支払い詳細画面に、手数料の項目が表示されません。
    何か考えられることはありますでしょうか?
    お忙しいところ、恐れ入りますが、ご助言いただけますと幸いです。
    よろしくお願いいたします。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です