WooCommerce 支払い方法 追加(前置き)

デジタルドリームワークスから比嘉です。
WooCommerceの検証が続いているため、WooCommerceネタがしばらく続きます。
しばらくお付き合い下さい。

さて表題通りですが、WooCommerceはWordpressでECショップを運営出来るプラグインです。
ECショップで欠かせないのが支払方法ですね。
デフォルトでは以下の項目が利用可能です。

銀行振込(ダイレクト)
小切手支払い
代金引換
PayPal

上記、銀行振込(ダイレクト)設定画面では、
「BACS(電信振替システム)を許可する。(国際的に一般化している電信振替システムです。日本国内取引では使いません。)」
というような文章が出てきます。
どうも通常の銀行振込とは違う様です。

電信振替システムについて…
預金ネットワーク内でユーザからの支払いを受け取り、資金を送金先に電信振替する自動預金システムを提供すること。

ふーん…
通常の銀行振込とは違う様です。
これとは別に銀行振込の項目を追加した方が良さそうですが、追加する項目が見当たりません。
早速 WooCommerce公式ページから確認すると、支払い方法はプラグインを作成して追加しないといけないようです。
(※英語ページのみで翻訳に自信がありませんが…多分そういうことが記述されている)

https://docs.woothemes.com/document/payment-gateway-api/

blog-151110-pict01

ということで、プラグインの作り方からWooCommerceの支払い方法の流れまでを次回ブログ記事にてアップしてきます。
それではよろしくお願い致します!

EC-CUBE2.12系へのアップグレードはひとまず保留

またEC-CUBEネタです。
前々から気になっていたEC-CUBE2.12系。

色々と改善されているようですが、やはり一番気になるところはプラグイン機能搭載でしょうか。
毎回カスタマイズしていた部分などはプラグインで簡単に機能拡張できるようになりそうですね。
これを気にさらに知識を深めたいところです。

2.4系から2.11系へのアップグレードは試行錯誤しながら出来た!?つもりなので、今回も頑張ろうと思い情報収集してみましたが、これが結構手こずりそうです。
DB構造などガッツリ変更されているようなので、今回は難しいかな…。
フォーラムなどでは、2.12.1辺りの安定板が出る頃には移行プラグインが出るんじゃないかという話がありましたので、ひとまずアップグレードは保留。
それまでにプラグインの勉強したいところ。
勉強することが多いですね。ちょっとずつでも、地道に頑張るしかないかな…

EC-CUBE 2.4系→2.11系へ【インポート編】

すみません。業務も忙しく、かなり遅くなりました。
作業時に残したメモを紛失したこと、確認作業が時間的にすぐは厳しいところですが、
コメントもいくつかいただき、覚えている部分だけでも投稿しようと思います。
コメントいただいた方々有難うございました!

それではインポート編です。

まずエクスポートモジュールで書き出されたzipファイルの内容がちゃんと書き出されているか確認して下さい。
自分の場合は、dtb_products_class.csvを上手く書き出してくれず、少々モジュールを修正しました。
それは「EC-CUBE 2.4系→2.11系へ【エクスポート編】」でご確認下さい。

データを確認できたら、次の作業へ移ります。
この作業は自分の環境で必要だったのか、不必要だったのかうる覚えですが念の為…
以下のようにエラーを回避出来るようです。
↓↓
phpMyAdminなどのツールを使用して以下の2点を変更
・dtb_shippingのdeliv_idのヌル(null)を【はい】にする
・dtb_order_derailのproduct_class_idのヌル(null)を【はい】にする

※変更したnullの許可は作業後に戻すそうです。

参照:http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=7885&forum=15&post_id=43838

次にインポートモジュールを修正します。
インポートモジュールをダウロードして、「LC_Page_Mdl_Upload_Cyber.php」を開きます。

1005行目あたり

変更前
[php highlight_lines=”3″ font_size=”110%”]
if(strlen($sqlval[‘deliv_id’]) > 0){
$sqlval[‘deliv_id’] = ‘1’;
}
[/php]

上記を修正します。

変更後
[php highlight_lines=”3″ font_size=”110%”]
if(strlen($sqlval[‘deliv_id’]) > 0){
$sqlval[‘deliv_id’] = ‘1’;
}else{
$sqlval[‘deliv_id’] = ‘0’;
}
[/php]

1040行目あたり

