# State\_enter.order\_transaction.state.paid und keine Transaktionsdaten

**URL:** https://forum.shopware.com/t/state-enter-order-transaction-state-paid-und-keine-transaktionsdaten/94186
**Category:** Programmierung
**Created:** [2. Mai 2022 um 07:58 UTC](https://forum.shopware.com/t/state-enter-order-transaction-state-paid-und-keine-transaktionsdaten/94186 "2022-05-02T07:58:29Z")
**Posts on this page:** 3
**Page:** 1

<div class="post-metadata">

### Author: ![zellenkur](https://avatars.discourse-cdn.com/v4/letter/z/df788c/32.png) [@zellenkur](https://forum.shopware.com/u/zellenkur)
#### Post date: [2. Mai 2022 um 07:58 UTC](https://forum.shopware.com/t/state-enter-order-transaction-state-paid-und-keine-transaktionsdaten/94186/1 "2022-05-02T07:58:29Z")

</div>

Hallo,

ich schreibe ein Plugin, bei dem ich nach Bezahlung die Bestelldaten weiter verarbeiten will. Leider bekomme ich keine OrderTransactionCollection von der StateMachineStateEntity und kann daher die Bezahlmethode nicht herausfinden. Letztendlich will ich auch die PayPal-TransaktionsID verarbeiten.

Hier eine gekürzte Version:

```auto
<?php declare(strict_types=1);

use Psr\Log\LoggerInterface;
use Shopware\Core\Checkout\Order\Event\OrderStateMachineStateChangeEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class OrderTransactionStatePaidListener implements EventSubscriberInterface
{
    /**
     * @var Client
     */
    private Client $client;

    /**
     * @var LoggerInterface
     */
    private LoggerInterface $logger;

    public function __construct(LoggerInterface $logger) {
        $this->logger = $logger;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            'state_enter.order_transaction.state.paid' => 'onOrderTransactionStatePaid',
        ];
    }

    public function onOrderTransactionStatePaid(OrderStateMachineStateChangeEvent $event): void
    {
        $order = $event->getOrder();
        $orderCustomer = $order->getOrderCustomer();
        $customer = $orderCustomer->getCustomer();
        $deliveries = $order->getDeliveries();
        $shippingAddress = $deliveries->getShippingAddress()->first();
        $billingAddress = $order->getBillingAddress();

        $stateMachineState = $order->getStateMachineState();
        $orderTransactions = $stateMachineState->getOrderTransactions();

        if ($orderTransactions !== null) {
            $orderTransaction = $orderTransactions->filterByState('paid')->first();
            $this->logger->info('payment method', [$orderTransaction->getPaymentMethod()->getName()]);
        } else {
            $this->logger->info('No order transaction there', ['order number' => $order->getOrderNumber()]);
        }

        if ($billingAddress === null) {
            $billingAddress = $shippingAddress;
            $this->logger->info('Billing address not found, using shipping address',
                ['Order Number', $order->getOrderNumber()]
            );
        }
    }
}

```

Wieso bekomme ich bei $stateMachineState-\>getOrderTransactions() „null“ zurück? Und wieso bekomme ich ebenso „null“ bei $order-\>getBillingAddress()?

Liebe Grüße  
Sebastian

---

<div class="post-metadata">

### Author: ![chroot](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/chroot/32/16651_2.png) [@chroot](https://forum.shopware.com/u/chroot)
#### Post date: [2. Mai 2022 um 08:35 UTC](https://forum.shopware.com/t/state-enter-order-transaction-state-paid-und-keine-transaktionsdaten/94186/2 "2022-05-02T08:35:48Z")

</div>

Meine Vermutung ist, dass es sich um eine Optimierung handelt. Aufträge (generell Assoziationen) werden nicht geladen, da sie zusätzliche Datenbank-Queries bedeuten. Wenn alles eifrig geladen würde, schießen die Queries in die Höhe, ebenso deine Shop-Antwortzeiten.

Du kannst die benötigten Daten mit Repositories explizit nachladen.

---

<div class="post-metadata">

### Author: ![zellenkur](https://avatars.discourse-cdn.com/v4/letter/z/df788c/32.png) [@zellenkur](https://forum.shopware.com/u/zellenkur)
#### Post date: [2. Mai 2022 um 11:53 UTC](https://forum.shopware.com/t/state-enter-order-transaction-state-paid-und-keine-transaktionsdaten/94186/3 "2022-05-02T11:53:58Z")

</div>

Danke, so hat es funktioniert über die Repositories!
