バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

フロント機能

新規スレッドを追加する

| 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
seasoft
投稿日時: 2009/4/13 17:45
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
> これはこの文字列を作る側の問題でしょうか。。。

そうですね・・・

serialize で異常が発生しているか、serialize した文字列をDB投入する時点で、何か発生しているかですかね。


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

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

引用:

masumi様が書き出された文字列が正しいとして、
": {"
を全て
":{"
に置き換えて、
s:83:" 3. お支払受付番号に上記「受付番号(4桁?7桁)」を入力。";

s:81:" 3. お支払受付番号に上記「受付番号(4桁?7桁)」を入力。";
に置き換えればエラーは無くなりますね。

これはこの文字列を作る側の問題でしょうか。。。

多分文字列を作る側の問題だと思います。
ご参考までにDBのdtb_order memo02には下記のように入っていました。
-------------------------------------------------------
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:" お支払後のご不明点などは、受領書に記載の電話番号へお問い合わせください。";}}
-------------------------------------------------------
宜しくお願いします。
kishik
投稿日時: 2009/4/13 18:22
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
1つ前に書かれている文字列と同じですね。
このままではunserializeできません。

一度決済モジュール開発会社である
F-REGI
さんにここのフォーラムのリンクとともに
連絡されてみてはいかがでしょうか?

現時点では私は決済モジュール側かと思うのですが。。。
何か進展ありましたら、
ぜひここにご報告下さい。


-----
〜〜〜〜〜〜〜〜〜〜〜〜
[PR]
カスタマイズ承ります。
いつでもご連絡ください。
〜〜〜〜〜〜〜〜〜〜〜〜
masumi
投稿日時: 2009/4/14 13:05
対応状況: −−−
半人前
登録日: 2008/10/22
居住地:
投稿: 25
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
お世話になります。

kishik様
ご返信ありがとうございます。

引用:

一度決済モジュール開発会社である
F-REGI
さんにここのフォーラムのリンクとともに
連絡されてみてはいかがでしょうか?

フォーラムに質問をさせて頂く前に、決済会社への問い合わせを致しました。
その際には、
---------------------------------------------------
下記のエラーにつきましては、やはりEC-CUBE側より返却されているエラーとなりますので、誠に申し訳ございませんが、弊社でのご案内は致しかねる状況となります。お力になれず申し訳ございません。EC-CUBE 開発コミュニティ( ⇒ http://xoops.ec-cube.net/ ) などをご活用いただけますでしょうか。
---------------------------------------------------
との返信を頂戴いたしまして、フォーラムへ質問させて頂きました。
再度問い合わせをしようと思いますが、大変恐縮ですが、その前に質問させて下さい。
コンビニ決済で、ローソン以外のコンビニを選択したときには正常に処理されています。
また、決済会社の管理画面上にはローソン選択時の決済情報も反映されています。
他のコンビニを選択したときのDBのdtb_order memo02の値と何が違うのかが分からないので、他のコンビニ選択時の値を見ていただけませんか?
下記はファミリーマート選択時のものです。
---------------------------------------------------
a:14:{s:5:"title";a:2:{s:4:"name";s:21:"コンビニお支払";s:5:"value";b:1;}s:15:"pay_center_code";a:2:{s:4:"name";s:15:"企業コード";s:5:"value";s:5:"20020";}s:17:"pay_center_number";a:2:{s:4:"name";s:12:"注文番号";s:5:"value";s:12:"801357056803";}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:36:"ファミリーマートでお支払";}s:5:"help2";a:2:{s:4:"name";s:0:"";s:5:"value";s:53:" 1. 店頭のFami ポートの画面から選択。";}s:5:"help3";a:2:{s:4:"name";s:0:"";s:5:"value";s:71:"   Fami ポート:『代金支払い』→『収納票発行』";}s:5:"help4";a:2:{s:4:"name";s:0:"";s:5:"value";s:57:" 2. 企業コードに『20020』を入力。";}s:5:"help5";a:2:{s:4:"name";s:0:"";s:5:"value";s:87:"   ※ 2009年2月25日 AM 8:30までは『10020』となります。";}s:5:"help6";a:2:{s:4:"name";s:0:"";s:5:"value";s:84:" 3. 注文番号に上記の『注文番号(12桁の数字)』を入力。";}s:5:"help7";a:2:{s:4:"name";s:0:"";s:5:"value";s:101:" 4. 画面に従い、Fami ポートより発行される申込券をレジへご提示下さい。";}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:120:" 取扱明細兼受領書の払込先名には、決済代行会社の名称『エフレジ』と記載されます。";}s:6:"help10";a:2:{s:4:"name";s:0:"";s:5:"value";s:120:" お支払後のご不明点などは、取扱明細兼受領書に記載の電話番号へお問い合せ下さい。";}}
---------------------------------------------------
お手数をお掛けいたしますが、何卒宜しくお願い申し上げます。
seasoft
投稿日時: 2009/4/14 14:18
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
文字コードのマッピングが関わっていそうです。

