Welcartでクロネコwebコレクトを使う方法

WordPress専用のショッピングカートプラグインWelcartにWebpayやYahoo!Fastpayを導入できないか試行錯誤中です。

そんな中で見つけた記事がこれ。

ヤマトもオンライン決済やってたんだー。
配送業者はヤマト以外使う気ないからまとめれたら便利だなー。
手数料は・・・5%か。高い。

というわけでクロネコwebコレクトを使うことは諦めましたが、Welcart上での決済処理の流れを知るサンプルにいいと思ったのと、Welcartのプラグイン本体を修正してるやり方が美しくなかったので、記事を見ながらクロネコwebコレクトを使えるようにしてみました。

ちなみに動作確認まではしてません。
クロネコwebコレクトとの契約が必要ですので。。

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

前述の記事の(ry

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

ここと4の実装が美しくないので、アクションフックを使うよう実装し直します。

// functions.phpに追記する。
add_filter('usces_filter_confirm_inform', function($html, $payments, $acting_flag, $rand, $purchase_disabled) {
  if($acting_flag != 'kuroneko.php') return $html;
  return $html . '<input type="hidden" name="acting" value="kuroneko" />';
}, 99, 5);

ちなみに、上記の書き方はPHP5.3以上じゃないと動かないので、5.2以下の人は次の記事を参考に修正してください。

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

こちらも3と同様に実装が美しくないので、アクションフックを使うようにします。
あと、利用しないのに使ってるものもあるので、それも取り除きます。

// functions.phpに追記する。
add_filter('usces_filter_cartcompletion_page_body', function($nothing, $usces_entries, $usces_carts) {
  if( !isset($_REQUEST['acting']) || $_REQUEST['acting'] != 'kuroneko') return;
  $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']) . '">'.
      '<div class="send">'.
        '<input type="submit" name="purchase" id="purchase_button" class="checkout_button" value="クロネコでお支払手続きをする" />'.
      '</div>'.
    '</form>';
  return $html;
}, 99, 3);

ちなみに、上記コードもPHP5.3以上じゃないと動かないので注意してください。

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

前述の(ry

以上です。

これでWelcart本体の修正をすることなく、クロネコwebコレクトを導入することができました。
Welcartのアップデートをしても再度修正する必要はありません。

自分もWelcartでの決済の流れがなんとなく理解できたので、めでたしめでたし。