変更前
[php highlight_lines=”3″ font_size=”110%”]
function lfGetProductClassId($arrList){
$objQuery =& SC_Query_Ex::getSingletonInstance();
//規格ある場合
if($arrList[‘parent_class_name’] != “” && $arrList[‘parent_classcategory_name’] != “”){
$parent_class_id = $objQuery->getOne(“SELECT class_id FROM dtb_class WHERE name = ?”, array($arrList[‘parent_class_name’]));
$classcategory_id1 = $objQuery->getOne(“SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?”, array($parent_class_id,$arrList[‘parent_classcategory_name’]));

$class_combination_id = $objQuery->select(“class_combination_id”, “dtb_class_combination”, “classcategory_id = ?”, array($classcategory_id1));
// where文作成
$where = “”;
$arrval = array();
foreach($class_combination_id as $val){
if($where == “”){
$where = “( parent_class_combination_id = ?”;
}else{
$where .= ” OR parent_class_combination_id = ?”;
}
$arrval[] = $val[‘class_combination_id’];
}
$where .= ” )”;
if($arrList[‘class_name’] != “” && $arrList[‘classcategory_name’] != “”){
$class_id = $objQuery->getOne(“SELECT class_id FROM dtb_class WHERE name = ?”, array($arrList[‘class_name’]));
$classcategory_id2 = $objQuery->getOne(“SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?”, array($class_id,$arrList[‘classcategory_name’]));
$where .= ” AND classcategory_id = ?”;
$arrval[] = $classcategory_id2;

$class_combination_id = $objQuery->getOne(“SELECT class_combination_id FROM dtb_class_combination WHERE “.$where, $arrval);
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id = ?”, array($arrList[‘product_id’], $class_combination_id));
}else{
$where .= ” AND product_id = ?”;
$arrval[] = $arrList[‘product_id’];
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE “.$where, $arrval);
}

//規格無い場合
}else{
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id IS NULL”, array($arrList[‘product_id’]));
}

return $product_class_id;
}
[/php]

上記を修正します。

変更後
[php highlight_lines=”3″ font_size=”110%”]
function lfGetProductClassId($arrList){
$objQuery =& SC_Query_Ex::getSingletonInstance();
//規格ある場合
if($arrList[‘parent_class_name’] != “” && $arrList[‘parent_classcategory_name’] != “”){
$parent_class_id = $objQuery->getOne(“SELECT class_id FROM dtb_class WHERE name = ?”, array($arrList[‘parent_class_name’]));
$classcategory_id1 = $objQuery->getOne(“SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?”, array($parent_class_id,$arrList[‘parent_classcategory_name’]));

$class_combination_id = $objQuery->select(“class_combination_id”, “dtb_class_combination”, “classcategory_id = ?”, array($classcategory_id1));
// where文作成
$where = “”;
$arrval = array();

if($arrList[‘class_name’] != “” && $arrList[‘classcategory_name’] != “”){

foreach($class_combination_id as $val){
if($where == “”){
$where = “( parent_class_combination_id = ?”;
}else{
$where .= ” OR parent_class_combination_id = ?”;
}
$arrval[] = $val[‘class_combination_id’];
}
$where .= ” )”;

$class_id = $objQuery->getOne(“SELECT class_id FROM dtb_class WHERE name = ?”, array($arrList[‘class_name’]));
$classcategory_id2 = $objQuery->getOne(“SELECT classcategory_id FROM dtb_classcategory WHERE class_id =? AND name = ?”, array($class_id,$arrList[‘classcategory_name’]));
$where .= ” AND classcategory_id = ?”;
$arrval[] = $classcategory_id2;

$class_combination_id = $objQuery->getOne(“SELECT class_combination_id FROM dtb_class_combination WHERE “.$where, $arrval);
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id = ?”, array($arrList[‘product_id’], $class_combination_id));
}else{

foreach($class_combination_id as $val){
if($where == “”){
$where = “( class_combination_id = ?”;
}else{
$where .= ” OR class_combination_id = ?”;
}
$arrval[] = $val[‘class_combination_id’];
}
$where .= ” )”;

$where .= ” AND product_id = ?”;
$arrval[] = $arrList[‘product_id’];
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE “.$where, $arrval);
}

//規格無い場合
}else{
$product_class_id = $objQuery->getOne(“SELECT product_class_id FROM dtb_products_class WHERE product_id = ? AND class_combination_id IS NULL”, array($arrList[‘product_id’]));
}

