バージョン選択

フォーラム

メニュー

オンライン状況

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

サイト内検索

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

開発について

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
n.o
投稿日時: 2018/11/8 18:13
対応状況: −−−
常連
登録日: 2018/8/10
居住地:
投稿: 31
$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
居住地:
投稿: 28
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
居住地:
投稿: 31
Re: $shoppingPurchaseFlow->rollback()で在庫が増える
okazy様

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

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


 



ログイン


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

統計情報

総メンバー数は88,286名です
総投稿数は109,688件です

投稿数ランキング

1
seasoft
7365
2
468
3217
3
AMUAMU
2712
4
nanasess
2303
5
umebius
2085
6
yuh
1818
7
h_tanaka
1610
8
red
1567
9
mcontact
1240
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
796
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.