質問 > 管理機能 > ゼウス決済プラグイン 購入完了画面でのシステムエラー |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
camus |
投稿日時: 2019/7/19 10:54
対応状況: −−−
|
新米 登録日: 2019/7/19 居住地: 投稿: 4 |
ゼウス決済プラグイン 購入完了画面でのシステムエラー ※すみませんフォーラム選択間違えました。変更できないのでこのままで。質問:フロント機能です。
[EC-CUBE] EC-CUBE3.0.14 [レンタルサーバ] xserver [PHP] PHP 7.1.28 [導入プラグインの有無] ZeusPayment [カスタマイズの有無] 無し [現象] ゼウス決済プラグイン(ZeusPayment)で、購入処理中、 カード番号等を入力して確認画面から最後に「完了する」を押したあとにシステムエラーが出ます。 決済は完了していてログを見るとsuccessと返ってきています。 ECCUBE側ステータスは入金済となっています。 受付済メールも飛んでいます。 ログは次のようになってます。(適度に改行いれてます) [2019-07-19 09:24:29,2] eccube.CRITICAL [eb8fae40] [2f7f36ea] [NULL] [LogListener:logException:112] - Doctrine\ORM\ORMException: The identifier id is missing for a query of Eccube\Entity\Order (uncaught exception) at /xxxx/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php line 259 {"exception":"[object] (Doctrine\\ORM\\ORMException(code: 0): The identifier id is missing for a query of Eccube\\Entity\\Order at /xxx/public_html/vendor/doctrine/orm/lib/Doctrine/ORM/ORMException.php:259)"} [GET, /shopping/complete, xxxx, https://xxx/shopping/zeus_payment, Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0] [2019-07-19 09:24:29,211905] eccube.INFO [eb8fae40] [2f7f36ea] [NULL] [LogListener:logRequest:83] - > GET /shopping/complete [GET, /shopping/complete, xxxx, https://xxx/shopping/zeus_payment, Mozilla/5.0 (Windows NT 6.3; Win64; x64; rv:68.0) Gecko/20100101 Firefox/68.0] 以前同じ質問(未解決)がありましたが、ゼウスに問い合わせたところ、そちらのECCUBE側の問題では?とのこと。 現象だけ見ると、確かに決算自体は問題なく、ECCUBE側の最後の完了ページがうまく表示されないだけのようなのですが。 どう調べて対応したらいいでしょうか? |
468 |
投稿日時: 2019/7/19 11:48
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: ゼウス決済プラグイン 購入完了画面でのシステムエラー ログに「The identifier id is missing for a query」とありますので
OrderIDがうまく取得できていないのでしょうか? ORMExceptionが発生するまでの流れを確認できれば、 原因のある処理がハッキリするのではないでしょうか? デバッグモードで該当のエラーを表示させると ORMExceptionが発生するまでの流れ(スタックトレース)が画面に表示されるのではないかと思います。
|
camus |
投稿日時: 2019/7/19 15:22
対応状況: −−−
|
新米 登録日: 2019/7/19 居住地: 投稿: 4 |
Re: ゼウス決済プラグイン 購入完了画面でのシステムエラー ありがとうございます。
なんとか見てみます。 |
camus |
投稿日時: 2019/7/19 16:26
対応状況: −−−
|
新米 登録日: 2019/7/19 居住地: 投稿: 4 |
Re: ゼウス決済プラグイン 購入完了画面でのシステムエラー とりあえず特にこちらで何も出力しないで実行してみました。
Whoops, looks like something went wrong. 1/1 ORMException in ORMException.php line 259: The identifier id is missing for a query of Eccube\Entity\Order in ORMException.php line 259 at ORMException::missingIdentifierField('Eccube\Entity\Order', 'id') in EntityManager.php line 378 at EntityManager->find('Eccube\Entity\Order', array('id' => null), '0', null) in EntityRepository.php line 154 at EntityRepository->find(null) in ShoppingController.php line 336 at ShoppingController->complete(object(Application), object(Request)) at call_user_func_array(array(object(ShoppingController), 'complete'), array(object(Application), object(Request))) in HttpKernel.php line 144 at HttpKernel->handleRaw(object(Request), '1') in HttpKernel.php line 64 at HttpKernel->handle(object(Request), '1', true) in Application.php line 586 at Application->handle(object(Request)) in Application.php line 563 at Application->run() in index_dev.php line 117 何がなにやら・・です。 ShoppingController.phpのfunction completeでセッション削除前にIDとってますが、その前に消えちゃってるということでしょうか。 |
468 |
投稿日時: 2019/7/20 8:33
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: ゼウス決済プラグイン 購入完了画面でのシステムエラー EntityRepository->find(null) in ShoppingController.php line 336
↑ここの周辺を確認する必要があると思うのですが、 ここでOrderの取得を行うようなカスタマイズをされていますか? (コンバージョン率を計測する為の処理など) デフォルトのソースを確認すると OrderIdはセッションから取り出してtwigに渡す形になっておりますが OrderEntityを利用するような動きは無いように見受けられます。 もし、ここにOrderEntityを取得する処理があるのであれば、 条件となるOrderIdがセッションから取り出せていないのだと思います。 ゼウス決済プラグインのソースは見たことがないので何とも言えませんが 決済が完了して購入完了画面を表示する前にセッションを削除している、 またはセッションをセットしていないのではないでしょうか? 例えば、ShoppingController.php function confirm()では 受注メール送信前に以下のような記述がありますが
ゼウス決済プラグインでは、このような記述が無いのかもしれません。
|
camus |
投稿日時: 2019/7/20 10:26
対応状況: 解決済
|
新米 登録日: 2019/7/19 居住地: 投稿: 4 |
Re: ゼウス決済プラグイン 購入完了画面でのシステムエラー ありがとうございます!
まさにアドバイス通りでした。 現状ではOrderIDをセッションにいれているところは見つからず。 プラグインのPaymentController.phpのcompleteのところで、complete画面にリダイレクトする前に $sessionOrderKey = 'eccube.front.shopping.order.id'; $app['session']->set($sessionOrderKey, $order->getId()); と入れてみたところ、問題なく動きました。 あまりプラグインに手を入れたくないんですが仕方ありません。 プラグイン自分で選んで入れたものではないので、ECCUBEのバージョンとあっているものかどうかも不明です。 他に報告がほとんどあがってないようなので、もしかしたらバージョンの相性の問題なのかもしれません。 ちなみにゼウスに問い合わせをしたところ、返答はありましたが、この件はきれいにスルーされたのであきらめました。 報告もしない予定です。 おかげで早期解決できました。 本当にありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |