1+ <?php
2+
3+ namespace Signifyd \Connect \Plugin \StripeIntegration \Payments \Model \Stripe \Event ;
4+
5+ use Magento \Sales \Model \ResourceModel \Order as OrderResourceModel ;
6+ use Signifyd \Connect \Helper \OrderHelper ;
7+ use Signifyd \Connect \Logger \Logger ;
8+ use Signifyd \Connect \Model \CasedataFactory ;
9+ use Signifyd \Connect \Model \ResourceModel \Casedata as CasedataResourceModel ;
10+ use StripeIntegration \Payments \Model \Stripe \Event \ChargeSucceeded as StripeChargeSucceeded ;
11+ use StripeIntegration \Payments \Helper \Webhooks ;
12+
13+ class ChargeSucceeded
14+ {
15+ /**
16+ * @var Logger
17+ */
18+ public $ logger ;
19+
20+ /**
21+ * @var CasedataFactory
22+ */
23+ public $ casedataFactory ;
24+
25+ /**
26+ * @var CasedataResourceModel
27+ */
28+ public $ casedataResourceModel ;
29+
30+ /**
31+ * @var OrderResourceModel
32+ */
33+ public $ orderResourceModel ;
34+
35+ /**
36+ * @var OrderHelper
37+ */
38+ public $ orderHelper ;
39+
40+ /**
41+ * @var Webhooks
42+ */
43+ public $ webhooksHelper ;
44+
45+ /**
46+ * ChargeSucceeded constructor.
47+ *
48+ * @param Logger $logger
49+ * @param CasedataFactory $casedataFactory
50+ * @param CasedataResourceModel $casedataResourceModel
51+ * @param OrderResourceModel $orderResourceModel
52+ * @param OrderHelper $orderHelper
53+ * @param Webhooks $webhooksHelper
54+ */
55+ public function __construct (
56+ Logger $ logger ,
57+ CasedataFactory $ casedataFactory ,
58+ CasedataResourceModel $ casedataResourceModel ,
59+ OrderResourceModel $ orderResourceModel ,
60+ OrderHelper $ orderHelper ,
61+ Webhooks $ webhooksHelper
62+ ) {
63+ $ this ->logger = $ logger ;
64+ $ this ->casedataFactory = $ casedataFactory ;
65+ $ this ->casedataResourceModel = $ casedataResourceModel ;
66+ $ this ->orderResourceModel = $ orderResourceModel ;
67+ $ this ->orderHelper = $ orderHelper ;
68+ $ this ->webhooksHelper = $ webhooksHelper ;
69+ }
70+
71+ /**
72+ * Plugin after on process method.
73+ *
74+ * @param StripeChargeSucceeded $subject
75+ * @param $arrEvent
76+ * @param $object
77+ * @return void
78+ */
79+ public function afterProcess (
80+ StripeChargeSucceeded $ subject ,
81+ $ result ,
82+ $ arrEvent ,
83+ $ object
84+ ) {
85+ try {
86+ $ order = $ this ->webhooksHelper ->loadOrderFromEvent ($ arrEvent );
87+ $ orderId = $ order ->getId ();
88+ $ case = $ this ->casedataFactory ->create ();
89+ $ this ->casedataResourceModel ->load ($ case , $ orderId , 'order_id ' );
90+
91+ if ($ case ->isEmpty ()) {
92+ return $ result ;
93+ }
94+
95+ //Setting order to hold after stripe Charge
96+ if ($ case ->getEntries ('is_holded ' ) == 1 && $ order ->canHold ()) {
97+ $ order ->hold ();
98+ $ this ->orderResourceModel ->save ($ order );
99+ $ this ->logger ->info (
100+ "Hold order {$ order ->getIncrementId ()} after stripe Charge " ,
101+ ['entity ' => $ case ]
102+ );
103+
104+ $ this ->orderHelper ->addCommentToStatusHistory (
105+ $ order ,
106+ "Signifyd: hold order after stripe Charge "
107+ );
108+
109+ $ case ->unsetEntries ('is_holded ' );
110+ $ this ->casedataResourceModel ->save ($ case );
111+ }
112+ } catch (\Exception $ ex ) {
113+ $ context = [];
114+
115+ if (isset ($ order ) && $ order instanceof Order) {
116+ $ context ['entity ' ] = $ order ;
117+ }
118+
119+ $ this ->logger ->error ($ ex ->getMessage (), $ context );
120+ } catch (\Error $ ex ) {
121+ $ context = [];
122+
123+ if (isset ($ order ) && $ order instanceof Order) {
124+ $ context ['entity ' ] = $ order ;
125+ }
126+
127+ $ this ->logger ->error ($ ex ->getMessage (), $ context );
128+ }
129+ }
130+ }
0 commit comments