return $product_class_id;
}
[/php]

兼行したらアップロードして再度移行を実行します。
ここで注意点ですが、移行が途中で終わった場合、すでに一度実行した場合などは、ディレクトリにキャッシュが残っていた記憶があります。
その場合はディレクトリにあるキャッシュデータを削除しないと修正ファイルが上手く反映されなかったような気がします。

以上でデータのインポートはエラーが出ることなく終了できました。
ただインポート終了後のレイアウトが崩れていたり、どうも全てが上手く動いたとは言いがたいです。

そう思っていた矢先、サイトへアクセスするとカテゴリー部分がどうもおかしい!?
どうもカテゴリーのトータル商品数などが上手く移行できていない様子です。
SQLをたたいてなど記事を確認しましたが、商品をテスト登録するか、もしくは登録してある商品を編集、保存でも正しい数が表示されるようになりました。

また以下のブログにも似たような作業で移行が完了している方がいましたので、こちらもご参考になってみて下さい。
http://ryunac.blog135.fc2.com/blog-entry-38.html

作業はバックアップをとって、自己責任でお願いします。

今回はうる覚えの部分も多いです。
間違っている部分や簡単に出来る方法などありましたらぜひコメント下さい。
お願いいたします m(_ _)m

EC-CUBE 2.4系→2.11系へ【エクスポート編】

だいぶ記事が遅れてしまったがエクスポートした際のメモ。

ひとまずデフォルトで「データエクスポートモジュール(2.4系)」を使用する。
自分が作業した段階では、Ver0.1.2だった。

EC-CUBEのモジュールインストールは管理画面上段 「owners store」から簡単にできる。
※オーナーズストアでアカウント登録して、認証キーの設定をしなくてはいけません。

インストール、実行まで簡単にできました。ただやはりデフォルトでは上手く動作していない模様。
特にエラーの出力はありませんが、出力されたdtb_products_class.csvが空です orz…

どうもそのまま使うには無理と判断。
ひとまずモジュールをダウンロードしてファイルを確認します。

■data/downloads/module/mdl_db_export/LC_Page_Mdl_Down_Cw_Config.phpを修正

100何行目かあたり…
[php highlight_lines=”3″ font_size=”110%”]
$table = “dtb_products_class LEFT JOIN dtb_products ON dtb_products_class.product_id = dtb_products.product_id”;
$save_name = “dtb_products_class”;
$where = “classcategory_id1 <> ‘0’ AND classcategory_id2 <> ‘0’”; ←怪しい
[/php]

上記部分を修正。
このコードだと、属性1、属性2の両方ついてないと出力されない設定のような気がする。

今回は、属性1だけついていても出力されるように設定。
以下に変更↓
[php highlight_lines=”3″ font_size=”110%”]

$table = “dtb_products_class LEFT JOIN dtb_products ON dtb_products_class.product_id = dtb_products.product_id”;
$save_name = “dtb_products_class”;
$where = “dtb_products_class.classcategory_id1 <> 0′”; ←ここを修正

[/php]

修正ファイルをアップロードして、再度出力を実行すると上手く出力された。
次はインポートの作業だが、この作業もすんなりいかず、試行錯誤を繰り返したので、インポート編はまた記事を分けることにする。

作業は自己責任でお願いします。バックアップもお忘れなく!
また、間違っているという指摘や別の方法などある方は是非コメント下さいm(_ _)m

EC-CUBE 2.11.4 インストールエラーのメモ

以前の投稿、「EC-CUBE 2.4系→2.11系へ【はじめに…】」の続きはまた今度にして、
表題通り、インストールの際にエラーが出たのでメモ。

前回別サーバーにインストールした際は問題なかったので、きっとPHPもしくはMySQLのバージョン、サーバー設定の問題だと思います。
EC-CUBE 2.11.4を通常通りインストールすると、インストールは完了するも、エラーが出る。

● ページの下段にFatal error: Class ‘MDB2’ not found in /directory_pass/data/class/SC_Query.php on line 76
● 管理画面に移動すると不正なページ移動です。となりログインできない。

URLの?の内路部分が生成されていない事からセッション関係がどうも上手くいっていないように感じる…orz

■ 参考サイト
http://nob-log.info/2011/05/31/ec-cube2-11-1でapcの動作を確認してみる/

