1616use Magento \Framework \Exception \InputException ;
1717use Magento \Framework \Exception \LocalizedException ;
1818use Magento \Framework \Serialize \SerializerInterface ;
19+ use Magento \ReCaptchaPaypal \Model \ReCaptchaSession ;
1920use Magento \ReCaptchaUi \Model \CaptchaResponseResolverInterface ;
2021use Magento \ReCaptchaUi \Model \ErrorMessageConfigInterface ;
2122use Magento \ReCaptchaUi \Model \IsCaptchaEnabledInterface ;
@@ -76,6 +77,11 @@ class PayPalObserver implements ObserverInterface
7677 */
7778 private $ validationErrorMessagesProvider ;
7879
80+ /**
81+ * @var ReCaptchaSession
82+ */
83+ private $ reCaptchaSession ;
84+
7985 /**
8086 * @param CaptchaResponseResolverInterface $captchaResponseResolver
8187 * @param ValidationConfigResolverInterface $validationConfigResolver
@@ -86,6 +92,7 @@ class PayPalObserver implements ObserverInterface
8692 * @param LoggerInterface $logger
8793 * @param ErrorMessageConfigInterface|null $errorMessageConfig
8894 * @param ValidationErrorMessagesProvider|null $validationErrorMessagesProvider
95+ * @param ReCaptchaSession|null $reCaptchaSession
8996 */
9097 public function __construct (
9198 CaptchaResponseResolverInterface $ captchaResponseResolver ,
@@ -96,7 +103,8 @@ public function __construct(
96103 IsCaptchaEnabledInterface $ isCaptchaEnabled ,
97104 LoggerInterface $ logger ,
98105 ?ErrorMessageConfigInterface $ errorMessageConfig = null ,
99- ?ValidationErrorMessagesProvider $ validationErrorMessagesProvider = null
106+ ?ValidationErrorMessagesProvider $ validationErrorMessagesProvider = null ,
107+ ?ReCaptchaSession $ reCaptchaSession = null
100108 ) {
101109 $ this ->captchaResponseResolver = $ captchaResponseResolver ;
102110 $ this ->validationConfigResolver = $ validationConfigResolver ;
@@ -109,6 +117,8 @@ public function __construct(
109117 ?? ObjectManager::getInstance ()->get (ErrorMessageConfigInterface::class);
110118 $ this ->validationErrorMessagesProvider = $ validationErrorMessagesProvider
111119 ?? ObjectManager::getInstance ()->get (ValidationErrorMessagesProvider::class);
120+ $ this ->reCaptchaSession = $ reCaptchaSession
121+ ?? ObjectManager::getInstance ()->get (ReCaptchaSession::class);
112122 }
113123
114124 /**
@@ -148,6 +158,9 @@ public function execute(Observer $observer): void
148158 $ validationResult ->getErrors (),
149159 $ key
150160 );
161+ } elseif ($ this ->isCaptchaEnabled ->isCaptchaEnabledFor ('place_order ' )) {
162+ // Extend reCaptcha verification to place order
163+ $ this ->reCaptchaSession ->save ();
151164 }
152165 }
153166 }
0 commit comments