どの階層に原因があるか、特定はできていませんが、
> DBバージョン MySQL 4.1.22
の問題かも。

決済モジュールを書き換えれば回避できますが、決済関連だけに手を加えて良いか微妙ですね。


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

kishik
投稿日時: 2009/4/14 14:36
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
serializeとutf-8の相性ですね。
s:15:"企業コード"
ってstring型で15バイトのことですが、
ここら辺の処理が安定していませんね。
私の環境だと
s:71:"   Fami ポート:『代金支払い』→『収納票発行』";

s:72:"   Fami ポート:『代金支払い』→『収納票発行』";
に変えてやるとunserializeが動作します。

原因1:
文字列の中に日本語(マルチバイト文字)が入っている。
(これ自体は悪くはないですが)
原因2:
serializeが原因1の日本語を安定して処理できていない。

これだと思います。

サーバでPHPのインストールをする時に
--enable-zend-multibyte
のオプションは付けましたか?
seasoft
投稿日時: 2009/4/14 14:50
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
> s:15:"企業コード"
> ってstring型で15バイトのことですが、
> ここら辺の処理が安定していませんね。

UTF-8 なので、15バイトで正しいと思います。


> 私の環境だと
> s:71:"   Fami ポート:『代金支払い』→『収納票発行』";
> を
> s:72:"   Fami ポート:『代金支払い』→『収納票発行』";
> に変えてやるとunserializeが動作します。

これも、71バイトで正しいはずです。
しかし、72バイトで動作するとなると、安定していないというのは、確かに言えるのかもしれませんね。


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

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

kishik様
seasoft様
ご返信ありがとうございます。

引用:
サーバでPHPのインストールをする時に
--enable-zend-multibyte
のオプションは付けましたか?

レンタルサーバですので、インストールは私のほうではしていません。
見当違いのことを言っていたら申し訳ないのですが、.htaccessの方には、
php_value mbstring.internal_encoding UTF-8
php_value mbstring.script_encoding UTF-8
を記述しました。

引用:
原因1:
文字列の中に日本語(マルチバイト文字)が入っている。
(これ自体は悪くはないですが)
原因2:
serializeが原因1の日本語を安定して処理できていない。

念のため、serialize部分(関係がありそうな部分)のソースを下記に記載いたします。
-------------------------------------------------------
■data/downloads/module/mdl_fregi/LC_Page_Mdl_Fregi_Payment.php

