プラグイン > 開発について > 他決済プラグインとの連携方法が分かりません…。 |
開発について
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
kogoro |
投稿日時: 2017/2/21 14:12
対応状況: −−−
|
新米 登録日: 2016/5/6 居住地: 投稿: 6 |
他決済プラグインとの連携方法が分かりません…。 ▼テンプレート
[EC-CUBE] ec-cube V3.0.10(アップデート) [レンタルサーバ] 不明(クライアント先の環境のため) [OS] 不明(クライアント先の環境のため) [PHP] 不明(クライアント先の環境のため) [データベース] 不明(クライアント先の環境のため) [WEBサーバ] 不明(クライアント先の環境のため) [ブラウザ] どのブラウザでも [導入プラグインの有無] 先方自社開発のペイパル決済プラグイン、後払い.comプラグイン、弊社開発の購入完了時に処理を行うプラグイン [カスタマイズの有無] 不明(クライアント先の環境のため) [現象] 先方自社開発のペイパル決済プラグインを使用してクレジットカードで支払い、サンクスページに遷移すると下記のように弊社側のプラグインのエラーが発生する。 【エラー内容】 [client 2001:240:2a7c:6400:4ce4:448f:7b6f:79fb] PHP Fatal error: Plugin\\PluginName\\PluginCvTagEvent::addCvTag(): The script tried to execute a method or access a property of an incomplete object. Please ensure that the class definition "DoctrineProxy\\__CG__\\Eccube\\Entity\\Order" of the object you are trying to operate on was loaded _before_ unserialize() gets called or provide a __autoload() function to load the class definition in /var/www/html/xxxxxxx/app/Plugin/PluginName/PlubinCvTagEvent.php on line 70, 【エラーが出ている付近のプログラムコード】 private $xxxxxxxxSessionKey = 'xxxxxx.com.eccube.order.data'; 〜〜〜〜〜〜〜〜〜〜 // 商品情報 $goods_set_str = ""; $order_data = $app['session']->get($this->xxxxxxxxSessionKey); $OrderDetails = $order_data->getOrderDetails(); $d_cnt = 0; foreach ($OrderDetails as $OrderDetail) { $d_cnt++; if($d_cnt>1){ $goods_set_str .= ":"; } $goods_set_str .= $OrderDetail->getProductCode().".".$OrderDetail->getQuantity().".".$OrderDetail->getPrice(); } ※エラーが出ているのは上記の「$OrderDetails = $order_data->getOrderDetails();」部分です。おそらく$order_dataが取得できていないことによる不具合だと思います。 こちらの弊社のプラグインはec-cube V3.0.10以降に対応された下記をevent.ymlに設定済みです。 # 購入完了時拡張 service.shopping.notify.complete: - [onServiceShoppingNotifyComplete, NORMAL] 上記以外に決済モジュールとの購入完了後の連携で設定が必要なのでしょうか?注文情報の取得方法が間違っているのでしょうか? ちなみに決済モジュールを通さない銀行振込や他の決済では問題なくプラグインは動作いたします。 現在非常に困っています…。 是非お力添えをいただければ嬉しい限りです。 どうぞよろしくお願いいたします。 |
nyorai |
投稿日時: 2017/2/21 16:19
対応状況: −−−
|
仙人 登録日: 2015/8/21 居住地: 投稿: 302 |
Re: 他決済プラグインとの連携方法が分かりません…。 発生しているエラーは、以下の事象かと思います。
https://github.com/EC-CUBE/ec-cube/issues/1680 セッションにOrderのエンティティを保存しているようですが、Doctrineではエンティティをセッションに格納するのは推奨されていません。 セッションに保存する際にorder_idのみ保存し、取得する際にfindしなおすようにすれば解消するかと思います。 ちなみにservice.shopping.notify.completeを使用しているのであれば、
でOrderエンティティは取得できますので、そちらを利用してもよいかもしれません。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |