プラグイン > 開発について > 購入フローのerror, rollback処理はどこに実装するのが適切でしょうか |
開発について
フラット表示 | 前のトピック | 次のトピック |
投稿者 | スレッド |
---|---|
sheep |
投稿日時: 2021/11/7 15:42
対応状況: 解決済
|
半人前 登録日: 2018/8/12 居住地: 投稿: 14 |
購入フローのerror, rollback処理はどこに実装するのが適切でしょうか [EC-CUBE] 4.1
こんにちは。 現在決済プラグインを独自で制作中です。 [実現したいこと] ShoppingController::checkout において validate, apply, checkout と処理が流れていきますが この流れの途中でエラーが発生した時に、独自のrollback処理を実装したいです。 クレジットカード情報をサーバー経由させないように 注文確認画面のsubmit(注文確定)のタイミングで、下記のような流れで処理を行おうと考えております。 1. 外部決済サービス(Stripe)のAPIを利用して、仮売上として売上を立てる 2. EC-CUBE注文確認画面をsubmitする(ShoppingController::checkoutが実行される) 3. 手順2でエラーが起きた際に、手順1の仮売上をキャンセルする(Order情報があればキャンセル手続きができます) [試したこと] ShoppingController::errorのイベントである「EccubeEvents::FRONT_SHOPPING_SHIPPING_ERROR_COMPLETE」では cartServiceからOrder情報が取れないので、適切ではなさそうでした。 では、PurchaseProcessorを実装して、rollback関数に実装すれば良いのかな?と思ったのですが 例えば在庫が足りない時などには、このrollback関数に辿り着く前に、購入手続きのwarningに戻ってしまいます。 では、ItemHolderValidatorを拡張して、handle関数に実装すれば良いのかな?と思ったのですが 在庫が足りない時には、StockValidatorのhandle関数が実行されるだけで、自作のItemHolderValidatorのhandle関数は実行されませんでした。 私の想像できる限りのことは試したつもりですが、、、、、 正解に辿り着けなかったので、もし知見を持った方がいらっしゃればと質問させていただきました。 何卒、よろしくお願いいたします。 |
フラット表示 | 前のトピック | 次のトピック |
題名 | 投稿者 | 日時 |
---|---|---|
» 購入フローのerror, rollback処理はどこに実装するのが適切でしょうか | sheep | 2021/11/7 15:42 |
Re: 購入フローのerror, rollback処理はどこに実装するのが適切でしょうか | 468 | 2021/11/8 10:28 |
Re: 購入フローのerror, rollback処理はどこに実装するのが適切でしょうか | sheep | 2021/11/8 17:46 |
Re: 購入フローのerror, rollback処理はどこに実装するのが適切でしょうか | 468 | 2021/11/8 19:09 |
Re: 購入フローのerror, rollback処理はどこに実装するのが適切でしょうか | sheep | 2021/11/8 20:16 |