30
30
use Magento \Quote \Api \CartRepositoryInterface ;
31
31
use Magento \Quote \Api \Data \CartItemInterfaceFactory ;
32
32
use Magento \Quote \Model \GuestCart \GuestCartItemRepository ;
33
+ use Magento \Quote \Model \GuestCart \GuestCouponManagement ;
33
34
use Magento \Quote \Model \Quote \AddressFactory ;
34
35
use Magento \Quote \Model \Quote ;
35
36
use Magento \Quote \Model \QuoteFactory ;
46
47
*/
47
48
class Index implements HttpGetActionInterface
48
49
{
49
- /**
50
- * @var Authenticator
51
- */
52
- private Authenticator $ authenticator ;
53
-
54
- /**
55
- * @var FBEHelper
56
- */
57
- private FBEHelper $ fbeHelper ;
58
-
59
- /**
60
- * @var OrderHelper
61
- */
62
- private OrderHelper $ orderHelper ;
63
-
64
50
/**
65
51
* @var QuoteFactory
66
52
*/
@@ -91,6 +77,11 @@ class Index implements HttpGetActionInterface
91
77
*/
92
78
private CartItemInterfaceFactory $ cartItemInterfaceFactory ;
93
79
80
+ /**
81
+ * @var GuestCouponManagement
82
+ */
83
+ private GuestCouponManagement $ guestCouponManagement ;
84
+
94
85
/**
95
86
* @var CheckoutSession
96
87
*/
@@ -106,6 +97,21 @@ class Index implements HttpGetActionInterface
106
97
*/
107
98
private RedirectFactory $ resultRedirectFactory ;
108
99
100
+ /**
101
+ * @var Authenticator
102
+ */
103
+ private Authenticator $ authenticator ;
104
+
105
+ /**
106
+ * @var FBEHelper
107
+ */
108
+ private FBEHelper $ fbeHelper ;
109
+
110
+ /**
111
+ * @var OrderHelper
112
+ */
113
+ private OrderHelper $ orderHelper ;
114
+
109
115
110
116
/**
111
117
* @param QuoteFactory $quoteFactory
@@ -114,12 +120,13 @@ class Index implements HttpGetActionInterface
114
120
* @param CartRepositoryInterface $quoteRepository
115
121
* @param GuestCartItemRepository $guestCartItemRepository
116
122
* @param CartItemInterfaceFactory $cartItemInterfaceFactory
123
+ * @param GuestCouponManagement $guestCouponManagement
117
124
* @param CheckoutSession $checkoutSession
118
125
* @param Http $httpRequest
119
126
* @param RedirectFactory $resultRedirectFactory
120
127
* @param Authenticator $authenticator
121
- * @param OrderHelper $orderHelper
122
128
* @param FBEHelper $fbeHelper
129
+ * @param OrderHelper $orderHelper
123
130
*/
124
131
public function __construct (
125
132
QuoteFactory $ quoteFactory ,
@@ -128,11 +135,12 @@ public function __construct(
128
135
CartRepositoryInterface $ quoteRepository ,
129
136
GuestCartitemRepository $ guestCartItemRepository ,
130
137
CartItemInterfaceFactory $ cartItemInterfaceFactory ,
131
- FBEHelper $ fbeHelper ,
138
+ GuestCouponManagement $ guestCouponManagement ,
132
139
CheckoutSession $ checkoutSession ,
133
140
Http $ httpRequest ,
134
141
RedirectFactory $ resultRedirectFactory ,
135
142
Authenticator $ authenticator ,
143
+ FBEHelper $ fbeHelper ,
136
144
OrderHelper $ orderHelper
137
145
)
138
146
{
@@ -142,11 +150,12 @@ public function __construct(
142
150
$ this ->quoteRepository = $ quoteRepository ;
143
151
$ this ->guestCartItemRepository = $ guestCartItemRepository ;
144
152
$ this ->cartItemInterfaceFactory = $ cartItemInterfaceFactory ;
145
- $ this ->fbeHelper = $ fbeHelper ;
153
+ $ this ->guestCouponManagement = $ guestCouponManagement ;
146
154
$ this ->checkoutSession = $ checkoutSession ;
147
155
$ this ->httpRequest = $ httpRequest ;
148
156
$ this ->resultRedirectFactory = $ resultRedirectFactory ;
149
157
$ this ->authenticator = $ authenticator ;
158
+ $ this ->fbeHelper = $ fbeHelper ;
150
159
$ this ->orderHelper = $ orderHelper ;
151
160
}
152
161
@@ -162,6 +171,7 @@ public function execute()
162
171
{
163
172
$ externalBusinessId = $ this ->httpRequest ->getParam ('external_business_id ' );
164
173
$ products = explode (', ' , $ this ->httpRequest ->getParam ('products ' ));
174
+ $ coupon = $ this ->httpRequest ->getParam ('coupon ' );
165
175
$ signature = $ this ->httpRequest ->getParam ('signature ' );
166
176
167
177
$ storeId = $ this ->orderHelper ->getStoreIdByExternalBusinessId ($ externalBusinessId );
@@ -173,9 +183,9 @@ public function execute()
173
183
parse_str ($ query_string , $ params );
174
184
unset($ params ['signature ' ]);
175
185
$ new_query_string = http_build_query ($ params );
176
- $ validation_uri = str_replace ($ query_string , $ new_query_string , $ uri );
186
+ $ validation_uri = urldecode ( str_replace ($ query_string , $ new_query_string , $ uri) );
177
187
178
- if (!$ this ->authenticator ->verifySignature (urldecode ( $ validation_uri) , $ signature )) {
188
+ if (!$ this ->authenticator ->verifySignature ($ validation_uri , $ signature )) {
179
189
$ e = new LocalizedException (__ ('RSA Signature Validation Failed ' ));
180
190
$ this ->fbeHelper ->logExceptionImmediatelyToMeta (
181
191
$ e ,
@@ -185,7 +195,8 @@ public function execute()
185
195
'event_type ' => 'rsa_signature_validation_error ' ,
186
196
'extra_data ' => [
187
197
'request_uri ' => $ uri ,
188
- 'request_signature ' => $ signature
198
+ 'request_signature ' => $ signature ,
199
+ 'validation_uri ' => $ validation_uri
189
200
]
190
201
]
191
202
);
@@ -222,7 +233,7 @@ public function execute()
222
233
}
223
234
224
235
$ quoteIdMask ->setQuoteId ($ quote ->getId ())->save ();
225
- $ quoteIdMaskID = $ quoteIdMask ->getMaskedId ();
236
+ $ cartId = $ quoteIdMask ->getMaskedId ();
226
237
227
238
// Add items to cart
228
239
foreach ($ products as $ product ) {
@@ -233,7 +244,7 @@ public function execute()
233
244
$ cartItem = $ this ->cartItemInterfaceFactory ->create ();
234
245
$ cartItem ->setSku ($ sku );
235
246
$ cartItem ->setQty ($ quantity );
236
- $ cartItem ->setQuoteId ($ quoteIdMaskID );
247
+ $ cartItem ->setQuoteId ($ cartId );
237
248
238
249
$ this ->guestCartItemRepository ->save ($ cartItem );
239
250
} catch (\Exception $ e ) {
@@ -244,8 +255,29 @@ public function execute()
244
255
'event ' => 'meta_checkout_url ' ,
245
256
'event_type ' => 'error_adding_item ' ,
246
257
'extra_data ' => [
247
- 'cart_id ' => $ quote ->getId (),
248
- 'sku ' => $ sku
258
+ 'cart_id ' => $ cartId ,
259
+ 'sku ' => $ sku ,
260
+ 'quantity ' => $ quantity
261
+ ]
262
+ ]
263
+ );
264
+ }
265
+ }
266
+
267
+ // Add coupon to cart
268
+ if ($ coupon ) {
269
+ try {
270
+ $ this ->guestCouponManagement ->set ($ cartId , $ coupon );
271
+ } catch (\Exception $ e ) {
272
+ $ this ->fbeHelper ->logExceptionImmediatelyToMeta (
273
+ $ e ,
274
+ [
275
+ 'store_id ' => $ storeId ,
276
+ 'event ' => 'meta_checkout_url ' ,
277
+ 'event_type ' => 'error_adding_coupon ' ,
278
+ 'extra_data ' => [
279
+ 'cart_id ' => $ cartId ,
280
+ 'coupon ' => $ coupon
249
281
]
250
282
]
251
283
);
@@ -259,4 +291,4 @@ public function execute()
259
291
260
292
return $ resultRedirect ;
261
293
}
262
- }
294
+ }
0 commit comments