heteml上のEC-CUBEにJ-Paymentのクレジット決済を追加する

EC-CUBEにクレジット決済を追加してみました
いろいろありますが、今回はJ-Paymentを使いました

J-Paymentの導入方法はいくつかあります
EC-CUBEなのでEC-CUBEモジュールを使いました

ちなみに他には
HTMLリンク方式
HTMLにリンクを埋め込むだけ
リンクをクリックするとJ-Paymentが用意しているページへ飛んでクレジット情報を入力する流れです

Gateway方式
クレジット情報をいれるフォームを自作、自由なデザインでできる

があります

J-Paymentに申し込む

まずはJ-Paymentの審査を通らないと行けないので申し込みます
10日以上かかるみたいです
申し込みの流れ http://www.j-payment.co.jp/service/payment/flow.html
審査が通れば、J-Paymentの店舗IDが付与されアカウントがもらえます

hetemlでSSLを購入

サーバーにSSLを導入します
手頃な証明書を買ってきて..と思いましたがhetemlでは他社の証明書は利用できません
hetemlで申し込みました
http://heteml.jp/support/manual/d-ssl/
DNSへ反映されるのに最大72時間だそうです
2日くらい待つと、httpsでもアクセスできるようになってました

EC-CUBEのSSLのアドレスを変更

SSLアドレスをhttpsにしてなければ設定します
hetemlにSSHでログイン、phpファイルを修正します
SSHのログインは、hetemlの管理者ページでSSHアカウントを作成して行います

