バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

プラグイン > 開発について > $shoppingPurchaseFlow->rollback()で在庫が増える

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
n.o
投稿日時: 2018/11/8 18:13
対応状況: −−−
半人前
登録日: 2018/8/10
居住地:
投稿: 26
$shoppingPurchaseFlow->rollback()で在庫が増える
4.0正式版で$shoppingPurchaseFlow->rollback()すると在庫が増えるようになっています。
RC版ではこのようなことはなく、在庫は元に戻っていました。
何か呼び出し方に変更があったのでしょうか?

プラグイン側では下記のようにprepareを行った後に、
決済に失敗した場合にrollbackを呼び出しています。
ご指摘頂けますと幸いです。

■prepareの呼び出し
$this->purchaseFlow->prepare($Order, new PurchaseContext());
$this->entityManager->flush();


■rollbackの呼び出し
$this->purchaseFlow->rollback($Order, new PurchaseContext());
$this->entityManager->flush();
okazy
投稿日時: 2018/11/9 17:38
対応状況: −−−
新米
登録日: 2017/10/11
居住地:
投稿: 2
Re: $shoppingPurchaseFlow->rollback()で在庫が増える
`purchaseFlow->prepare()` と `purchaseFlow->rollback()` は別のトランザクションで実行する想定の実装となっています。

`purchaseFlow->prepare()` は購入フローの仮確定時に実行します。
例えば、リンク型決済にてEC-CUBEのご注文内容のご確認画面から決済会社のクレジットカード情報入力画面への遷移の際に実行します。

一方、 `purchaseFlow->rollback()` は仮確定状態の時に購入処理中に戻す時に実行します。
例えば、リンク型決済にて決済会社のクレジットカード情報入力画面からEC-CUBEのご注文手続き画面への遷移の際に実行します。


`purchaseFlow->prepare()` で問題が発生して切り戻したいときは `purchaseFlow->rollback()` を実行するのではなく、ShoppingException()の例外を投げるようにしていただけますでしょうか。

本体側でShoppingException()の例外catchしてロールバックが実行されます。

> 本体側ロールバックする処理
https://github.com/EC-CUBE/ec-cube/blob/48269717b26016b91f9331174030657ce97f54c7/src/Eccube/Controller/ShoppingController.php#L388

`purchaseFlow->prepare()` と `purchaseFlow->rollback()` の利用例についてはGitHubにて公開されていますので一度ご確認いただければと思います。
https://github.com/EC-CUBE/sample-payment-plugin

ご確認よろしくお願いします。
n.o
投稿日時: 2018/11/13 12:49
対応状況: −−−
半人前
登録日: 2018/8/10
居住地:
投稿: 26
Re: $shoppingPurchaseFlow->rollback()で在庫が増える
okazy様

ご返答ありがとうございます。
ログを確認したところ、コントローラーの開始時に
トランザクションが開始されているのですね。

prepare後に独自にトランザクション開始していたので
同一トランザクションでは無いと思っていたのですが、
そうでは無かったようです。
別トランザクションでprepareとrollbackが行われるように
改修したいと思います。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBEペイメント

統計情報

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

投稿数ランキング

1
seasoft
7331
2
AMUAMU
2712
3
nanasess
1833
4
yuh
1521
5
468
1287
6
red
1186
7
umebius
1007
8
fukap
907
9
shutta
827
10
tsuji
815
11 ramrun 789
12
tao_s
667
13 karin 656
14 sumida 641
15
homan
633
16
h_tanaka
587
17 DELIGHT 571
18
patapata
502
19
flealog
483
20 tonton 436


ネットショップの壺

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

Copyright© LOCKON CO.,LTD. All Rights Reserved.