バージョン選択

フォーラム

メニュー

オンライン状況

122 人のユーザが現在オンラインです。 (113 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 122
もっと...

サイト内検索

質問 > フロント機能 > 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。

フロント機能

新規スレッドを追加する

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
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 をセットしている部分の取得に失敗していると思いますので、その部分のメソッド(関数)呼び出しの引数をダンプしたりすると良いかと思います。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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 の内容が怪しそうですね。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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"] のどの部分が、復元を阻害しているか、内容を削りながら特定するなど・・・


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

masumi
投稿日時: 2009/4/13 16:30
対応状況: −−−
半人前
登録日: 2008/10/22
居住地:
投稿: 25
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
お世話になります。

seasoft様
ご返信ありがとうございます。
引用:

seasoftさんは書きました:
unserialize($arrResults[0]["memo02"])
に失敗していますね。

ざっと見た感じだと、DB内容はさほどおかしくなさそうに見えますね。

少々泥臭い作業が必要かも。
$arrResults[0]["memo02"] のどの部分が、復元を阻害しているか、内容を削りながら特定するなど・・・


$arrResults[0]["memo02"]の部分ですか・・・。
重ねての質問で申し訳ないのですが、もちろん自分でも頑張ってみようと思いますが、該当部分を特定する方法が分からないのでお教え頂ければ幸いです。
お手数をお掛けいたしますが、宜しくお願い申し上げます。
seasoft
投稿日時: 2009/4/13 16:38
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
確実性の高い方法としては、
・$arrResults[0]["memo02"] の内容をファイルで書き出す。
・書き出したファイルを読み込んで、unserialize すると同様に false が返ってくることを確認する。

あとは、ファイルの内容を書き換えながら、調べることになると思います。

ランタイムデバッグ環境があれば、もっと楽に調べられます。しかし、環境構築するのも大変ですので、とりあえずは泥臭い方法でと。


----------------
Seasoft
こちらでの投稿は、アイディア程度に留めさせていただいております。
個別案件の作業は有償で承っております。お気軽にご相談ください。

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]
カスタマイズ承ります。
いつでもご連絡ください。
〜〜〜〜〜〜〜〜〜〜〜〜
フラット表示 前のトピック | 次のトピック


題名 投稿者

 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は90,052名です
総投稿数は110,298件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1678
8
red
1571
9
mcontact
1347
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
799
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
flealog
485


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.