Giter VIP home page Giter VIP logo

Comments (7)

fjbender avatar fjbender commented on August 18, 2024

@espressobytes Das kann ich leider nicht reproduzieren. Um welche Magento- und Plugin-Version geht es genau?

from magento-2.

espressobytes avatar espressobytes commented on August 18, 2024

Magento Version 2.1.0
Plugin-Version 1.3.1. (also das letzte Release)

Es wird eine Bestellung angelegt, sobald der User auf "Jetzt zahlen" klickt. Diese Bestellung bleibt vorerst im Status "pending".
Wenn man dann auf "zurück" geht, wird die Warenkorb-Seite aufgerufen (Der Warenkorb ist aber, wie schon gesagt, leer).
Das Verhalten ist reproduzierbar, tritt aber nicht auf, wenn man den Paypal-Express Button verwendet.

from magento-2.

fjbender avatar fjbender commented on August 18, 2024

Ich habe folgendes Setup nachgestellt:

florian@charon:/var/www/html/shops/magento2/210fb$ php bin/magento --version
Magento CLI version 2.1.0
florian@charon:/var/www/html/shops/magento2/210fb$ composer show payone-gmbh/magento-2
name     : payone-gmbh/magento-2
descrip. : PAYONE payment gateway for all German online and offline payment methods including PayPal, all major Credit Cards and Maestro.
keywords : 
versions : * v1.3.1
type     : magento2-module
license  : Open Software License 3.0 (OSL-3.0) (OSI approved) https://spdx.org/licenses/OSL-3.0.html#licenseText
license  : Academic Free License v3.0 (AFL-3.0) (OSI approved) https://spdx.org/licenses/AFL-3.0.html#licenseText
source   : [git] https://github.com/PAYONE-GmbH/magento-2.git f7143bbdfeb867ba322a86c3d6a3f998692985c1
dist     : [zip] https://api.github.com/repos/PAYONE-GmbH/magento-2/zipball/f7143bbdfeb867ba322a86c3d6a3f998692985c1 f7143bbdfeb867ba322a86c3d6a3f998692985c1
names    : payone-gmbh/magento-2
[...]

Auch dort konnte ich das Verhalten nicht reproduzieren. Bitte kontaktieren Sie unseren Technical Support unter 0431/25968-500 oder [email protected] unter Angabe Ihrer Merchant ID und mit Verweis auf diesen Thread. Möglicherweise liegt hier ein anderes Problem vor (z.B. backurl Parameter).

from magento-2.

fjbender avatar fjbender commented on August 18, 2024

Es geht nicht um den "Zurück-Link" in Paypal sondern darum, wenn man im Browser auf den "Zurück-Pfeil" klickt.

Das war die kritische fehlende Information ;) Jetzt kann ich das Verhalten auch reproduzieren. Wir schauen uns das mal an. Danke für den Lösungsvorschlag!

from magento-2.

espressobytes avatar espressobytes commented on August 18, 2024

Hallo,

Hab meinen letzten gelöscht, weil ich noch einen Fehler im Lösungsvorschlag gesehen habe.
Genau, es geht nicht um den "Zurück-Link" in Paypal sondern darum, wenn man im Browser auf den "Zurück-Pfeil" klickt.

Ursache:

In Klasse: Magento/Quote/Model/QuoteManagement
Methode: protected function submitQuote(QuoteEntity $quote, $orderData = [])
...wird (in Zeile 487) das $quote-Objekt auf Inactive gesetzt:

$quote->setIsActive(false);

Das hat zur Folge, dass nach diesem Aufruf jegliche Artikel aus dem Warenkorb fallen, sollte der User wieder auf irgendeine Shopseite kommen.

Lösung

Observer für den Event sales_model_service_quote_submit_success:

<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
    <event name="sales_model_service_quote_submit_success">
        <observer name="paypal_quote_submit" instance="MyNamespace\PayoneFix\Observer\PaypalQuoteSubmit" />
    </event>
</config>

Observer Class:

<?php

namespace MyNamespace\PayoneFix\Observer;

use Magento\Framework\Event\ObserverInterface;

class PaypalQuoteSubmit implements ObserverInterface
{
    /**
     * @param \Magento\Framework\Event\Observer $observer
     * @return $this
     */
    public function execute(\Magento\Framework\Event\Observer $observer)
    {
        /** @var \Magento\Sales\Model\Order $order */
        $order = $observer->getEvent()->getOrder();
        if ($order->getPayment()->getMethod() == "payone_paypal") {
            /** @var \Magento\Quote\Model\Quote $quote */
            $quote = $observer->getEvent()->getQuote();
            $quote->setIsActive(true);
            $quote->setReservedOrderId(null);
        }
        return $this;
    }
}

$quote->setReservedOrderId(null); ist für folgenden Fall wichtig: Der Kunde wird auf die Paypal-Seite gelenkt, dann bricht er die Zahlung ab.
Dann geht er aber wieder auf die Paypal-Seite oder wählt eine andere Bezahlmethode.
Falls $quote->setReservedOrderId(null); nicht im Observer steht, gibt's einen SQL-Fehler, weil nicht zweimal dieselbe Increment-ID vergeben werden kann.

Wie gesagt, es wäre super, wenn ihr das mal nachprüfen könntet.

from magento-2.

smiler51 avatar smiler51 commented on August 18, 2024

Wir haben das gleiche Problem, aber es ist wesentlich schlimmer. Es tritt auch bei Sofort-Überweisung und wahrscheinlich den anderen Zahlungsmethoden auf.

Man bestellt, geht auf die Payment Seite, kommt mit dem Backbutton des Browsers zurück und der Warenkorb ist leer.

Die Bestellung wird aber als bezahlt in Magento verbucht und der Kunde bekommt eine Bestellbestätigung zugeschickt. Er hat aber nie etwas gezahlt.

Wir sind auf Magento 2.1.3 und auf der letzten Release des Plugins. Haben es gestern nochmal installiert.

Danke!

from magento-2.

fjbender avatar fjbender commented on August 18, 2024

@smiler51 Die Bestellung sollte nicht als "Bezahlt" verbucht werden. Hierfür haben wir im Modul das Transaktionsstatus-Mapping, welches sicherstellt, dass Bestellungen nur als "Bezahlt" markiert werden, wenn die Transaktion auch bei Sofort durchgeführt wurde.

Die Bestellung sollte zwar angelegt werden, allerdings im Standard Magento Order Status verharren, bis ein Update durch unsere Plattform erfolgt. Dann sollte der entsprechende Wechsel des Status getriggert werden. Bestellungen, für die kein Transaktionsstatus eingeht wurden auch nicht ordnungsgemäß abgeschlossen.

from magento-2.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.