# Freitextfelder bei Zahlung mit Paypal

**URL:** <https://forum.shopware.com/t/freitextfelder-bei-zahlung-mit-paypal/43603>\
**Category:** Programmierung\
**Created:** [10. Februar 2017 um 16:13 UTC](https://forum.shopware.com/t/freitextfelder-bei-zahlung-mit-paypal/43603 "2017-02-10T16:13:10Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Konsti](https://avatars.discourse-cdn.com/v4/letter/k/35a633/32.png) [@Konsti](https://forum.shopware.com/u/Konsti)\
**Post date:** [10. Februar 2017 um 16:13 UTC](https://forum.shopware.com/t/freitextfelder-bei-zahlung-mit-paypal/43603/1 "2017-02-10T16:13:10Z")

</div>

Hallo Shopware Community,

ich habe ein Plugin erstellt welches den Benutzer vor dem Checkout fragt in welcher Filiale er seine Bestellung abholen möchte. Dies passiert über ein Select Feld. Die gewählte Option wird dann in das Freitextfeld „attribut2“ gespeichert.

Wird als Zahlungsmethode Vorkasse gewählt so funktioniert das Plugin auch einwandfrei.

Wenn ich nun allerdings über PayPal bezahle kriege ich nach Abschluss der Zahlung und Rückkehr in den Shop nicht mehr die entsprechende POST Variable.  
Dadurch bleibt das Freitextfeld leer.

Meine Frage ist nun wie ich an diese Parameter dran komme nach der Rückkehr von Paypal. Werden die Bestelldaten irgendwo zwischengespeichert?

Ich benutze Shopware 5.2.16

Meine Bootstrap.php:

```
 true,
            'update' => true,
            'enable' => true
        );
    }

    public function getLabel()
    {
        return 'Auswahl der Abholfiliale';
    }

    public function getVersion()
    {
        return '1.0.0';
    }

    public function getInfo()
    {
        return array(
            'version' => $this->getVersion(),
            'label' => $this->getLabel(),
            'author' => 'XXX',
            'supplier' => 'XXX',
            'description' => 'Auswahl der Abholfiliale auf der Bestätigungsseite des Bestellabschlusses',
            'support' => 'XXX',
            'link' => 'XXX'
        );
    }

    public function install()
    {
        $this->registerEvents();
        return array('success' => true, 'invalidateCache' => array('frontend'));
    }

    public function uninstall()
    {
        return array('success' => true, 'invalidateCache' => array('frontend'));
    }

    private function registerEvents()
    {
        $this->subscribeEvent('Enlight_Controller_Action_PreDispatch_Frontend_Checkout','onPreDispatchCheckout');
        $this->subscribeEvent('Enlight_Controller_Action_PostDispatch_Frontend_Checkout','onPostDispatchCheckout');
        $this->subscribeEvent('Theme_Compiler_Collect_Plugin_Less','onCollectLessFiles');
        $this->subscribeEvent('Theme_Compiler_Collect_Plugin_Javascript','onCollectJsFiles');
        $this->subscribeEvent('sOrder::sSaveOrder::before','onSaveOrder',0);
    }

    public function onCollectLessFiles()
    {
        return new \Shopware\Components\Theme\LessDefinition(
            [],
            [__DIR__. '/Views/frontend/_public/src/less/all.less']
        );
    }

    public function onCollectJsFiles(Enlight_Event_EventArgs $args)
    {
        $jsFiles = array( __DIR__. '/Views/frontend/_public/src/js/script.js');
        return new Doctrine\Common\Collections\ArrayCollection($jsFiles);
    }

    public function onPreDispatchCheckout(Enlight_Event_EventArgs $arguments)
    {
        $subject = $arguments->getSubject();
        $request = $subject->Request();
        $response = $subject->Response();
        $action = $request->getActionName();
        $view = $subject->View();

        $view->addTemplateDir( __DIR__. '/Views');

        if (!$request->isDispatched() || $response->isException() || !$view->hasTemplate()) {
            return;
        }

        $customerId = Shopware()->Session()->sUserId;
        if ($action !== "finish" || $customerId === null) {
            return;
        }

        $customer = Shopware()->Models()->find('Shopware\Models\Customer\Customer', $customerId);
        if (!$customer) {
            return;
        }

        if($request->getParam('pick-up-department') == ''){
            $subject->forward('confirm', 'checkout', 'frontend', array('pickUpDepartmentSelected' => false));
        }

        if($action == "finish"){
            $view->assign('pickUpDepartment', $request->getParam('pick-up-department'));
        }
    }

    public function onPostDispatchCheckout(Enlight_Event_EventArgs $arguments)
    {
        $subject = $arguments->getSubject();
        $request = $subject->Request();
        $response = $subject->Response();
        $action = $request->getActionName();
        $view = $subject->View();

        if ( $action !== 'confirm' || !$request->isDispatched() ||
        $response->isException() || !$view->hasTemplate()) {
            return;
        }

        if ($request->has('pick-up-department')) {
            $view->assign('pickUpDepartment', $request->getParam('pick-up-department'));
        }
    }

    public function onSaveOrder(Enlight_Hook_HookArgs $args)
    {
        $order = $args->getSubject();
        $order->o_attr_2 = Shopware()->System()->_POST['pick-up-department'];
    }

}

```

Vielen Dank im vorraus für jede Hilfe!

Liebe Grüße,

Konsti

---

<div class="post-metadata">

**Author:** ![gwen](https://avatars.discourse-cdn.com/v4/letter/g/e36b37/32.png) [@gwen](https://forum.shopware.com/u/gwen)\
**Post date:** [11. September 2019 um 09:37 UTC](https://forum.shopware.com/t/freitextfelder-bei-zahlung-mit-paypal/43603/2 "2019-09-11T09:37:16Z")

</div>

Shopware hatte voriges Jahr das gleiche Problem mit seinem Kommentarfeld, wenn über Paypal bezhalt wurde.  
Ich habe bisher nicht herusgefunden, wie es programiert wurde, dass es funktioniert.

Hast du denn bereits eine Lösung gefunden?  
Ich hänge nämlich an dem gleichen Problem.  
&nbsp;

Ich&nbsp;nutze aber das Event&nbsp;Shopware\_Modules\_Order\_SendMail\_FilterVariables

und schreibe meinen Wert über&nbsp;

```
$attr_feld = Shopware()->Session()->attribute_field;
$orderModel->setAttribute6( $attr_feld );
....

```

in die&nbsp;&nbsp;s\_order\_attributes

Allerdings wird dann immer der letzte Wert, der noch in der Session drin ist, gespeichert, statt dem neuen Wert aus dem Eingabefeld zu speichern.

---

<div class="post-metadata">

**Author:** ![BatsiDrama](https://avatars.discourse-cdn.com/v4/letter/b/8c91f0/32.png) [@BatsiDrama](https://forum.shopware.com/u/BatsiDrama)\
**Post date:** [17. September 2019 um 12:29 UTC](https://forum.shopware.com/t/freitextfelder-bei-zahlung-mit-paypal/43603/3 "2019-09-17T12:29:52Z")

</div>

Shopware\_Controllers\_Frontend\_Checkout::saveOrder::after  
Enlight\_Controller\_Action\_Frontend\_Checkout\_Finish  
Enlight\_Controller\_Action\_Frontend\_Checkout\_Confirm

Das sind die möglichen Hooks/Events.  
Da dann einfach mal die $args-\>getSubject(), $args-\>getReturn() checken.  
So haben wir es im Endeffekt umgesetzt

---

<div class="post-metadata">

**Author:** ![gwen](https://avatars.discourse-cdn.com/v4/letter/g/e36b37/32.png) [@gwen](https://forum.shopware.com/u/gwen)\
**Post date:** [16. Oktober 2019 um 16:09 UTC](https://forum.shopware.com/t/freitextfelder-bei-zahlung-mit-paypal/43603/4 "2019-10-16T16:09:01Z")

</div>

Das speichern am Ende mit checkout\_finish etc.&nbsp;in die Datenbank ist kein Problem.

Das Problem ist noch, dass der Wert im Eingabefeld erneut mit&nbsp;$request-\>getParam(’) oder&nbsp;$request-\>getPost() nicht übernommen wird,sondern nur, wenn direkt post mit Vorkasse gespeichert wird.

---

<div class="post-metadata">

**Author:** ![fliegfix\_block](https://avatars.discourse-cdn.com/v4/letter/f/7cd45c/32.png) [@fliegfix\_block](https://forum.shopware.com/u/fliegfix_block)\
**Post date:** [24. Januar 2022 um 16:28 UTC](https://forum.shopware.com/t/freitextfelder-bei-zahlung-mit-paypal/43603/5 "2022-01-24T16:28:59Z")

</div>

Ich stehe derzeit vor dem gleichen Problem. Wurde jemals eine Loesung dafuer gefunden? Bei mir betrifft es PayPal und Klarna.
