Welcart for WordPressとクロネコwebコレクトを連携

welcart

Welcartは、WordPressにショッピング機能を設置することができる、無料のプラグインです。
商品管理・受注管理・在庫管理・会員管理システムもついていて、決済サービスも「ルミーズ」や「PayPal 」などと連携することが可能です。

しかし、残念ながらクロネコヤマトの決済サービスとの連携がされておらず、今後もその予定はないとのこと・・・。

そんな中、WordPressサイトにショッピング機能をつけたいとの依頼が。
クレジットカード決済システムはいつも、クロネコwebコレクトにお世話になっているわたしは、「Welcartを使いたい、でもクロネコが(つд⊂)エーン」という状態でした。。

それならば!カスタマイズして対応させてしまえ!と半ばヤケクソでやってみました。一応、できたみたいです(笑)

そういうわけで、今日はWelcart for WordPressとクロネコwebコレクトの連携の方法をご紹介します。

Welcartプラグインをインストール

ins

まずはWordPressに、Welcartプラグインをインストールしてください。細かい設定などは今回は省略します。

こちらでもダウンロード可能です→ https://wordpress.org/plugins/usc-e-shop/

決済モジュール“kuroneko.php”を作成

ダミーの決済モジュールを作成します。

WordPressインストールディレクトリ/wp-content/plugins/usc-e-shop/settlement

の中にサンプルの決済モジュールが入っています。
「paypal_sample_ja.php」をコピーして、「kuroneko.php」にリネームします。中身は特に何もいじりません。

注文完了画面にボタンを追加

kanryo

WordPressインストールディレクトリ/wp-content/plugins/usc-e-shop/includes

の中にある、「purchase_button.php」に変更を加えます。
879行目のdefault:の部分

		default:
			$html .= '<form id="purchase_form" action="' . apply_filters('usces_filter_acting_url', USCES_CART_URL) . '" method="post" onKeyDown="if (event.keyCode == 13) {return false;}">
				<div class="send"><input name="backDelivery" type="submit" id="back_button" value="'.__('Back', 'usces').'"'.apply_filters('usces_filter_confirm_prebutton', NULL).' />
				<input name="purchase" type="submit" id="purchase_button" class="checkout_button" value="'.__('Checkout', 'usces').'"'.$purchase_disabled.' /></div>';
			$html = apply_filters('usces_filter_confirm_inform', $html, $payments, $acting_flag, $rand, $purchase_disabled);
			$html .= '</form>';
	}
}

を、クロネコへのボタンに変更します。

		default:
			$html .= '<form id="purchase_form" action="' . apply_filters('usces_filter_acting_url', USCES_CART_URL) . '" method="post" onKeyDown="if (event.keyCode == 13) {return false;}">
				<div class="send"><input name="backDelivery" type="submit" id="back_button" value="'.__('Back', 'usces').'"'.apply_filters('usces_filter_confirm_prebutton', NULL).' />
				<input name="purchase" type="submit" id="purchase_button" class="checkout_button" value="'.__('Checkout', 'usces').'"'.$purchase_disabled.' /></div>';
			$html .= '<input type="hidden" name="acting" value="kuroneko" />';
			$html = apply_filters('usces_filter_confirm_inform', $html, $payments, $acting_flag, $rand, $purchase_disabled);
			$html .= '</form>';
	}
}

ボタンに注文情報をもたせる

ここまでは、ただボタンを追加しただけになりますので、ボタンを押してクロネコの方へ飛んだ時に、注文情報を一緒にもっていくように設定します。

WordPressインストールディレクトリ/wp-content/plugins/usc-e-shop/includes

の中にある、「completion_settlement.php」の一番最後の行に以下を追加します。

//ここから追加 クロネコwebコレクト
}elseif( isset($_REQUEST['acting']) && 'kuroneko' == $_REQUEST['acting'] ){ 
            require_once($usces->options['settlement_path'] . "kuroneko.php");
            $entry = $usces->cart->get_entry();
		$html .= '<form id="purchase_form" action="https://payment.kuronekoyamato.co.jp/webcollect/settleSelectAction.gw" method="post" onKeyDown="if (event.keyCode == 13) {return false;}" Accept-charset="Shift_JIS">
		<input type="hidden" name="TRS_MAP" value="V_W02">
<input type="hidden" name="trader_code" value="クロネコで契約した加盟店コード">
<input type="hidden" name="order_no" value="'. esc_attr($usces_entries['order']['ID']) . '">
<input type="hidden" name="settle_price" value="'. esc_attr($usces_entries['order']['total_full_price']) . '">
<input type="hidden" name="goods_name" value="商品">
<input type="hidden" name="buyer_name_kanji" value="' . esc_attr($usces_entries['customer']['name1']) . '' . esc_attr($usces_entries['customer']['name2']) . '">
<input type="hidden" name="buyer_name_kana" value="' . esc_attr($usces_entries['customer']['name3']) . '' . esc_attr($usces_entries['customer']['name4']) . '">
<input type="hidden" name="buyer_tel" value="'. esc_attr($usces_entries['customer']['tel']) . '">
<input type="hidden" name="buyer_email" value="'. esc_attr($usces_entries['customer']['mailaddress1']) . '">
				';
		$html .= '
				<div class="send"><input name="purchase" type="submit" id="purchase_button" class="checkout_button" value="クロネコでお支払手続きをする"' . apply_filters('usces_filter_confirm_nextbutton', NULL) . ' /></div>';
			$html = apply_filters('usces_filter_confirm_inform', $html, $payments, $acting_flag, $rand);
			$html .= '</form>';
}