/**
* コンビニ支払情報設定
*
* @return text
*/
function setConveniPayment($response, $arrInput) {
$arrMemo['title'] = array("name" => "コンビニお支払", "value" => true);
// セブンイレブン
if ($arrInput['conveni'] == "seveneleven") {
$arrMemo['pay_center_number'] = array("name" => "払込票番号", "value" => $response[1]);
if (!empty($response[3])) $arrMemo['receipt_print_url'] = array("name" => "払込票URL", "value" => $response[3]);
require_once(realpath(dirname( __FILE__)). "/fregi_conveni_seveneleven.php");
// ファミリーマート
} elseif ($arrInput['conveni'] == "famima") {
$arrMemo['pay_center_code'] = array("name" => "企業コード", "value" => "20020");
$arrMemo['pay_center_number'] = array("name" => "注文番号", "value" => $response[1]);
require_once(realpath(dirname( __FILE__)). "/fregi_conveni_famima.php");
// ローソン
} elseif ($arrInput['conveni'] == "lawson") {
$arrMemo['pay_center_number'] = array("name" => "受付番号", "value" => $response[1]);
require_once(realpath(dirname( __FILE__)). "/fregi_conveni_lawson.php");
// セイコーマート
} elseif ($arrInput['conveni'] == "seicomart") {
$arrMemo['pay_center_number'] = array("name" => "受付番号", "value" => $response[1]);
require_once(realpath(dirname( __FILE__)). "/fregi_conveni_seicomart.php");
}

return serialize($arrMemo);
}


■data/downloads/module/mdl_fregi/fregi_conveni_lawson.php

$arrMemo['help0'] = array("name" => "", "value" => "");
$arrMemo['help1'] = array("name" => "【払込ご案内】", "value" => "ローソンでお支払");
$arrMemo['help2'] = array("name" => "", "value" => " 1. ローソンの端末(Loppi)から「各種代金・料金お支払」を選択。");
$arrMemo['help3'] = array("name" => "", "value" => " 2. 次画面のジャンルの中から「インターネット受付」");
$arrMemo['help4'] = array("name" => "", "value" => "   →「インターネット商品のお支払」を選択。");
$arrMemo['help5'] = array("name" => "", "value" => " 3. お支払受付番号に上記「受付番号(4桁〜7桁)」を入力。");
$arrMemo['help6'] = array("name" => "", "value" => " 4. 「電話番号(ご注文いただいた際の電話番号)」を入力。");
$arrMemo['help7'] = array("name" => "", "value" => " 5. 画面に従い、各端末より発行される申込券をレジへご提示下さい。");
$arrMemo['help8'] = array("name" => "", "value" => "※ご注意※");
$arrMemo['help9'] = array("name" => "", "value" => " 受領書の払込先名には、決済代行会社の名称『エフレジ』と記載されます。");
$arrMemo['help10'] = array("name" => "", "value" => " お支払後のご不明点などは、受領書に記載の電話番号へお問い合わせください。");
-------------------------------------------------------
お手数ばかりお掛けして申し訳ありませんが、宜しくお願い致します。
kishik
投稿日時: 2009/4/14 15:45
対応状況: −−−
仙人
登録日: 2009/4/3
居住地: 東京
投稿: 382
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
--enable-zend-multibyte
を有効にしてコンパイルしていないと、
mbstring.script_encoding
の設定は効かないそうです。
(違ったかもしれませんが。。)

mbstring.internal_encoding
に関してはEC-CUBEがかならず内部で設定するようになってます。

他のサーバで試してみてはいかがでしょう?
ちょっと大変かもしれませんが、
一番問題の特定と解決に近いかもしれません。

検索もしてみましたが、
utf-8とserializeは相性が悪そうですね。
seasoft
投稿日時: 2009/4/14 15:55
対応状況: −−−
登録日: 2008/6/4
居住地:
投稿: 7369
Re: 注文完了ページ・メールで特定の支払方法を選択すると支払い情報が抜けエラーが出てしまいます。
単純に UTF-8 マッピングの問題のような・・・

> 検索もしてみましたが、
> utf-8とserializeは相性が悪そうですね。

serialize は、特段文字コードに依存するロジックでは無いです。

	smart_str_appendl(buf, "s:", 2);
	smart_str_append_long(buf, len);
	smart_str_appendl(buf, ":\"", 2);
	smart_str_appendl(buf, str, len);
	smart_str_appendl(buf, "\";", 2);

PHP は色々ラップされている部分があるので、そっちで何かされていて、「うっ・・・」って事も多々あるので確信は無いですが。


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

« 1 (2) 3 4 5 6 »
| 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は90,053名です
総投稿数は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.