バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > イプシロン決済モジュールで受注データがうまく引っ張れない

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
foolish
投稿日時: 2019/2/1 19:09
対応状況: 開発中
半人前
登録日: 2018/3/30
居住地:
投稿: 15
イプシロン決済モジュールで受注データがうまく引っ張れない
▼テンプレート
[EC-CUBE] EC-CUBE3.0.10
[PHP] 5.6.34
[データベース] MySQL 5.6.36
[WEBサーバ] Apache
[導入プラグインの有無] イプシロン決済モジュール、帳票出力プラグイン
[現象]
お世話になっております。
現在イプシロン決済モジュールを用いたECサイトのカスタマイズを行っており、クレジットカードとコンビニ決済の2通りを利用しております。
今回質問したいのは、フロント側でコンビニ決済をユーザーが選択し注文した場合に、Orderの情報がデータベースに入らない現象です。
フロントの注文内容確認画面(/shopping)にデータベースに保管する項目をいくつか増やしており、コンビニ決済で注文がきた場合にその項目の値が注文内容確認メールや受注マスタにのっかりません。(クレジットカードや銀行振込の場合はのります。)
増やした項目というのは/shoppingに新しくformを追加しただけなのですが、コンビニ決済経由の場合のみOrderのエンティティに追加した項目がのりません。
これはコンビニ決済だけ見ているOrderが違うのでしょうか?

どなたかおわかりになる方がいらっしゃれば、お力を貸してもらえないでしょうか?
よろしくお願いします。
468
投稿日時: 2019/2/1 20:05
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1818
Re: イプシロン決済モジュールで受注データがうまく引っ張れない
プラグインのver1.1.1のソースが手元にありましたので、
確認してみましたが、
フロントの注文内容確認画面から次の画面に遷移する際の処理は、
クレジットカードとコンビニ決済で特に分岐は無いように見受けられました。

注文内容確認画面で支払方法を選んだ際、
注文するボタンが次へボタンに表示が切り替わり、次の画面に遷移するかと思います。
その際、受注データに対して、受注情報や配送情報を更新しているようです。(ステータスを決済処理中に変更)
この段階で、DBに追加された項目にはデータは保存されていますか?
この段階でクレジットカードの時は保存されており、コンビニ決済では保存されていないという状態であれば、
この画面遷移直前の状態に何かあるかと思います。
もし、この段階ではどちらの決済でも想定通り保存されており、
この後の決済画面(クレジットorコンビニ)が完了した後に追加項目のデータが消えているようであれば、
コンビニ決済完了時に追加項目がクリアされるような処理が存在する可能性があるかと思います。


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

foolish
投稿日時: 2019/2/1 23:07
対応状況: 開発中
半人前
登録日: 2018/3/30
居住地:
投稿: 15
Re: イプシロン決済モジュールで受注データがうまく引っ張れない
シロハチ様
ご回答頂きありがとうございます。
ご指摘頂いた部分を確認したところ、次へをクリックした段階でクレジットはDBに保存されますが、コンビニ決済の方はされませんでした。
ということは、/shoppingの段階で必要なデータが不十分なのでしょうか?
イプシロンのPaymentControllerのindexにて(これは遷移後ですが)
$Order = $this->app['eccube.repository.order']->findOneBy(array('pre_order_id' => $this->app['eccube.service.cart']->getPreOrderId()));
とあり、カート部分の段階でのOrder情報を引っ張ってきているから/shoppingにてフォームに入力された値が取れないと思い、
$Order = $app['eccube.service.shopping']->getOrder($app['config']['order_processing']);
に書き直してみましたが、変わりありませんでした。
コンビニ用のサービスロジックのパラメータに追加したフォームの値を渡せれば出来そうだと思ったのですが、書き方が違うのでしょうか、、
468
投稿日時: 2019/2/4 11:10
対応状況: −−−
登録日: 2008/10/26
居住地:
投稿: 1818
Re: イプシロン決済モジュールで受注データがうまく引っ張れない
次へボタンを押して、次の画面に遷移するところは、
クレジットカードでもコンビニ決済でも同じ流れかと思います。
/app/Plugin/GmoEpsilon/GmoEpsilon.php 93行目付近の
// 受注情報、配送情報を更新(決済処理中として更新する)
                    $this->app['eccube.service.order']->setOrderUpdate($this->app['orm.em'], $Order, $formData);

という記述で受注データのステータスを「決済処理中」に変更しつつ、
注文内容のご確認ページの送信内容(お問い合わせ等)も更新しているようです。
setOrderUpdate()の内容を追っていくと、
/src/Eccube/Service/ShoppingService.php function setOrderUpdate()が実行されております。
このメソッドでは、受注データに対して更新する項目が記述されておりますので、
追加した項目が受注データに反映されないのは、
ここに追加項目が存在しないからなのかもしれないと思います。
(逆に、何故、コンビニ決済以外の支払方法の時は追加した項目が保存されているのか分からなくなってきましたが...)

PaymentControllerのindexの
$Order = $this->app['eccube.repository.order']->findOneBy(array('pre_order_id' => $this->app['eccube.service.cart']->getPreOrderId()));
で取り出したOrderは、
クレジットカードの時、追加項目の情報を保持しているのでしょうか?


----------------
株式会社シロハチ
■ECCUBE2系、3系構築カスタマイズご相談ください。
EC-CUBE3マニュアル
blog

foolish
投稿日時: 2019/2/21 15:39
対応状況: 開発中
半人前
登録日: 2018/3/30
居住地:
投稿: 15
Re: イプシロン決済モジュールで受注データがうまく引っ張れない
468様
返信頂きありがとうございます。
大変遅れまして、申し訳ございませんでした。

/app/Plugin/GmoEpsilon/GmoEpsilon.php87行目の、
$formData = $form->getData();


の後に、Orderエンティティに取得した$formDataから追加項目のデータをセットしてみたところ、コンビニ決済においても追加項目が表示されました。ただセットしなくてもクレジットの場合は何故データは表示されていたので、そこが疑問です。
Epsilonの/Service以下に支払方法に応じたサービスが置いてあると思いますが、コンビニ決済のPaymentIDを受け取った場合とクレジットではサービスロジックが大分違っていたようなので、このあたりが関係してくると推測しておりますが、、。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


ec-cube.co

統計情報

総メンバー数は48,013名です
総投稿数は92,765件です

投稿数ランキング

1
seasoft
7332
2
AMUAMU
2712
3
nanasess
1908
4
468
1818
5
yuh
1600
6
red
1329
7
umebius
1296
8
fukap
907
9
tsuji
851
10
h_tanaka
839
11
shutta
835
12 ramrun 789
13
tao_s
758
14 karin 656
15 sumida 641
16
homan
633
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

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