で修正。参考サイトと同じ原因なのかは不明ですが、エラーは出なくなりましたので、その他問題ないかを確認中です。原因や他の解決策など、小さな事でも分かる方はぜひコメント下さい。 m(_ _)m

EC-CUBE 2.4系→2.11系へ【はじめに…】

EC-CUBEの2.11系の正式板がリリースされて早くも半年が経ちました。
移行を簡単にするモジュールが提供されており、移行は比較的簡単かと思いきや色々できないという情報を見ます。

そんな情報を横目に、どうしようかなと思っていたらバージョンアップの依頼が…

ということで業務の合間を見て情報収集からしてみました。

■ 移行モジュールについて
http://www.ec-cube.net/press/detail.php?press_id=114

移行モジュールを使用するにはEC-CUBEオーナーズストアへユーザー登録をする必要がある。また移行モジュール設置にも2つの方法があるようです。

・EC-CUBEオーナーズストア経由でダウンロード・インストールする方法
 http://store.ec-cube.net/user_data/manual.pdf

・オーナーズストアからダウンロード、直接サイトへアップロードする方法
 http://store.ec-cube.net/img/setup.pdf

なるほど…

■ 移行できるバージョンについて
対象は2.4系となっているが、フォーラムを見る限りは、先ずは2.4.2までは対応できるように進める予定とのこと。
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=7885&forum=15&viewmode=flat&order=ASC&start=0

現在はどこまで対応しているのか分かりませんでした。
また対応バージョンでもエラーが出てできないなど多くの情報があり、実際にやってみないと何とも言えないようです。

ということで実際の作業は次回にまた投稿します!!

Live Commerceを設置する…【一時終了】

Live Commerceを設置するまでの道のり… No.3でインストールまでいきましたが、どうも多数でエラーを吐いていることが発覚!

以下のエラーが、管理画面の下段や決算モジュール部分などで表示される。

Fatal error: Incompatible file format: The encoded file has format major ID 3, whereas the Loader expects 4 in … on line 0

管理画面の下段部分は、エラーが出るものの操作可能。決算部分に関しては操作ができない。

色々調べましたがどうもよくわからない。

・アップロードをバイナリーモードであっているか
・ZendOptimizer、ZendGuardLoaderはインストールされているか
・欠落しているファイルはないか etc…

さまざまな対応作業を確認してみましたがどうも解消されず…
最終的には、php5.3で概ね動作するが、部分的にphp5.2系までしか対応していないんじゃないかと疑問に (php5.3系でも問題なく運用しているという記事もありどこかサーバー環境に問題があるかもしれませんが…)

http://board.live-commerce.com/topic/118-php53xはオススメできない?/

ということでひとまず、様子を見ながら継続して情報収集することで一時作業を終えることにします。

Livecommerce php5.3系で問題ない無く設置できました! or できないです!という方
どなたかアドバイスしていただける方

などの方がいましたら是非コメント下さい!お願いいたします!m(_ _)m

Live Commerceを設置するまでの道のり… No.3

サーバー環境情報が分かる投稿はセキュリティー的な部分を考慮して避けてきたのですが、今回Live Commerceをインストールするべく頑張りましたのでメモとしてまた、最小限の公開で投稿する事にします。

さて、動作環境はある程度整いましたので早速インストール。
マニュアル通りインストール画面へアクセスします。

どうも1つでも環境が整っていないと「次へすすむ」ボタンがクリックできないようです。

そこでインストールページのphpを確認してみます。
するとphpのバージョンではじくようにしている部分を発見できます。

赤のラインが入っている部分ですね。
そこを「5.3 → 5.4」と変更して確認。
再度インストール画面へアクセスするとうまく通り抜けることができました。

そのまま流れにそって必要事項を入力していけば、問題なくオッケー!
これでインストールは完了です。

こうすればもっと簡単にできます!や、インストールは出来てもphp5.3系やZendOptimizerの後継 Zend Guard Loaderではこんな不具合がでますよなど、
Live Commerce 情報がありましたらぜひコメント下さい!

Live Commerceを設置するまでの道のり… No.2

サーバー環境情報が分かる投稿はセキュリティー的な部分を考慮して避けてきたのですが、今回Live Commerceをインストールするべく頑張りましたのでメモとしてまた、最小限の公開で投稿する事にします。

