6
6
use Magento \Framework \Event \Observer ;
7
7
use Magento \Framework \Event \ObserverInterface ;
8
8
use Meta \Conversion \Model \Tracker \Purchase as PurchaseTracker ;
9
- use Magento \Checkout \Model \Session as CheckoutSession ;
10
9
use Meta \Conversion \Model \CapiTracker ;
11
- use Meta \Conversion \Model \CapiEventIdHandler ;
12
10
13
11
class Purchase implements ObserverInterface
14
12
{
@@ -17,17 +15,14 @@ class Purchase implements ObserverInterface
17
15
18
16
public function __construct (
19
17
private readonly PurchaseTracker $ purchaseTracker ,
20
- private readonly CheckoutSession $ checkoutSession ,
21
- private readonly CapiTracker $ capiTracker ,
22
- private readonly CapiEventIdHandler $ capiEventIdHandler
18
+ private readonly CapiTracker $ capiTracker
23
19
) { }
24
20
25
21
public function execute (Observer $ observer ): void
26
22
{
27
- // Purchase event is triggered twice sometimes, to prevent that check if event id is already stored for current request
28
- // if it does prevent the message form being added to the message queue.
29
- if (!$ this ->capiEventIdHandler ->getMetaEventId (self ::EVENT_NAME )) {
30
- $ lastOrderId = $ this ->checkoutSession ->getLastRealOrder ()->getEntityId ();
23
+ $ orderIds = $ observer ->getEvent ()->getOrderIds ();
24
+ $ lastOrderId = !empty ($ orderIds ) ? $ orderIds [0 ] : null ;
25
+ if ($ lastOrderId ) {
31
26
$ payload = $ this ->purchaseTracker ->getPayload (['lastOrder ' => $ lastOrderId ]);
32
27
$ this ->capiTracker ->execute ($ payload , self ::EVENT_NAME , $ this ->purchaseTracker ->getEventType ());
33
28
}
0 commit comments