$ vi web/data/config/config.php
define(‘HTTPS_URL’, ‘https://sample.co.jp/eccube/’);
というふうに、アドレスをhttpsにします

J-Paymentの設定

アカウントがもらえるとJ-Paymentのコントロールパネルへアクセスできるようになります
設定>決済システムの設定、決済ゲートウェイ&CTI決済設定、決済データ送信元IPにhetemlのサーバーのIPアドレスを設定します
このページのシステムモードがテストモードであれば、決済は発生しません

hetemlのサーバーのIPアドレスは、hetemlの管理ページ、アカウント情報に記載されています

EC-CUBEのJ-Paymentモジュールを購入

EC-CUBEオーナーズストアより導入するサイトに紐づいたアカウントでEC-CUBEバージョンにあったものを購入します
でしたが、今はEC-CUBEオーナーズストアになくなり、J-Payment側から直接もらうようになったようです(なぜでしょう?)

EC-CUBEをメンテナンス状態にする

クレジット機能導入時に不備が起きたりするとまずいので、自分以外は操作できないようにします
WEBサーバーで.htaccessを使って、制限しようと思いましたがhetemlでできなかったのでhetemlのアクセス制限を利用しました
Basic認証をかけるようですが、なんだか日本語が文字化けするので英語で設定しました

EC-CUBEのプラグイン導入

EC-CUBEの管理者ページへログイン
オーナーズストア>モジュール管理
モジュール取得、をクリック、J-Payment決済モジュールをダウンロードします
インストールできたら、設定リンクをクリック
J-Paymentから付与された店舗IDを入力、使うものにチェックを入れていきます
eccube-module

EC-CUBEの設定変更

支払方法設定

基本情報設定>支払方法設定、でクレジットカード決済の表示名など設定します
eccube-payment-config-detail

配送方法設定

基本情報設定>配送方法設定、で取扱い商品種別のクレジットカード決済にチェックをつけます
eccube-delivery-configeccube-delivery-config2

決済のテスト

EC-CUBEでダミー商品とダミー商品を購入するためのテストアカウントを用意して、購入してみます
使うカード情報はJ-Paymentに聞いたダミーのカード番号で行います
(なんでもいいのかも)

うまくいけば、ダミー商品は非公開か削除かします

本番運用開始

J-Paymentへ本番運用する連絡をいれ、設定変更してもらってコントロールパネルへアクセス、設定>決済システムの設定、システムモードをテストモード→本番モードにします
hetemlのアクセス制限を削除します

これでクレジットカード決済が導入されました

途中時間がかかるときは、いったんEC-CUBEの配送設定からクレジットカード決済を外して、アクセス制限を外し、運用するといいと思います



EC-CUBEの管理者パスワードを忘れた時

ひさしぶりにEC-CUBEをさわろうと
http://(EC-CUBEサーバーアドレス)/admin
にアクセス、ユーザー、パスワードを忘れた時
PHPをいじって、無条件に入れるようにしました
※本番環境では危険です

手元にあった、EC-CUBE 2.12.3でためしました

data/class/pages/admin/LC_Page_Admin_Index.php 85行目
if (SC_Utils_Ex::isBlank($this->arrErr))

if (! SC_Utils_Ex::isBlank($this->arrErr))
としたら、なんでもログインできるようになります


function action() {
    // パラメーター管理クラス
    $objFormParam = new SC_FormParam_Ex();

    switch ($this->getMode()) {
        case 'login':
            //ログイン処理
            $this->lfInitParam($objFormParam);
            $objFormParam->setParam($_POST);
            $this->arrErr = $this->lfCheckError($objFormParam);
            if (! SC_Utils_Ex::isBlank($this->arrErr)) { // ここを反転した
                $this->lfDoLogin($objFormParam->getValue('login_id'));

                SC_Response_Ex::sendRedirect(ADMIN_HOME_URLPATH);
            } else {
                // ブルートフォースアタック対策
                // ログイン失敗時に遅延させる
                sleep(LOGIN_RETRY_INTERVAL);

                SC_Utils_Ex::sfDispError(LOGIN_ERROR);
            }   
            break;
        default:
            break;
    }   
}

ログインできたら、パスワードを変更してPHPを元に戻したらいいですね

EC-CUBEのメンテナンス切り替え機能プラグインを入れてみた

EC-CUBEで安全にモジュールやプラグインを入れるためメンテナンス中表示にしたかったですが標準ではついてません

メンテナンスページ作って.htaccessとかで飛ばしてもよかったですがプラグインがあったので入れてみました
http://www.ec-cube.net/products/detail.php?
product_id=281

OSはUbuntu 12.04
データベースはMySQL 5.5.38
EC-CUBEは2.12.3
プラグインは1.0.3
で試しました

EC-CUBEのオーナーズストアにログインしてダウンロードします
自分のEC-CUBEの管理者画面へログイン、
オーナーズストア>プラグイン管理、でダウンロードしたtar.gzをインストール、
有効、にチェックを入れておきます
eccube-plugins

するとメニューが基本情報管理>メンテナンス管理、のメニューが増えます
クリックするとシステムエラー発生

ログを見るとデータベースのテーブル名が違う..テーブルは小文字だけなのにプログラムは大文字が混じってる..
プログラムを変更してみました


# vim data/downloads/plugin/SiteMaintenance/admin/basis/plg_SiteMaintenance_LC_Page_Admin_Basis_Maintenance.php

70行めの括弧のなかをすべて小文字に


$this->arrMainte = $masterData->getMasterData("plg_sitemaintenance_mtb_maintenance");

再度、画面にアクセス
※最初、メンテナンス中になってました
eccube1

サイトにアクセスすると
eccube2
こんな感じでメンテナンス中になります

管理画面で、通常営業中にすると元通りでした
やっつけですが参考まで

おれおれSSLを入れてみた

SSLを入れてテストしたいことがあったので自分でSSL証明書を用意して入れてみました(おれおれSSL)
Ubuntu 12.04のApacheで試しました

鍵と証明書を作成します
$ openssl genrsa 2048 > server.key
$ openssl req -new -key server.key > server.csr
$ openssl x509 -days 3650 -req -signkey server.key < server.csr > server.crt
参考) http://d.hatena.ne.jp/ozuma/20130511/1368284304

好きなディレクトリへ作った証明書と鍵を移動
$ sudo mkdir /etc/apache2/ssl
$ sudo mv server.key /etc/apache2/ssl/
$ sudo mv server.crt /etc/apache2/ssl/

Apacheのsslを有効に
$ sudo a2enmod ssl
$ sudo service apache2 restart

$ sudo vim /etc/apache2/sites-available/default-ssl
SSLEngine on
SSLCertificateFile /etc/apache2/ssl/server.crt
SSLCertificateKeyFile /etc/apache2/ssl/server.key

$ sudo a2ensite default-ssl
$ sudo service apache2 reload

で https://localhost/ にアクセス
あやしい証明書なので、警告がでますが許可すればアクセスできました