さてさて前回でZendOptimizerの代わりにphp5.3ではZendGuardLoaderを使用するということが分かりました。

では早速 ZendGuardLoader をインストールしてみましょう!!
ということでこと始めにそもそもZendGuardLoader、ZendOptimizerとは何ってのを簡単に確認。

http://www.zend.co.jp/product/zendoptimizer.html

PHPを最適化して速度を上げるのか…よくわからないです…
ご存知の方がいらっしゃいましたら、ぜひコメントを下さい!

なにはともあれ、ZendGuardLoaderをインストールしなくてはいけませんので作業を進めていきます。

確認したところ、ZendGuardLoaderをインストールするには2つの方法があるようです。

1.yumで簡単にインストール
2.パッケージをダウンロード、設置してインストール

今回は2のパッケージをダウンロードして設置することにします。

—————————————————————

yumでインストールする際はもとりあえずメモ

調べた感じでは、AtomiCorpという会社が提供しているリポジトリを追加する必要があるようです。
ssh接続、root権限で以下のコマンドを実行

wget -q -O - http://www.atomicorp.com/installers/atomic |sh

リポジトリが追加されるが、インストールした段階で、atomicが常に使用可能状態になるので、設定を変更して常に使用しないようしました。(個人的に)

記述しませんが、/etc/yum.repos.d/atomic.repo を修正

で、yumでインストール可能

—————————————————————

今回は2のパッケージをダウンロードして設置することにしましたので、パッケージとマニュアルをダウンロードします。

http://www.zend.co.jp/download/index.html
http://www.zend.co.jp/component/option,com_vfm/Itemid,139/do,view/file,zendguard|loader|install_guide.pdf/

ダウンロードするにはアカウント登録が必要でした。

ZendGuardLoader.so適切なファイルをダウンロードして、マニュアル通りに設置します。
php.iniもマニュアル通りに修正

httpdを再起動させて、phpinfo();で確認してオッケーでした。

こちらの環境では問題ありませんでしたが、サーバーの設定を変更しますので
同じように作業される方も自己責任でお願いします。

それではある程度サーバーの環境は整いましたので、Live Commerceのインストールは次回に引き続き投稿します!

Live Commerceを設置するまでの道のり… No.1

サーバー環境情報が分かる投稿はセキュリティー的な部分を考慮して避けてきたのですが、今回Live Commerceをインストールするべく頑張りましたのでメモとしてまた、最小限の公開で投稿する事にします。

さてさてLive Commerceを試してみたいと要望が上がりました。

了解!!!!!!

と簡単に言ったものの、推奨動作環境を確認すると…

PHP 5.2.4 またはそれ以上のバージョン 5.3.系では動作しません。
開発チームの環境 PHP5.2.14, Apach2.2.7, MySQL5.0.X, Zend Optimizer3.3.9

Live Commerce 動作環境

http://www.live-commerce.com/solutions/requirement/より

という事が発覚…

今回 Live Commerce をはしらせる予定のサーバーはphp5.3系です。
無理か!? どなたかphp5.3系でできた方がいないかと調べてみました。

するとコミュニティーにこんな記事を発見!!
http://board.live-commerce.com/topic/118-php53xはオススメできない?/

どうにかできそうですね

ということで、ひとまず設置してみます。
インストールは下記のリンク先を確認して、比較的簡単にできそうです。

http://doc.live-commerce.com/index.php/Live_Commerceのインストール

どうもLive Commerceは、ルートフォルダーに設置する事を前提に開発されている模様。
どうにかすれば変更できそう(未確認)だが、今回はただでさえ非推奨環境でのインストールなのでここはルートフォルダにインストールします。

FTPによりファイルの設置、パーミッションなどを調整してインストール作業を行います。

するとインストール画面で、下記のように必要な環境のチェックが行われます。
ひとまず必要なものをインストールします。

インストール画面

ここでひとつ問題が…どうもZendOptimizerはphp5.2系までしか対応していない模様。
ZendOptimizerがないとどこまでLive Commerceに影響がでるんだろう?
お分かりの方がいればコメントをいただきたいですm(_ _)m

ということで調べてみると
php5.3系からはZendOptimizerに代わり、ZendGuardLoaderというものが代用となるということが分かりました。

ZendGuardLoaderのインストールからはまた次回の投稿に分けることにします!