Issue:
Bug: [BUG]: connector request is being built twice



### Bug Description

When a payment is confirmed, the `connector_request` log is being printed twice

### Expected Behavior

It should be printed only once

### Actual Behavior

Two instances of the log line can be found 

### Steps To Reproduce

- Create a payment with `confirm` = `true`
- Search for log with `connector_request` tag 



### Context For The Bug

_No response_

### Environment

Are you using hyperswitch hosted version? No


### Have you spent some time checking if this bug has been raised before?

- [X] I checked and didn't find a similar issue

### Have you read the Contributing Guidelines?

- [X] I have read the [Contributing Guidelines](https://github.com/juspay/hyperswitch/blob/main/docs/CONTRIBUTING.md)

### Are you willing to submit a PR?

Yes, I am willing to submit a PR!

Pull request description:
## Type of Change
<!-- Put an `x` in the boxes that apply -->

- [x] Bugfix

## Description
<!-- Describe your changes in detail -->
This PR fixes the duplicate request that was being constructed even if the connector_request already exists.


## Motivation and Context
<!--
Why is this change required? What problem does it solve?
If it fixes an open issue, please link to the issue here.

If you don't have an issue, we'd recommend starting with one first so the PR
can focus on the implementation (unless it is an obvious bug or documentation fix
that will have little conversation).
-->
The `or()` function does eager evaluation. This means that even if there is Some(val) the part of code in the or part is evaluated. This is causing the request to be constructed twice.

Fixes #3799 

## How did you test it?
<!--
Did you write an integration/unit/API test to verify the code changes?
Or did you test this change manually (provide relevant screenshots)?
-->
- Manual, compiler guided.
- Create a payment and check if `connector_request` is logged only once.

## Checklist
<!-- Put an `x` in the boxes that apply -->

- [x] I formatted the code `cargo +nightly fmt --all`
- [x] I addressed lints thrown by `cargo clippy`
- [x] I reviewed the submitted code


Testing:

- Manual, compiler guided.
- Create a payment and check if `connector_request` is logged only once.

Patch:
diff --git a/crates/router/src/services/api.rs b/crates/router/src/services/api.rs
index 1c4d1810c88..45decfd451d 100644
--- a/crates/router/src/services/api.rs
+++ b/crates/router/src/services/api.rs
@@ -338,30 +338,31 @@ where
                 ],
             );
 
-            let connector_request = connector_request.or(connector_integration
-                .build_request(req, &state.conf.connectors)
-                .map_err(|error| {
-                    if matches!(
-                        error.current_context(),
-                        &errors::ConnectorError::RequestEncodingFailed
-                            | &errors::ConnectorError::RequestEncodingFailedWithReason(_)
-                    ) {
-                        metrics::REQUEST_BUILD_FAILURE.add(
-                            &metrics::CONTEXT,
-                            1,
-                            &[metrics::request::add_attributes(
-                                "connector",
-                                req.connector.to_string(),
-                            )],
-                        )
-                    }
-                    error
-                })?);
+            let connector_request = match connector_request {
+                Some(connector_request) => Some(connector_request),
+                None => connector_integration
+                    .build_request(req, &state.conf.connectors)
+                    .map_err(|error| {
+                        if matches!(
+                            error.current_context(),
+                            &errors::ConnectorError::RequestEncodingFailed
+                                | &errors::ConnectorError::RequestEncodingFailedWithReason(_)
+                        ) {
+                            metrics::REQUEST_BUILD_FAILURE.add(
+                                &metrics::CONTEXT,
+                                1,
+                                &[metrics::request::add_attributes(
+                                    "connector",
+                                    req.connector.to_string(),
+                                )],
+                            )
+                        }
+                        error
+                    })?,
+            };
 
             match connector_request {
                 Some(request) => {
-                    logger::debug!(connector_request=?request);
-
                     let masked_request_body = match &request.body {
                         Some(request) => match request {
                             RequestContent::Json(i)
@@ -1828,7 +1829,7 @@ pub fn build_redirection_form(
 
                     threeDSsecureInterface.on('challenge', function(e) {{
                         console.log('Challenged');
-                        document.getElementById('loader-wrapper').style.display = 'none';                    
+                        document.getElementById('loader-wrapper').style.display = 'none';
                     }});
 
                     threeDSsecureInterface.on('complete', function(e) {{