handle($donation); return new RedirectResponse(give_get_success_page_uri()); } if ($command instanceof PaymentProcessing) { $handler = new PaymentProcessingHandler($command); $handler->handle($donation); return new RedirectResponse(give_get_success_page_uri()); } if ($command instanceof PaymentPending) { $handler = new PaymentPendingHandler($command); $handler->handle($donation); return new RedirectResponse(give_get_success_page_uri()); } if ($command instanceof PaymentRefunded) { $handler = new PaymentRefundedHandler($command); $handler->handle($donation); $url = isset($_REQUEST['_wp_http_referer']) ? home_url($_REQUEST['_wp_http_referer']) : home_url('/'); return new RedirectResponse($url); } if ($command instanceof RedirectOffsite) { return (new RedirectOffsiteHandler())($command); } if ($command instanceof RespondToBrowser) { return (new RespondToBrowserHandler())($command); } throw new TypeNotSupported( sprintf( "Return type must be an instance of %s", GatewayCommand::class ) ); } }