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)になることもある。
もし、データが崩れるなどしてカード情報入力画面が出てこなくなったら、ここの内容を確認してみるとよい。