質問 > 管理機能 > クレジットカード決済時に自動で発送済にしたい |
管理機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
lusso |
投稿日時: 2013/11/12 13:52
対応状況: −−−
|
新米 登録日: 2013/11/12 居住地: 投稿: 4 |
クレジットカード決済時に自動で発送済にしたい 現在、購入すると購入金額分のポイントが付与される商品を取り扱っております。
商品登録時のポイント付与率を100%にすることで処理を実現しているのですが、商品の性質上ステータスを発送済にしないと購入ユーザーに対してポイントが反映されません。 上記の商品をクレジット決済した際に、自動で発送済に変更することは可能でしょうか? 現状新規注文になってしまう為コチラで手動にて発送済に切り替えており、ポイント反映までの遅延が発生しております。 LC_Page_Shopping_Confirm.phpのaction()内に下記のような処理を追加しているのですが、どうやら正常に動作していないみたいです。 // 無料商品購入時、自動で入金済にさせる if($this->arrForm['payment_total'] > 0) { // ポイント商品購入時、自動で発送済に if ($this->arrForm['deliv_id'] != 1) $objPurchase->completeOrder(ORDER_NEW); else $objPurchase->completeOrder(ORDER_DELIV); } else $objPurchase->completeOrder(ORDER_PRE_END); 上記の処理を簡単に説明させていただきます。 ポイント全額使用時の為に、0円商品は自動でORDER_PRE_ENDに変更しています。この点に関しては問題なく動作しております。 そしてdeliv_idで分岐させております。配送業者IDに関しては1で間違いないのですが、ORDER_DELIVに変更されません。 また、if ($arrOrderTemp['deliv_id']) 等に変更しても同様です。 以上に関してのご意見や解決方法等をお聞かせ願えればと思います。 それではよろしくお願い致します。 // 追記 環境の記載をしていなかったので、追記致します。 [EC-CUBE] 2.12.5 [サーバーOS] Linux hosweb020-v 2.6.32-279.el6.x86_64 [DBサーバー] PostgreSQL 9.2.4 [WEBサーバー] Apache [PHP] 5.4.8 [決算モジュール] EC-CUBEペイメント |
DELIGHT |
投稿日時: 2013/11/12 14:47
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: クレジットカード決済時に自動で発送済にしたい ポイント付与はSC_Helper_Purchase::sfUpdateOrderStatus()内で行われますが、
SC_Helper_Purchase::completeOrder()内ではその関数を使用していないため ポイントの付与がされていないのだと思います。 (詳しくはコードを追って見て下さい。) このようなコードでいかがでしょう。
周辺のコードを流し読みしただけなので もしかしたら何か抜けがあるかもしれません。
|
lusso |
投稿日時: 2013/11/12 19:41
対応状況: −−−
|
新米 登録日: 2013/11/12 居住地: 投稿: 4 |
Re: クレジットカード決済時に自動で発送済にしたい ご返信ありがとうございます。記載された通りにソースを変更してみましたが、発送済みになりませんでした。
どうやら決済モジュールを使用した場合、LC_Page_Shopping_Confirm::action()にある購入完了ページの処理自体に遷移しないみたいです。プリントデバッグを行い、出力されなかったことを確認しました。 また、SC_Helper_Purchase::completeOrder()のコメントに、 * 決済モジュールを使用する場合は対応状況を「決済処理中」に設定し, * 決済完了後「新規受付」に変更すること との記載があり、ソースを読み進めてみましたが、イマイチどこで決済完了処理を行っているのか分かりません。 以上です、よろしくお願い致します。 |
k-kuwahara |
投稿日時: 2013/11/12 20:30
対応状況: −−−
|
長老 登録日: 2013/4/16 居住地: Tokyo 投稿: 175 |
Re: クレジットカード決済時に自動で発送済にしたい lusso様
本件について確認したいのですが、 発送済に自動で変更するようにしたいのは、【特定の商品のみ】でしょうか。 もしそうであるならば、複数商品を購入した際に、 【発送済にしたい商品】以外の商品を一緒に購入したとしても、 受注ステータスを【発送済】に変更する、ということでよろしいでしょうか。 以上、ご回答のほどよろしくお願い致します。 |
lusso |
投稿日時: 2013/11/12 20:36
対応状況: −−−
|
新米 登録日: 2013/11/12 居住地: 投稿: 4 |
Re: クレジットカード決済時に自動で発送済にしたい ご質問ありがとうございます。
発送済みにしたい商品は特定の商品です。 商品種別の通常商品とダウンロード商品の他に、ポイント商品というものを追加し、その商品のみ上記のような動作をさせたいです。 ポイント商品はEC-CUBEの仕様通り、通常商品及びダウンロード商品と同時に購入はできません。 故に、発送済にしたい商品以外と一緒に購入することはありません。 以上、回答となりますが、よろしかったでしょうか? それではよろしくお願い致します。 |
DELIGHT |
投稿日時: 2013/11/13 11:50
対応状況: −−−
|
仙人 登録日: 2010/2/3 居住地: 熊本県・九州・長野県・関東甲信越 投稿: 572 |
Re: クレジットカード決済時に自動で発送済にしたい 【クレジットカード決済時に】というのを失念しておりました。
クレジット決済を利用する時は、該当部分付近の
へ分岐しますので、こちらで状態変更系の処理を行う必要があります。
|
casa |
投稿日時: 2013/11/13 12:08
対応状況: −−−
|
長老 登録日: 2011/10/3 居住地: 投稿: 210 |
Re: クレジットカード決済時に自動で発送済にしたい こんにちわ。
決済モジュールを利用する場合には、受注状況は決済モジュールが更新していますので、「ご入力内容のご確認画面」の時点では、EC-CUBE本体のコードを修正しても対応することができません。 クレジット決済の場合は以下の「決済モジュールを使用する場合」の方の処理が実行され、受注状況は「決済処理中(ORDER_PENDING)」となります。「購入完了ページ」の部分は実行されません。
その後、クレジット決済が完了すると、決済モジュールが受注状況を「決済処理中」から「新規受付」に更新します。 対応するとすれば、購入完了画面(LC_Page_Shopping_Complete.php)のactionでorder_idが取得できますので、それを元に受注情報をDBから読み込み、はじめにご提示されていた条件分岐を行って、条件に合致する場合に
を行えばよいのではないでしょうか。 |
lusso |
投稿日時: 2013/11/13 19:03
対応状況: −−−
|
新米 登録日: 2013/11/12 居住地: 投稿: 4 |
Re: クレジットカード決済時に自動で発送済にしたい ご返信ありがとうございます。
casa様の提示された内容を元に幾度か試行錯誤を繰り返し、希望通りの動作になりましたことを報告致します。 参考までに手順を記載致します。 ?SC_Helper_Purchase::getOrderDetail()内を下記の通り修正します。 この処理はクレジット決済かどうかの判定を取る為にpayment_idを取得しています。
?LC_Shopping_Complete::actoin()内に下記を追加します。 参考にされる場合、payment_id及びproduct_type_idの値は所定のものに変更して下さい。
以上となります。同じような案件で悩まれている方に少しでも参考になれば幸いです。 それでは本案件は解決済とさせていただきます。皆様、どうもありがとうございました。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |