EC-CUBEの決済処理でカード情報入力画面が出てこないとき

AWSなどでEC-CUBEを動作させる環境をある程度作った後、カスタマイズしたテンプレートなどを入れ替えてから決済モジュールをインストールすると決済処理でカード情報を入力する画面が出てこなくなる場合がある。

可能性のひとつとして、モジュールがインストールされたときのページレイアウト情報と実際のページレイアウトに差があると、エラー、もしくは入力項目が出てこない状態となる。

具体的には、dtb_module.sub_dataの内容を確認する。

この情報の中には、モジュールが呼び出されたときに使用するページレイアウト、ブロックの情報が入っている。

データ中、「page_setting」という文字が現れるところと、「bloc_setting」という文字が現れるところだ。

その後に続く情報として配列形式でデータが入っており、device_type_idとpage_idが入っている。

この番号が、実際に「商品購入/決済画面」ページ、「クレジットカード決済入力フォーム」ブロックに対応している。

具体的には、、

<<前略>>
s:12:"page_setting";a:1:{s:28:"shopping/load_payment_module";
a:3:{
i:10;s:2:"29";
i:2;s:2:"30";
i:1;s:2:"38";}
}s:12:"bloc_setting";a:1:{s:16:"pg_mulpay_credit";
a:3:{
i:10;i:10;
i:2;i:9;
i:1;i:7;}}}

のような箇所があるので、a:3となっているところを着目する。

このデータを抜き出した環境は、1:モバイル、2:スマホ、10:PCの三つのデバイスタイプが同時に動いている。

そして、モジュールのインストールを行ったときに、「商品購入/決済画面」のページレイアウト「クレジットカード決済入力フォーム」のブロックが登録される。

赤文字がデバイスタイプIDで、青文字がページレイアウトID、緑文字がブロックID。

各デバイスID毎にページレイアウト、ブロックが作成されるので、そのことがデータとして蓄えられている。

実際に登録されたページレイアウトとブロックの番号と同じになっていれば問題ない。

DBをリストアしたり、インストール済みの状態からモジュールのインストールを行ったりするとインストーラーが正しい値を拾うことができずおかしな値(0)になることもある。

もし、データが崩れるなどしてカード情報入力画面が出てこなくなったら、ここの内容を確認してみるとよい。