質問 > フロント機能 > 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 |
フロント機能
| 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
masumi |
投稿日時: 2009/4/13 13:53
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2008/10/22 居住地: 投稿: 25 |
注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 いつもお世話になっております。
掲題の件でご教授頂きたく投稿させて頂きました。 特定の支払方法を選択すると、注文完了画面・注文完了メール上に表示されるはずの「支払い情報」部分が抜けてしまいます。 また、完了画面には、下記の様なエラーが表示されています。 --------------------------------------------------------------------------------- Warning: Invalid argument supplied for foreach() in /home/******/data/class/helper/SC_Helper_Mail.php on line 118 Warning: Invalid argument supplied for foreach() in /home/******/data/class/pages/shopping/LC_Page_Shopping_Complete.php on line 106 --------------------------------------------------------------------------------- エラーから察するに、その特定の支払方法が配列になっていないのにforeach文を使用しているからかなと思い、上記ファイルに、foreach文の前に、if(is_array($arrOther)){foreach文}と修正を加えました。 エラーは表示されなくなりましたが、(当たり前かも知れませんが)支払い情報も表示されませんでした。 どのようにしたらエラーを回避しつつ正常に支払い情報を表示させる事が出来るのかをお教え頂ければ幸いです。 どうぞ宜しくお願い申し上げます。 EC-CUBEバージョン 2.3.0 PHPバージョン PHP 5.2.8 DBバージョン MySQL 4.1.22 |
seasoft |
投稿日時: 2009/4/13 15:02
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 foreach(aaa as bbb) の aaa をセットしている部分の取得に失敗していると思いますので、その部分のメソッド(関数)呼び出しの引数をダンプしたりすると良いかと思います。
|
kishik |
投稿日時: 2009/4/13 15:02
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2009/4/3 居住地: 東京 投稿: 382 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 ざっとしか見ていなくて申し訳ありませんが、
特定の支払方法とはどの支払い方法でしょうか? 問題を特定するのに有用な情報だと思いますので。 ----- 〜〜〜〜〜〜〜〜〜〜〜〜 [PR] カスタマイズ承ります。 いつでもご連絡ください。 〜〜〜〜〜〜〜〜〜〜〜〜 |
seasoft |
投稿日時: 2009/4/13 15:17
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 Ver 2.3.3 ですが、ざっと、ソースを追って見た感じですと、dtb_order.memo02 の内容が怪しそうですね。
|
masumi |
投稿日時: 2009/4/13 15:27
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2008/10/22 居住地: 投稿: 25 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 お世話になります。
seasoft様 ご返信ありがとうございます。 該当箇所が下記の部分でしたので、 ------------------------------------------------------- // その他情報の取得 $arrResults = $objQuery->getall("SELECT memo02, memo05 FROM dtb_order WHERE order_id = ? ", array($order_id)); if (count($arrResults) > 0) { if (isset($arrResults[0]["memo02"]) || isset($arrResults[0]["memo05"])) { // 完了画面で表示する決済内容 $arrOther = unserialize($arrResults[0]["memo02"]); // 完了画面から送信する決済内容 $arrModuleParam = unserialize($arrResults[0]["memo05"]); // データを編集 foreach($arrOther as $key => $val){ // URLの場合にはリンクつきで表示させる if (preg_match('/^(https?|ftp)(:\/\/[-_.!~*\'()a-zA-Z0-9;\/?:\@&=+\$,%#]+)$/', $val["value"])) { $arrOther[$key]["value"] = "<a href='#' onClick=\"window.open('". $val["value"] . "'); \" >" . $val["value"] ."</a>"; } } $this->arrOther = $arrOther; $this->arrModuleParam = $arrModuleParam; } } ------------------------------------------------------- ■var_dump($arrResults); ■var_dump($arrOther); ------------------------------------------------------- としたところ、 ------------------------------------------------------- ■array(1) { [0]=> array(2) { ["memo02"]=> string(1558) "a:13:{s:5:"title";a:2:{s:4:"name";s:21:"コンビニお支払";s:5:"value";b:1;}s:17:"pay_center_number";a:2:{s:4:"name";s:12:"受付番号";s:5:"value";s:4:"1748";}s:5:"help0";a:2: {s:4:"name";s:0:"";s:5:"value";s:0:"";}s:5:"help1";a:2: {s:4:"name";s:21:"【払込ご案内】";s:5:"value";s:24:"ローソンでお支払";}s:5:"help2";a:2: {s:4:"name";s:0:"";s:5:"value";s:92:" 1. ローソンの端末(Loppi)から「各種代金・料金お支払」を選択。";}s:5:"help3";a:2: {s:4:"name";s:0:"";s:5:"value";s:75:" 2. 次画面のジャンルの中から「インターネット受付」";}s:5:"help4";a:2: {s:4:"name";s:0:"";s:5:"value";s:69:" →「インターネット商品のお支払」を選択。";}s:5:"help5";a:2:{s:4:"name";s:0:"";s:5:"value";s:83:" 3. お支払受付番号に上記「受付番号(4桁?7桁)」を入力。";}s:5:"help6";a:2: {s:4:"name";s:0:"";s:5:"value";s:84:" 4. 「電話番号(ご注文いただいた際の電話番号)」を入力。";}s:5:"help7";a:2: {s:4:"name";s:0:"";s:5:"value";s:96:" 5. 画面に従い、各端末より発行される申込券をレジへご提示下さい。";}s:5:"help8";a:2: {s:4:"name";s:0:"";s:5:"value";s:15:"※ご注意※";}s:5:"help9";a:2: {s:4:"name";s:0:"";s:5:"value";s:105:" 受領書の払込先名には、決済代行会社の名称『エフレジ』と記載されます。";}s:6:"help10";a:2:{s:4:"name";s:0:"";s:5:"value";s:111:" お支払後のご不明点などは、受領書に記載の電話番号へお問い合わせください。";}}" ["memo05"]=> NULL } } ■bool(false) ------------------------------------------------------- となりました。 kishik様 ご返信ありがとうございます。 特定の支払方法とは、F-REGIコンビニ決済のローソンです。 他ファミリーマートやセブンイレブンなどは全く問題ありません。 お手数をお掛けいたしますが、宜しくお願いします。 |
seasoft |
投稿日時: 2009/4/13 15:52
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 unserialize($arrResults[0]["memo02"])
に失敗していますね。 ざっと見た感じだと、DB内容はさほどおかしくなさそうに見えますね。 少々泥臭い作業が必要かも。 $arrResults[0]["memo02"] のどの部分が、復元を阻害しているか、内容を削りながら特定するなど・・・
|
masumi |
投稿日時: 2009/4/13 16:30
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2008/10/22 居住地: 投稿: 25 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 お世話になります。
seasoft様 ご返信ありがとうございます。 引用:
$arrResults[0]["memo02"]の部分ですか・・・。 重ねての質問で申し訳ないのですが、もちろん自分でも頑張ってみようと思いますが、該当部分を特定する方法が分からないのでお教え頂ければ幸いです。 お手数をお掛けいたしますが、宜しくお願い申し上げます。 |
seasoft |
投稿日時: 2009/4/13 16:38
対応状況: −−−
|
神 ![]() ![]() 登録日: 2008/6/4 居住地: 投稿: 7369 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 確実性の高い方法としては、
・$arrResults[0]["memo02"] の内容をファイルで書き出す。 ・書き出したファイルを読み込んで、unserialize すると同様に false が返ってくることを確認する。 あとは、ファイルの内容を書き換えながら、調べることになると思います。 ランタイムデバッグ環境があれば、もっと楽に調べられます。しかし、環境構築するのも大変ですので、とりあえずは泥臭い方法でと。
|
masumi |
投稿日時: 2009/4/13 17:22
対応状況: −−−
|
半人前 ![]() ![]() 登録日: 2008/10/22 居住地: 投稿: 25 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 お世話になります。
seasoft様 ご返信頂き、ありがとうございます。 お教え頂いた方法で、調べてみようと思います。 今後とも宜しくお願い致します。 |
kishik |
投稿日時: 2009/4/13 17:37
対応状況: −−−
|
仙人 ![]() ![]() 登録日: 2009/4/3 居住地: 東京 投稿: 382 |
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。 私も同じように
unserialize が失敗していると思ったので、 いろいろ調べてみました。 masumi様が書き出された文字列が正しいとして、 ": {" を全て ":{" に置き換えて、 s:83:" 3. お支払受付番号に上記「受付番号(4桁?7桁)」を入力。"; を s:81:" 3. お支払受付番号に上記「受付番号(4桁?7桁)」を入力。"; に置き換えればエラーは無くなりますね。 これはこの文字列を作る側の問題でしょうか。。。 ----- 〜〜〜〜〜〜〜〜〜〜〜〜 [PR] カスタマイズ承ります。 いつでもご連絡ください。 〜〜〜〜〜〜〜〜〜〜〜〜 |
(1) 2 3 4 ... 6 » |
| 新しいものから | 前のトピック | 次のトピック | トップ |