質問 > フロント機能 > F-REGI決済モジュールのエラー文言文字化け |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
Klif |
投稿日時: 2009/5/11 0:11
対応状況: −−−
|
半人前 登録日: 2009/4/23 居住地: 神奈川県 投稿: 22 |
Re: F-REGI決済モジュールのエラー文言文字化け エラー文言の文字化けが解決し、
その後決済処理もスムースに行われていたのですが 数日前から突然正常処理の場合にも 以下のエラー表示が出てしまい 決済完了画面へ遷移せず処理がストップしてしまう現象が出ております。 ---------------------------- エラーが発生しました。 OK 2202 00000000000004927198 ---------------------------- 【前回変更したコード】 /data/downloads/module/mdl_fregi/LC_Page_Mdl_Fregi_Payment.php 723行目 $this->tpl_error = "エラーが発生しました。<br/>". $this->message; ↓ $this->tpl_error = "エラーが発生しました。<br/>". mb_convert_encoding($this->message[0],"UTF-8","EUC-JP"); ----------------------------- 上記以外は変更しておりません。 前回アドバイスいただいたようにコードの途中でvar_dumpしながら 処理を追いかけてみたところ 437行目 if ($response[0] == "OK") { 正常の場合の処理 return true; } elseif ($response[0] == "NG") { エラーの場合の処理 return false; } else { エラーの場合の処理 return false; } という条件分岐の処理で OKでもNGでも最後のelse(その他の結果の場合)に振り分けられてしまっているようです。 returnが必ずfalseなので以下の処理で すべてがfalseになってしまっているようです。 711行目 // 正常 if ($result === true) { // 正常に登録されたことを記録 // 異常 } elseif ($result === false) { $this->tpl_error = "エラーが発生しました。<br/>". $this->message; } 一旦解決したはずの投稿ですが 再び別のエラーを引き起こしてしまい 再度投稿させて頂きました。 解決の糸口になるアドバイスをいただけると幸いです。 よろしくお願いします。 |
seasoft |
投稿日時: 2009/5/11 0:16
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: F-REGI決済モジュールのエラー文言文字化け とりあえず、$response[0] の内容がどうなっているのかが気になるところです。
|
Klif |
投稿日時: 2009/5/11 0:36
対応状況: −−−
|
半人前 登録日: 2009/4/23 居住地: 神奈川県 投稿: 22 |
Re: F-REGI決済モジュールのエラー文言文字化け 早速のヘルプありがとうございます。
var_dump($response[0]); の結果を2種類添付致します。 (1)コンビニ決済時わざとTELを一桁の数字に string(48) "NG C1-1-73(����ӥ���ʸ�������TEL��û�����ޤ�) " 文字化けしたままですが、EUC-JPで表示すると以下のように読めるようになります。 ↓ string(48) "NG C1-1-73(コンビニ注文処理時のTELが短すぎます) " (2)コンビニ決済時に正しい電話番号を入力 string(106) "OK 7101989406616 00000000000004934138 http://payment.sej.co.jp/od/hi.asp?50100101989406617c2363af7c1ac6a7 " 「OK」「7101989406616」「00000000000004934138」「http://payment.sej.co.jp/od/hi.asp?50100101989406617c2363af7c1ac6a7」は全て1行で半角スペースで区切られています。 引き続きよろしくお願いします。 |
seasoft |
投稿日時: 2009/5/11 0:48
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: F-REGI決済モジュールのエラー文言文字化け substr で先頭2文字を切り出して比較すれば応急的には回避できそうです。
http://jp2.php.net/manual/ja/function.substr.php プロトコルの仕様変更でもあったのですかね。もしくは、EC-CUBE のモジュールが仕様の解釈を誤って実装されてしまったのですかね。
|
Klif |
投稿日時: 2009/5/11 1:07
対応状況: −−−
|
半人前 登録日: 2009/4/23 居住地: 神奈川県 投稿: 22 |
Re: F-REGI決済モジュールのエラー文言文字化け ありがとうございます。
substrで「OK」「NG」を切り出し、条件分岐には成功しましたが 払い込みに必要な支払番号や取引番号などが空の注文メールとなってしまいます。 DBのdtb_order_temp(注文一時テーブル)を確認したところ memo01/memo02/memo03/memo07/memo08/memo09の6フィールドともに見事に「NULL」でインサートされておりました。 var_dumpすると $response[1] $response[2] ともにNULLでした。 --------以下はソース抜粋になります-------- var_dump($response[0]); var_dump($response[1]); var_dump($response[2]); $aa=substr($response[0],0,2); var_dump($aa); // 成功 if ($aa == "OK") { // 受注一時テーブルに記録 $arrVal['memo01'] = $this->objConfig->module_name; // モジュールコード $arrVal['memo02'] = $this->setConveniPayment($response, $arrInput); // 支払情報 $arrVal['memo03'] = FREGI_CONVENI; // 支払方法 $arrVal['memo07'] = $response[2]; // 取引番号 $arrVal['memo08'] = $response[1]; // 支払番号 $arrVal['memo09'] = FREGI_CONVENI_ORDER; // F-REGIステータス $this->objHelperDB->sfRegistTempOrder($arrData['order_temp_id'], $arrVal); ----------------------- 引き続きコードに手を加え解決できるのか それとも根本的な問題なのか 考えあぐねています。 こちらでの解決が難しければ有料でお願いしたいのですが。。 |
seasoft |
投稿日時: 2009/5/11 1:15
対応状況: −−−
|
神 登録日: 2008/6/4 居住地: 投稿: 7367 |
Re: F-REGI決済モジュールのエラー文言文字化け どうやら、$response に格納する処理が意図しない動作をしていそうですね。
その処理を見直すか、$response[0] から explode で再セットするかで対応できそうな気はします。
|
Klif |
投稿日時: 2009/5/11 1:20
対応状況: −−−
|
半人前 登録日: 2009/4/23 居住地: 神奈川県 投稿: 22 |
Re: F-REGI決済モジュールのエラー文言文字化け ありがとうございます。
やってみます。 遅くまでおつき合いいただき感謝しています。 結果をまた報告します。 本当にありがとうございます。 |
ramrun |
投稿日時: 2009/5/11 21:13
対応状況: −−−
|
仙人 登録日: 2006/11/3 居住地: 投稿: 789 |
Re: F-REGI決済モジュールのエラー文言文字化け ちょろっと見てみたんですが、sendPost()から戻りが$responseに格納されるみたいですね。
これによると改行で区切って配列化しているみたいです。 その前のmb_convert_encoding()も効いていないっぽい。 ただこの処理は各種支払いで共通なので、しばらくOKだった時期があったのでしたらF-REGI側で変更があったのかも。 |
Klif |
投稿日時: 2009/5/11 23:49
対応状況: −−−
|
半人前 登録日: 2009/4/23 居住地: 神奈川県 投稿: 22 |
Re: F-REGI決済モジュールのエラー文言文字化け seasoft様
報告が遅くなり申し訳ございません。 アドバイスに従い explodeを試したのですが上手く分割できず、 ブラウザ上の区切り文字は半角スペースなのですが ソースを見ると改行で配列は区切られておりました。 \nでexplodeしてもダメでした。 isleのinfinitoというWindowsサーバーなので改行コードが\rかとも思い、 \rでexplodeしてもダメでした。 mb_convert_kanaで半角スペースを全角スペースに変換してみましたが 半角のまま表示されていますので、おそらく半角スペースに見えるだけかもしれません。 そこで以下のように、substrで処理して見ると DBのdtb_order_tempにはデータが格納されました。 さらにエラー文言をmb_convert_encodingして文字化けは解消できました。 コンビニ決済はこれで問題ないと思いますが カード決済を試したところ 「カード情報を登録保存する」というF-REGIのオプション機能を申込んでおり その機能が使えなくなってしまいました。 ここまでくるともう一息!と思いましたが、 本当にここまでの大幅な変更作業が必要なのかな!? という疑問が出てまいりました。 F-REGIモジュールの修正+再配布という流れになると有り難いなと思います。 以前に、「チケット登録」というのをご好意でやって頂きましたが あのような形でモジュールの再開発配布を依頼する事は出来るのでしょうか? 今回のケースの正しい対処法を含めご教授いただけると幸いです。 ------------------------- $xxx=substr($response[0],0,2); $yyy=substr($response[0],4); list($hachi,$nana)=explode("0000000000000",$yyy); list($sebun,$irebun)=explode("http://payment.sej.co.jp/od/hi.asp?",$nana); // 成功 if ($xxx == "OK") { //変数格納しなおし $arrVal['memo01'] = "mdl_fregi"; // モジュールコード $arrVal['memo02'] = $this->setConveniPayment($response, $arrInput); // 支払情報 $arrVal['memo03'] = "2"; // 支払方法 $arrVal['memo07'] = "0000000000000".$sebun; // 取引番号 $arrVal['memo08'] = $hachi; // 支払番号 $arrVal['memo09'] = "0"; // F-REGIステータス return true; // 失敗 } elseif ($xxx == "NG") { $this->message = mb_convert_encoding($yyy,"UTF-8","EUC-JP"); GC_Utils::gfPrintLog("F-REGI(Conveni):". $this->message, FREGI_LOG_PATH); return false; // 接続エラー } else { $this->message = $response; GC_Utils::gfPrintLog("F-REGI(Conveni):". $this->message, FREGI_LOG_PATH); return false; } ------------------------- |
Klif |
投稿日時: 2009/5/11 23:55
対応状況: −−−
|
半人前 登録日: 2009/4/23 居住地: 神奈川県 投稿: 22 |
Re: F-REGI決済モジュールのエラー文言文字化け ramrun様
以前には解決のお手伝いをして頂きありがとうございました。 今回もアドバイスいただきありがとうございます。 ------------------------ $response = split("\n", $response); 『改行で区切って配列化しているみたい』 ------------------------ 赤字でご指摘いただいた箇所でトライできることはやってみたいと思いますが やはりF-REGI側に何か変更があったのでしょうか。 明日の営業時間内にに連絡し、確認してみたいと思います。 ありがとうございます。 |
« 1 (2) 3 4 » |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |