1010use Sylius \Component \Core \OrderCheckoutTransitions ;
1111use Sylius \PayPalPlugin \Manager \PaymentStateManagerInterface ;
1212use Sylius \PayPalPlugin \Provider \OrderProviderInterface ;
13+ use Sylius \PayPalPlugin \Provider \PaymentProviderInterface ;
1314use Symfony \Component \HttpFoundation \JsonResponse ;
1415use Symfony \Component \HttpFoundation \Request ;
1516use Symfony \Component \HttpFoundation \Response ;
@@ -23,6 +24,9 @@ final class CompletePayPalOrderAction
2324 /** @var UrlGeneratorInterface */
2425 private $ router ;
2526
27+ /** @var PaymentProviderInterface */
28+ private $ paymentProvider ;
29+
2630 /** @var OrderProviderInterface */
2731 private $ orderProvider ;
2832
@@ -35,24 +39,25 @@ final class CompletePayPalOrderAction
3539 public function __construct (
3640 PaymentStateManagerInterface $ paymentStateManager ,
3741 UrlGeneratorInterface $ router ,
42+ PaymentProviderInterface $ paymentProvider ,
3843 OrderProviderInterface $ orderProvider ,
3944 FactoryInterface $ stateMachineFactory ,
4045 ObjectManager $ orderManager
4146 ) {
4247 $ this ->paymentStateManager = $ paymentStateManager ;
4348 $ this ->router = $ router ;
49+ $ this ->paymentProvider = $ paymentProvider ;
4450 $ this ->orderProvider = $ orderProvider ;
4551 $ this ->stateMachineFactory = $ stateMachineFactory ;
4652 $ this ->orderManager = $ orderManager ;
4753 }
4854
4955 public function __invoke (Request $ request ): Response
5056 {
51- $ id = (int ) $ request ->attributes ->get ('id ' );
52- $ order = $ this ->orderProvider ->provideOrderById ($ id );
57+ $ id = $ request ->query ->get ('id ' );
58+ $ payment = $ this ->paymentProvider ->getByPayPalOrderId ($ id );
59+ $ order = $ payment ->getOrder ();
5360
54- /** @var PaymentInterface $payment */
55- $ payment = $ order ->getLastPayment (PaymentInterface::STATE_PROCESSING );
5661 $ this ->paymentStateManager ->complete ($ payment );
5762
5863 $ stateMachine = $ this ->stateMachineFactory ->get ($ order , OrderCheckoutTransitions::GRAPH );
0 commit comments