EC-CUBEはサーバーに直設置するタイプのショッピングカートです。
すでに20年近い実績があり、カートをレンタル契約したくない場合は、ほぼ一択のカートです。
先日EC-CUBEの構築をしていたところ、不可思議な現象が発生しました。
それは、「商品がカートに入らない」というものです。
ただ1個目は入ります。
2個目からエラーになります。
なんとも不思議な現象です。
色々調べて対処できましたので、忘備録として記録いたします。
現象はこのような感じです。
1個目の商品をカートに入れた後、2個目の商品をカートに入れようとすると、「カートへの追加にしっぱいしました」と表示されます。
原因は配送方法に支払方法を指定していないため
1個目はちゃんと入るのに、なんで2個目以降はいらないんだろう・・。
理屈がよくわからない状態でしたが、もしかして支払方法、配送方法設定に不備があるのではないかと思い、管理画面から確認してみると、配送設定に支払方法が設定されていませんでした。
支払方法をチェックし保存したら、現象は改善しました。
疑問:配送方法の支払い方法設定は必須なのになぜ未選択状態になっていたのか?
今回の原因は、配送設定の不備によるものでした。
ですが、配送設定は必須項目となっており、未選択状態にしようとするとエラーとなり、設定を保存できません。
なのに現象が発生したときは、未選択状態になっていました。
なぜこんなことになっていたのか疑問に感じ、原因を探ってみました。
すると、意外なプラグインによる要因であることがわかりました。
データ移行プラグインを使用すると支払方法設定が未選択状態になることがある
今回は、EC-CUBE2系→4系へのリニューアルであったため、既存の商品データを移行させて使いました。その際に利用したのが「データ移行プラグイン」です。
2系と4系ではデータ互換がないため、そのままではデータ移行できません。
本プラグインは、2系のバックアップデータを4系に変換して登録してくれます。
データの移し替えにはかなり重宝します。
ところが、今回このプラグイン使用後配送方法の、支払方法部分が未選択状態に変わっていました。
2系の配送方法にも同様に支払い方法選択がありますが、どうやら選択状態は「未使用」になるようでした。
それに気づかずテストをしていたため、カートに入らないという現象が起こっていました。
確かに、支払方法、配送方法に不備があると、何かしらのエラーは発生します。
じつは、最初原因が本当にわからなくてどこを調べればよいか考えあぐねていました。
そこで、テスト環境でEC-CUBE4.3を素の状態でインストールし、再現テストをやってみました。
すると、2個目の商品も難なくカートに入りました。
そこで、データ移行プラグインでデータを移行してみたところ現象が発生するようになりました。
ここで、移行したデータに問題があったのではないかと考え、管理画面のいろんな設定を見直していたところ、配送設定が未選択状態になっていたことに気づきました。
そんなこと絶対にありえない。
なんて思っていると、意外な落とし穴にはまるものだとよい教訓になりました。