バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

質問 > 管理機能 > クレジットカード決済時に自動で発送済にしたい

管理機能

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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()内ではその関数を使用していないため
ポイントの付与がされていないのだと思います。
(詳しくはコードを追って見て下さい。)

このようなコードでいかがでしょう。

// 無料商品購入時、自動で入金済にさせる
if($this->arrForm['payment_total'] > 0) {
  //まずは新規受付で受注を作成
  $objPurchase->completeOrder(ORDER_NEW);
 // ポイント商品購入時、自動で発送済に
 if ($this->arrForm['deliv_id'] == 1){
  $objPurchase->sfUpdateOrderStatus($this->arrForm['order_id'], ORDER_DELIV);
  }
  //必要に応じてステータスを新規受付に戻す
  //$objPurchase->sfUpdateOrderStatus($this->arrForm['order_id'], ORDER_NEW);
}
else
 $objPurchase->completeOrder(ORDER_PRE_END);


周辺のコードを流し読みしただけなので
もしかしたら何か抜けがあるかもしれません。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

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: クレジットカード決済時に自動で発送済にしたい
【クレジットカード決済時に】というのを失念しておりました。

クレジット決済を利用する時は、該当部分付近の
                // 決済モジュールを使用する場合
                if ($this->use_module) {
                    $objPurchase->completeOrder(ORDER_PENDING);


                    SC_Response_Ex::sendRedirect(SHOPPING_MODULE_URLPATH);
                }

へ分岐しますので、こちらで状態変更系の処理を行う必要があります。


----------------
+ DAISY inc. -------------------- +
EC-CUBE構築・カスタマイズサービス
EC・WEB構築などお気軽にご相談ください。

デイジー株式会社
http://daisy.link/

casa
投稿日時: 2013/11/13 12:08
対応状況: −−−
長老
登録日: 2011/10/3
居住地:
投稿: 210
Re: クレジットカード決済時に自動で発送済にしたい
こんにちわ。

決済モジュールを利用する場合には、受注状況は決済モジュールが更新していますので、「ご入力内容のご確認画面」の時点では、EC-CUBE本体のコードを修正しても対応することができません。

クレジット決済の場合は以下の「決済モジュールを使用する場合」の方の処理が実行され、受注状況は「決済処理中(ORDER_PENDING)」となります。「購入完了ページ」の部分は実行されません。

// 決済モジュールを使用する場合
if ($this->use_module) {
    $objPurchase->completeOrder(ORDER_PENDING);

    SC_Response_Ex::sendRedirect(SHOPPING_MODULE_URLPATH);
}
// 購入完了ページ
else {
    $objPurchase->completeOrder(ORDER_NEW);
    $template_id = SC_Display_Ex::detectDevice() == DEVICE_TYPE_MOBILE ? 2 : 1;
    $objHelperMail->sfSendOrderMail(
            $this->arrForm['order_id'],
            $template_id);

    SC_Response_Ex::sendRedirect(SHOPPING_COMPLETE_URLPATH);
}


その後、クレジット決済が完了すると、決済モジュールが受注状況を「決済処理中」から「新規受付」に更新します。

対応するとすれば、購入完了画面(LC_Page_Shopping_Complete.php)のactionでorder_idが取得できますので、それを元に受注情報をDBから読み込み、はじめにご提示されていた条件分岐を行って、条件に合致する場合に

$objPurchase->sfUpdateOrderStatus($this->arrForm['order_id'], ORDER_DELIV);

を行えばよいのではないでしょうか。
lusso
投稿日時: 2013/11/13 19:03
対応状況: −−−
新米
登録日: 2013/11/12
居住地:
投稿: 4
Re: クレジットカード決済時に自動で発送済にしたい
ご返信ありがとうございます。

casa様の提示された内容を元に幾度か試行錯誤を繰り返し、希望通りの動作になりましたことを報告致します。

参考までに手順を記載致します。

?SC_Helper_Purchase::getOrderDetail()内を下記の通り修正します。
 この処理はクレジット決済かどうかの判定を取る為にpayment_idを取得しています。

$col .= 'T1.status AS status, T1.payment_date AS payment_date,';
↓
$col .= 'T1.status AS status, T1.payment_date AS payment_date, T1.payment_id AS payment_id,';


?LC_Shopping_Complete::actoin()内に下記を追加します。
 参考にされる場合、payment_id及びproduct_type_idの値は所定のものに変更して下さい。

$objPurchase = new SC_Helper_Purchase_Ex();
// 受注詳細を取得
$arrOrderDetail = $objPurchase->getOrderDetail($_SESSION['order_id'], true);
foreach ($arrOrderDetail as $arrDetail) {
 // クレジット決済時
 if ($arrDetail['payment_id'] == 7) {
  // ポイント商品購入時、自動で発送済に
  if ($arrDetail['product_type_id'] == 3)
   $objPurchase->sfUpdateOrderStatus($_SESSION['order_id'], ORDER_DELIV);
  // それ以外は自動で入金済に
  else
   $objPurchase->sfUpdateOrderStatus($_SESSION['order_id'], ORDER_PRE_END);
 }
}


以上となります。同じような案件で悩まれている方に少しでも参考になれば幸いです。
それでは本案件は解決済とさせていただきます。皆様、どうもありがとうございました。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


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

統計情報

総メンバー数は88,974名です
総投稿数は110,019件です

投稿数ランキング

1
seasoft
7367
2
468
3217
3
AMUAMU
2712
4
nanasess
2314
5
umebius
2085
6
yuh
1819
7
h_tanaka
1646
8
red
1570
9
mcontact
1296
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.