PayPal 6.0.0 Plugin Problem - PayPal tracking API

Hallo,

wir haben hier einen Shop (5.7.16, PHP 7.4), bei dem seit Update auf die neueste PayPal Version 6.0.0 das Problem auftritt, dass der Bestellstatus nicht mehr geändert werden kann - folgende Fehlermeldung erscheint und deutet auf einen Zusammenhang mit der Änderung (PT-12725 - PayPal tracking API hinzugefügt) hin:

Beim Speichern der Bestellung 413890 ist ein Fehler aufgetreten.<br> Client error: `POST https://api-m.paypal.com/v1/shipping/trackers-batch` resulted in a `400 Bad Request` response: {"name":"VALIDATION_ERROR","message":"Invalid request - see details","debug_id":"f25c7285abd55","details":[],"links":[]}

Ich finde jedoch auch keine Einstellmöglichkeiten zu dieser Tracking API.

Hat noch jemand das Problem ? In anderen betreuten Shops tritt das Problem bisher nicht auf.

Debug Log:

[2022-12-19T17:25:02.801242+01:00] plugin.ERROR: PayPal: GOT ERROR WHILE REQUEST OF TYPE (POST) TO URL: https://api-m.paypal.com/v1/shipping/trackers-batch {„payload“:„{"trackers":[{"transaction_id":"7C378250283193349","tracking_number":"00340434666580658859,00340434666580658866,00340434666580658873,00340434666580658880","status":"SHIPPED","carrier":""}]}“,„headers“:„{"Authorization":"Bearer A21AANsgTrtpwD8kNnyTxn5jGdayxLLyragnaoURg9DPP1LbcW1yAsksnpvjrxFluU0rJS8J5wXTxYflypyDKJWcgpsb5k19w","content-type":"application\/json"}“,„exception“:{„message“:„Client error: POST https://api-m.paypal.com/v1/shipping/trackers-batch resulted in a 400 Bad Request response:\n{"name":"VALIDATION_ERROR","message":"Invalid request - see details","debug_id":"f25c7285abd55","details":,"links":}\n“,„trace“:„#0 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/custom/plugins/SwagPaymentPayPalUnified/PayPalBundle/Services/ClientService.php(155): Shopware\Components\HttpClient\GuzzleHttpClient->post()\n#1 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/custom/plugins/SwagPaymentPayPalUnified/PayPalBundle/Resources/ShippingResource.php(37): SwagPaymentPayPalUnified\PayPalBundle\Services\ClientService->sendRequest()\n#2 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/custom/plugins/SwagPaymentPayPalUnified/Subscriber/Carrier.php(194): SwagPaymentPayPalUnified\PayPalBundle\Resources\ShippingResource->batch()\n#3 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/custom/plugins/SwagPaymentPayPalUnified/Subscriber/Carrier.php(163): SwagPaymentPayPalUnified\Subscriber\Carrier->sendTrackingData()\n#4 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Library/Enlight/Event/Handler/Default.php(90): SwagPaymentPayPalUnified\Subscriber\Carrier->syncCarrier()\n#5 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Library/Enlight/Event/EventManager.php(207): Enlight_Event_Handler_Default->execute()\n#6 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Shopware/Components/Model/EventSubscriber.php(200): Enlight_Event_EventManager->notify()\n#7 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Shopware/Components/Model/EventSubscriber.php(139): Shopware\Components\Model\EventSubscriber->notifyEvent()\n#8 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/vendor/doctrine/event-manager/lib/Doctrine/Common/EventManager.php(41): Shopware\Components\Model\EventSubscriber->postUpdate()\n#9 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/vendor/doctrine/orm/lib/Doctrine/ORM/Event/ListenersInvoker.php(98): Doctrine\Common\EventManager->dispatchEvent()\n#10 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(1228): Doctrine\ORM\Event\ListenersInvoker->invoke()\n#11 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php(436): Doctrine\ORM\UnitOfWork->executeUpdates()\n#12 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php(403): Doctrine\ORM\UnitOfWork->commit()\n#13 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Shopware/Controllers/Backend/Order.php(556): Doctrine\ORM\EntityManager->flush()\n#14 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/var/cache/production_202211020949/proxies/ShopwareControllersBackendOrderProxy.php(78): Shopware_Controllers_Backend_Order->saveAction()\n#15 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Library/Enlight/Hook/HookExecutionContext.php(131): Shopware_Proxies_ShopwareControllersBackendOrderProxy->__executeOriginalMethod()\n#16 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Library/Enlight/Hook/HookExecutionContext.php(100): Enlight_Hook_HookExecutionContext->executeReplaceChain()\n#17 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Library/Enlight/Hook/HookManager.php(172): Enlight_Hook_HookExecutionContext->execute()\n#18 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/var/cache/production_202211020949/proxies/ShopwareControllersBackendOrderProxy.php(137): Enlight_Hook_HookManager->executeHooks()\n#19 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Library/Enlight/Controller/Action.php(187): Shopware_Proxies_ShopwareControllersBackendOrderProxy->saveAction()\n#20 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Library/Enlight/Controller/Dispatcher/Default.php(467): Enlight_Controller_Action->dispatch()\n#21 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Library/Enlight/Controller/Front.php(225): Enlight_Controller_Dispatcher_Default->dispatch()\n#22 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Shopware/Kernel.php(197): Enlight_Controller_Front->dispatch()\n#23 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/vendor/symfony/http-kernel/HttpCache/SubRequestHandler.php(85): Shopware\Kernel->handle()\n#24 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/vendor/symfony/http-kernel/HttpCache/HttpCache.php(479): Symfony\Component\HttpKernel\HttpCache\SubRequestHandler::handle()\n#25 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Shopware/Components/HttpCache/AppCache.php(266): Symfony\Component\HttpKernel\HttpCache\HttpCache->forward()\n#26 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/vendor/symfony/http-kernel/HttpCache/HttpCache.php(269): Shopware\Components\HttpCache\AppCache->forward()\n#27 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Shopware/Components/HttpCache/AppCache.php(106): Symfony\Component\HttpKernel\HttpCache\HttpCache->pass()\n#28 /var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/shopware.php(122): Shopware\Components\HttpCache\AppCache->handle()\n#29 {main}“,„code“:400,„file“:„/var/www/vhosts/shopdomain/httpdocs/_shopdomain/v1/engine/Shopware/Components/HttpClient/GuzzleHttpClient.php“,„line“:158,„body“:"{"name":"VALIDATION_ERROR","message":"Invalid request - see details","debug_id":"f25c7285abd55","details":,"links":

