SwagPaymentPayPalUnified 4.3.3 PayPal: (Webhook) Could not process the request, because no handler has been referenced to this type of event

Hallo zusammen,

bei den Bestellungen die per PayPal „Kredit- oder Debitkarte“ kommen, wird in unserem Shop der Zahlungsstatus nicht gesetzt.

Im Plugin-Logfile steht in diesem Fall „(Webhook) Could not process the request, because no handler has been referenced to this type of event.“

Der Event-Type, der mit dem Webhook kommt ist „PAYMENT.CAPTURE.COMPLETED“

  1. Hat jemand auch dieses Problem?
  2. Ist dieser Event evtl. im Plugin noch nicht abgebildet oder ist es Konfigurationssache?

Liebe Grüße

Verwendet jemand erfolgreich das PayPal Checkout und davon die Zahlungsart „Kredit- oder Debitkarte“ (SwagPaymentPayPalUnifiedAdvancedCreditDebitCard)?
Also die Zahlung an sich funktioniert ja, bloß der Zahlungsstatus wird nicht zurückgeschrieben, weil nach meinem Verständnis Shopware mit dem Webhook-Event PAYMENT.CAPTURE.COMPLETED derzeit nichts anfangen kann.
Es wäre cool wenn sich jemand dazu äußern würde.

Hallo,

wir setzten den Zahlungsstatus direkt nach erstellen der Order. Das sollte eigentlich passieren.

Hi @d.garding,

danke für Deine Rückmeldung. Wie macht ihr das? Bei uns steht das Plugin generell auf „(CAPTURE) Zahlung sofort abschließen“ und im Reiter für „SwagPaymentPayPalUnifiedAdvancedCreditDebitCard“ stehen sonst keine weiteren Optionen.
Nach meinem Verständnis erfolgt das Capture direkt (so wie Du schreibst) über den Webhook. Shopware kann aber wohl derzeit nichts mit dem Webhook anfangen.

Liebe Grüße

Hallo,

wir machen das nicht über den Webhook. Wir prüfen nach dem capture wie der status des capturing ist und setzen entsprechend den ZahlStatus.

Es kann sein das in diesem Fall der Status vergessen worden ist. Ich checke das mal gegen und melde mich dann nochmal!

LG

Dennis Garding

Hallo,

also der Zahlungsstatus sollte gesetzt werden wenn erfolgreich gecaptured wird.

if ($this->isPaymentCompleted($payPalOrderId)) {
            $session->offsetUnset('paypalOrderId');

            $payPalOrder = $this->getPayPalOrder($payPalOrderId);
            if (!$payPalOrder instanceof Order) {
                return;
            }

            if ($payPalOrder->getIntent() === PaymentIntentV2::CAPTURE) {
                $this->paymentStatusService->updatePaymentStatus($payPalOrderId, Status::PAYMENT_STATE_COMPLETELY_PAID);
            } else {
                $this->paymentStatusService->updatePaymentStatus($payPalOrderId, Status::PAYMENT_STATE_RESERVED);
            }

            $this->logger->debug(sprintf('%s REDIRECT TO checkout/finish', __METHOD__));

            $this->redirect([
                'module' => 'frontend',
                'controller' => 'checkout',
                'action' => 'finish',
                'sUniqueID' => $payPalOrderId,
            ]);
        }

Kannst du mal mit loggen was passiert?

Dazu 'logger' => [ 'level' => \Shopware\Components\Logger::DEBUG, ],

in die config.php einfügen. So kann gut verfolgt werden was genau passiert.

LG

Dennis Garding

Habe das Logging laufen. Melde mich sobald eine solche Transaktion noch mal kommt. Komisch ist nur, dass der Webhook zurückkommt und nicht verarbeitet wird: „(Webhook) Could not process the request, because no handler has been referenced to this type of event.“ Event-Type= „PAYMENT.CAPTURE.COMPLETED“