上記7行目のvalue部分はクロネコで契約した加盟店コードを記載します。
webコレクトではなく別のサービスを使用する場合など必要に応じて、5行目のaction部分を変更してください。

Welcartの支払方法にクレジット決済を追加

ここまで済んだら、あとはWelcart設定画面の基本設定の中にある、「支払方法」のところにクレジットカード決済を追加します。
決済モジュールのところに「kuroneko.php」と入力すれば完了です!

shiharai

以上でわたしがしたカスタマイズは終了です(たぶん)。
記憶が曖昧なので抜けがあるかもしれません・・・(´・ω・`;)

今回の、Welcartとクロネコの連携ですが、意外と情報が少なくて手間取りました。
Welcartさん、クロネコも視野に入れて欲しいものです。。

「Welcart for WordPressとクロネコwebコレクトを連携」への12件のフィードバック

  1. Welcartでクロネコwebコレクトを使用しなければならなくなり、とても助かりました。
    決済はできるようになったのですが、送信完了のページで、クロネコWebコレクトへのボタンの上に

    Warning: Missing argument 5 for wc_purchase_nonce() in /home/users/1/●●●●●●●/web/domain/wp/wp-content/plugins/usc-e-shop/functions/filters.php on line 83

    というのが表示されてしまいます。
    これはいったいなんなのでしょうか?
    回避する方法、非表示にする方法があればご教授いただけると幸いです。

      1. お返事遅くなりまして、申し訳ございません。
        お役に立てて光栄です(^^)
        ありがとうございます!

        エラーの件、解決されたようで、よかったです!
        また何かありましたら、ご相談ください。

  2. おかげ様でクロネコとの接続がうまくいきそうです。ありがとうございます。

    ただ、私もnekoさんと同じWarningが出てしまいました。
    どうも、「wp-content/plugins/usc-e-shop/functions/filters.php」の83行目、 wc_purchase_nonce()に渡す引数が足りないみたいなのです。

    「4)ボタンに注文情報をもたせる」の下から3行目を見るとたしかに、
    本来’usces_filter_confirm_inform’へ5つ渡すべきところが4つしか渡していません。
    $html = apply_filters(‘usces_filter_confirm_inform’, $html, $payments, $acting_flag, $rand);

    「/usc-e-shop/includes/purchase_button.php」を参考に以下を追加し、
    $payments = usces_get_payments_by_name($usces_entries[‘order’][‘payment_name’]);
    $acting_flag = ”;
    $purchase_disabled = ”;
    $rand = sprintf(‘%010d’, mt_rand(1, 9999999999));

    渡す引数を一つ増やすところを以下に修正すると、Warningが消えました。
    $html = apply_filters(‘usces_filter_confirm_inform’, $html, $payments, $acting_flag, $rand, $purchase_disabled);

    ただ、wp_nonceが出力されたわけではありませんし、まだどういう仕組みか調べている最中です。
    外部へリンクするFormでのwp_nonceの必要性もわたしの勉強不足で分からりませんでした。

    長々とすみません。

    1. 貴重な情報ありがとうございます!
      わたしも全然理解できずにとりあえずの完成を目指して作業しているので、勉強不足ですみません。
      確かに、「/usc-e-shop/includes/purchase_button.php」では渡す引数が5つ指定してありますね…。

      先日、わたしの汚い(笑)コードを修正し直してくださった記事がありますので、そちらも参考にしてみてください!
      http://mathlow.hateblo.jp/entry/2014/06/15/193320

  3. こんばんは、クロネコ使いたくてここにたどり着きました。導入はうまくいったのですが手数料をお客様に負担して頂く場合の金額追加方法が解りませんでした。何かいい方法はありませんか?

    1. ハル様
      コメントありがとうございます。お返事が遅くなってすみません。
      手数料というのは、クレジットカード決済の手数料のことですよね?
      設定するところがないので、わたしがやったのは送料に予め上乗せする、という手段です。
      ご参考まで。。

  4. こんにちは、決済は出来るようになったのですが、この”商品”を動的(実際に購入した商品)を表示させることは可能なのでしょうか?
    よろしくお願いします。

    1. コメントありがとうございます。
      4年近く前にやったことなので、もう実証環境がなく、お答えすることができません。
      申し訳ありません。。

  5. はじめまして!小栗と申します。

    WelcartにWEBコレクトを実装する必要が出てきたので、
    記事を参考にさせて頂いておりますが。。
    最初の段階でつまづいてしまって。。
    settlementのフォルダの中には、何も入っていなくて、
    paypal_sample_ja.php
    を検索しても出てこないです。

    これは、何かPayPalの決済モジュールをインストールとかする必要がありますか?

    1. 小栗様

      返信が遅くなってしまってすみません。
      Welcartのプラグインは当時からバージョンアップされており、前のコメントにも書いている通り、わたしも4年前に実装したことなので現在どうなっているかは、わかりかねます。
      ちらっとファイル群を見てみましたが「functions」フォルダ内の「paypal_func.php」かな・・・?

      そもそもソースが変わってしまっているので、わたしの記事は参考にもならないと思いますので、よろしくお願いいたします。

コメントを残す

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

CAPTCHA