Viele Grüße

Moin,

hast du mehrere Tracking-ids an einer Bestellung?

Wie sehe ich das ? In den Bestellungen sehe ich nur einen einzigen Tracking-Code und alles, was gemacht wurde, ist von PayPal Plugin 5.0.4 auf 6.0.0 zu aktualisieren und seitdem tritt der Fehler auf.

Viele Grüße

Komisch ist das oben im Log scheinbar mehrere Nummern stehen:

tracking_number":„00340434666580658859,00340434666580658866,00340434666580658873,00340434666580658880“

Kann man die Übertragung der Tracking Nummer irgendwo abschalten ? Wird soweit mir bekannt vom Kunden nicht genutzt.

Viele Grüße

Aktuell haben wir keinen Switch dazu. Was du machen könntest ist im code was auskommentieren.

\SwagPaymentPayPalUnified\Subscriber\Carrier::getSubscribedEvents

wenn du hier einen leeren Array zurück gibts sollte es nicht mehr synchronisiert werden

Hast Du hierzu ein genaues Code-Beispiel, bin nicht wirklich der Coder …

Danke

Es sollte nachher so aussehen.

    /**
     * {@inheritdoc}
     */
    public static function getSubscribedEvents()
    {
        return [
//            'Shopware_Modules_Order_SaveOrder_FilterAttributes' => 'onFilterOrderAttributes',
//            'Shopware\Models\Order\Order::postUpdate' => 'syncCarrier',
//            'Shopware\Models\Order\Order::postPersist' => 'syncCarrier',
        ];
    }
1 Like

Funktioniert, vielen Dank!

Haben das Problem leider auch mit der „Trackingnummer“

https://leo-express.de/sendungsverfolgung/?sendungsnummer=123456789

… hat sonst immer in der Form geklappt.

Moin ,

was genau ist denn das Problem ProWebs?

Wir haben genau das selbe Problem.
Vor dem Update wurde anscheinend die Trackingnummer nicht nach PayPal übertragen.

Teils wurde ein Text von den Mitarbeitern verfasst anstatt nur die Trackingnummer z.B.
Versand am DIENSTAG, 20. DEZEMBER 2022 mit POST Nr. 123AD36802348
(Wir wissen das war so auch nicht korrekt)

Selbst wenn wir jetzt die Trackingnummer einkürzen auf die Trackingnummer 123AD36802348 und speichern wird trotzdem der vorherige Text gezogen „Versand am DIENSTAG, 20. DEZEMBER 2022 mit POST Nr. 123AD36802348“

Uns hat auch nur das auskommentieren der return values in getSubscribedEvents() geholfen.

Ein switch um das übertragen zu aktivieren/deaktivieren ist hilfreich.

Gibt es eine technische Möglichkeit zu verhindern, dass die Mitarbeiter das Feld Trackingnummemr als Freitextfeld verwenden?

Hallo,

ich habe nun auch den nächsten Fall - offenbar wurde nicht bedacht, dass eine Sendung aus mehreren Paketen bestehen kann (es also mehrere Tracking ID´s gibt oder Teillieferungen erfolgen und Mitarbeiter dies entsprechend im Feld hinterlegen).

Viele Grüße

image

Ist mir heute erst aufgefallen bei v4. War das schon immer da?

Immer nicht, aber schon länger

Das stimmt leider, wir arbeiten daran!

1 Like

Stimmt. Wenn es schon immer da gewesen wäre, wäre es mir wohl in den letzten Jahren aufgefallen :-))

Es kann scheinbar keine URL bei den Trackinginformationen hinterlegt werden. Sonst folgt der gleiche Fehler von PayPal wie oben erwähnt und es wird nicht gespeichert. Wir haben leider auch Lieferdienste, wo wir die komplette URL hinterlegen müssen und nicht nur die Trackingcodenummer …

@ProWebs

welchen Carrier nutzt du denn?

Wir nutzen viele Versanddienstleister … die URLs fürgen wir bei Speditionen ein. Das kann Dachser, Cargo, der Kurier, Hanold, etc. sein … Bei DHL, UPS, DPD, GLS parsen wir die Trackingnummern in den E-Mail Templates, so dass die URL erst dort generiert wird.