Artikel Download mit Paypal "Die Bezahlung der Bestellung ist noch nicht abgeschlossen."


#1

Hallo,

wenn ich mit Paypal den Downloadartikel bezahle, so wird mir die Bestätigungsmail zugeschickt. In der Mail steht der Downloadlink leider nicht drin - dort steht dann:

### Laden Sie Ihre bestellten Dateien hier herunter.

Endfassung_Be_Happy_ganzes_Heft_240516-verkleinert.pdf **Die Bezahlung der Bestellung ist noch nicht abgeschlossen.**

Wenn ich ins Backend gehe, so ist der Artikel als bezahlt markiert und ich kann den Link über bestellte Downloadlinks versenden erneut versenden und in der Mail ist dann auch der Downloadlink enthalten:

### Laden Sie Ihre bestellten Dateien hier herunter.

* [Endfassung_Be_Happy_ganzes_Heft_240516-verkleinert.pdf] 3.5 MB

Die Bestätigungsmail wird vor der Antwort von Paypal rausgeschickt:

Aus dem Mailheader:

for <[email protected]>; Fri, 12 Oct 2018 11:11:48 +0200 (CEST)

Die Antwort von Paypal aus der oepaypal.log:

======================= IPN Request by PayPal [2018-10-12 11:11:57] ======================= #

Was ist hier zu tun?

Verwendete Versionen:

Community Edition 6.1.0
PayPal Version: 5.2.2 Autor: OXID eSales AG

Guido


#2

Das gleiche Problem haben wir auch schon seit Jahren und bisher haben wir keine Lösung gefunden :frowning:
Es ist ziemlich nervig, wenn man immer wieder extra in den Admin gehen muss, um den Versand auszulösen.
Bei uns im Einsatz:
PE 4.10.1
Paypal Modul: Oxid 3.2.3

Viele Grüße
Magnus


#3

OK, ich habe eine “vorläufige” Lösung:

in vendor/oxid-esales/oxideshop-ce/source/Application/Model/Order.php

um die Zeile 522 folgendes einfügen:

        $db = \OxidEsales\Eshop\Core\DatabaseProvider::getDb();
        $query = 'select oxpaid from oxorder where oxid=?';
        $paymentDate = $db->getOne($query, array($this->getId()));
        $this->oxorder__oxpaid = new \OxidEsales\Eshop\Core\Field($paymentDate);

Hier mit Zeilen die vor und nach dem Code sein müssen:

    // executing payment (on failure deletes order and returns error code)
    // in case when recalculating order, payment execution is skipped
    if (!$blRecalculatingOrder) {
        $blRet = $this->_executePayment($oBasket, $oUserPayment);
        if ($blRet !== true) {
            return $blRet;
        }
        $db = \OxidEsales\Eshop\Core\DatabaseProvider::getDb();
        $query = 'select oxpaid from oxorder where oxid=?';
        $paymentDate = $db->getOne($query, array($this->getId()));
        $this->oxorder__oxpaid = new \OxidEsales\Eshop\Core\Field($paymentDate);
    }

    if (!$this->oxorder__oxordernr->value) {
        $this->_setNumber();
    } else {
        oxNew(\OxidEsales\Eshop\Core\Counter::class)->update($this->_getCounterIdent(), $this->oxorder__oxordernr->value);
    }

Und wie immer ohne Gewähr :wink:

Guido


#4

Hallo,

ich habe gerade gesehen:

"Keine gute Idee!"

Wenn man nun per Vorkasse bestellt, wird der Download ohne Bezahlung mit der Mail ausgeliefert. Wäre ja auch zu einfach gewesen.

Guido


#5

Hallo Guido,
wir hatten das Problem auch bei mehreren Shops. Der zeitliche Versatz zwischen “Paypal markiert die Bestellung als bezahlt” und “Bestellemail wird verschickt” ist hier nicht so einfach zu lösen.

Wir nutzen daher bei Shops mit Paypal und die Download-Artikel anbieten einen Workaround. In der Email verlinken wir den Download-Artikel nicht direkt, sondern verlinken den “Meine-Downloads”-Bereich und weisen darauf hin, dass der Kunde seine Artikel dort herunterladen kann. Dann ist es für den Kunden zwar ein Klick mehr, aber er hat gleich Zugriff auf die Dateien und es gibt keine Verwirrung wegen bezahlt/nicht bezahlt.

Grüße
Fabian