特定の商品がカートに入っている時に、支払い方法を限定する方法

スポンサーリンク

Welcartで、特定の商品がカートに入っている場合に、支払い方法を限定させる方法です。

特に高額商品などではクレジットカードのみとするケースや、予約商品で代引きやコンビニ払いのみ等にする場合などで、支払い方法を固定させる時に有効です。

もくじ

  1. 利用するフック
  2. functions.phpにコードを記載
  3. 自分が使っている支払い方法のパラメータを確認する方法
  4. まとめ

1. 利用するフック

フックは、発送・支払方法ページで支払い方法を出力させる、usces_the_payment_method($value, $out)という関数の中に設置されています。

  • フックの記述:usces_fiter_the_payment_method
  • フックの場所:template_func.php

2. functions.phpにフックを記載

普通のフックと同様です。後述しますが、自分が設定しているWelcartの支払方法によってパラメータが変わってきます。

Welcartの決済設定画面

例えば以下は、支払設定の上から二番目を「Paypal」、決済種別を「Paypal決済」にしていた場合に、「特定商品がカートに入っている際に支払い方法をPaypalに限定する」書き方です。

//特定の商品の場合に支払い方法を限定
add_filter('usces_fiter_the_payment_method', 'my_the_payment_method', 10, 2);
function my_the_payment_method($payments, $value){
    global $usces;
    $carts = $usces->cart->get_cart();
    $mysku = array('SKU001', 'SKU002'); //特定の商品のSKU
    foreach($carts as $cart){
        $sku = $cart['sku'];
        if(in_array($sku, $mysku)){
            $payments = array(
               array(
                   'id' => 1,
                   'name' => 'Paypal', //支払方法名
                   'explanation' => 'クレジットカードでの支払いはこちら', //説明
                   'settlement' => 'acting_paypal_ec', //決済種別
                   'module' => '', //決済モジュール
                   'sort' => 0, //表示順序
                   'use' => 'activate', //activeで「使用」
               ),
           );
        }
    }
    return $payments;
}

6行目で変数$myskuに、支払い方法を限定させたい商品ののSKUを代入しています。

10行目で書いている$paymentsの中身(array以下)が、限定させたい支払方法のパラメータを指定している部分です。

パラメータの指定方法

パラメータの指定方法は、大まかに以下のようになります。

パラメータ 指定値
id 0、1、2、3・・・(決済の設定順※一番上が「0」)
name 支払方法名
explanation 説明
settlement 決済種別 「COD」代金引換
「acting」代行業者決済
「acting_paypal_ec」Paypal決済
「transferAdvance」振込み(前払い)
「transferDeferred」振込み(後払い)
module 決済モジュール
sort 0、1、2、3・・・(表示順序※一番上が「0」)
use 「active」 で使用、「deactivate」で停止

3. 自分が使っている支払い方法のパラメータを確認する方法

決済の設定内容はECサイト毎で違ってくるので、一番確実なのは自分でパラメータを確認することです。

複数のパラメータを擁している変数(今回で言うと$payments)のデータは、PHPのprint_r関数を使うことによって画面上に出力させることが出来ます。

print_r($payments);

上記のコードを、先ほどのコードの中の7行目のforeachより前に入れてみて下さい。

「発送・支払方法」ページを表示した時に、設定している支払方法のデータが全て出力されます。

Welcartの支払い方法のパラメータを出力

※先頭は「0」から始まるのに注意

ちょっと見づらいかもしれませんが、自分が設定した支払方法について、[0][1][2][3]の順で、パラメータを確認することが出来ます。

基本はこのパラメータを使って、先ほどのコードの中に入れればOKです。

もちろん、全てを元のデータと同じように記述する必要はありません。例えば、先ほどのコードのexplanation(説明)のパラメータを「○○ご注文の場合は、支払方法は△△のみになります」などと書き換えてもいいと思います。

※パラメータの確認が完了したら、print_r($payments);は削除しましょう。

4. まとめ

途中で支払方法のパラメータの確認が必要になるものの、フックだけで出来るカスタマイズなので気軽に出来ます。

現時点のWelcartでは、カートの中身の商品がどのカテゴリーに属するかというデータを取得することが(多分)出来ないので、一つ一つSKUを指定する必要があるのがちょっと手間でしょうか。

また、この方法では、決済方法を限定される商品が一つでもカートに入っているとフックが作動しますので、他の商品と一緒に注文される可能性がある場合などは、注意書きなども入れておいたほうがいいかもしれません。

2 Responses to “特定の商品がカートに入っている時に、支払い方法を限定する方法”

  1. セバスチャン より:

    こちらの方法を使わせて頂きカスタマイズ出来ました。
    ありがとうございました!

Copyright© 2017 Welcart カスタマイズ ブログ All Rights Reserved.