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