Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
adc29da
feat: implement UCS granular flow
hrithikesh026 Nov 22, 2025
e242478
feat: implement UCS granular flow for session token
hrithikesh026 Nov 22, 2025
ee8396f
feat: implement UCS granular flow for customer create
hrithikesh026 Nov 24, 2025
04646b1
fix: session response handling
hrithikesh026 Nov 24, 2025
b2c5975
Merge remote-tracking branch 'origin/main' into implement-ucs-granula…
hrithikesh026 Nov 24, 2025
4f8eaa2
feat: implement UCS granular flow for payment method token create
hrithikesh026 Nov 24, 2025
ac1e07b
feat: implement UCS granular flow for order create
hrithikesh026 Nov 24, 2025
86c8e93
feat: implement UCS granular flow for authorize and setup mandate
hrithikesh026 Nov 24, 2025
1dbc89a
chore: run formatter
hrithikesh026 Nov 24, 2025
a0d53a0
chore: addres v2 clippy errors
hrithikesh026 Nov 25, 2025
97b1f0b
chore: remove unwanted code
hrithikesh026 Nov 25, 2025
aa4a196
Merge branch 'main' into implement-ucs-granular-flows
hrithikesh026 Nov 25, 2025
5750153
chore: update UCS ref
hrithikesh026 Nov 25, 2025
63c996c
chore: update UCS dependecy ref
hrithikesh026 Nov 25, 2025
6105d4b
chore: address pr comments
hrithikesh026 Nov 26, 2025
d368255
refactor: session token implementation
hrithikesh026 Nov 27, 2025
54cb3dd
refactor: session token implementation for paypal
hrithikesh026 Nov 27, 2025
d7c30ea
chore: update UCS dependecy ref
hrithikesh026 Nov 27, 2025
06294ee
chore: address clippy warnings
hrithikesh026 Nov 27, 2025
9b3e0b0
chore: update UCS dependecy ref
hrithikesh026 Nov 27, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion crates/external_services/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ reqwest = { version = "0.11.27", features = ["rustls-tls"] }
http = "0.2.12"
url = { version = "2.5.4", features = ["serde"] }
quick-xml = { version = "0.31.0", features = ["serialize"] }
unified-connector-service-client = { git = "https://github.com/juspay/connector-service", rev = "b5a367c1c775c32503feb00cdc6cd063cc97ea3b", package = "rust-grpc-client" }
unified-connector-service-client = { git = "https://github.com/juspay/connector-service", rev = "7f28be871568f5937975a99bde14ce47736fd81e", package = "rust-grpc-client" }
open-feature = { version = "0.2.5", optional = true }
superposition_provider = { version = "0.88.1", optional = true }

Expand Down
4 changes: 4 additions & 0 deletions crates/hyperswitch_connectors/src/connectors/nuvei.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1585,4 +1585,8 @@ impl ConnectorSpecifications for Nuvei {
fn get_supported_webhook_flows(&self) -> Option<&'static [enums::EventClass]> {
Some(&NUVEI_SUPPORTED_WEBHOOK_FLOWS)
}

fn is_authorize_session_token_call_required(&self) -> bool {
true
}
}
4 changes: 4 additions & 0 deletions crates/hyperswitch_connectors/src/connectors/paytm.rs
Original file line number Diff line number Diff line change
Expand Up @@ -643,4 +643,8 @@ impl ConnectorSpecifications for Paytm {
fn get_supported_webhook_flows(&self) -> Option<&'static [enums::EventClass]> {
Some(&*PAYTM_SUPPORTED_WEBHOOK_FLOWS)
}

fn is_authorize_session_token_call_required(&self) -> bool {
true
}
}
3 changes: 3 additions & 0 deletions crates/hyperswitch_connectors/src/connectors/square.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1000,4 +1000,7 @@ impl ConnectorSpecifications for Square {
fn get_supported_webhook_flows(&self) -> Option<&'static [enums::EventClass]> {
Some(&*SQUARE_SUPPORTED_WEBHOOK_FLOWS)
}
fn is_authorize_session_token_call_required(&self) -> bool {
true
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
use serde;
#[derive(Clone, Debug)]
pub struct AccessTokenAuthentication;

#[derive(Clone, Debug)]
#[derive(Clone, Debug, serde::Serialize)]
pub struct AccessTokenAuth;
Original file line number Diff line number Diff line change
Expand Up @@ -1190,7 +1190,7 @@ impl TryFrom<router_data::ConnectorAuthType> for AccessTokenAuthenticationReques
}
}

#[derive(Debug, Clone)]
#[derive(Debug, Clone, Serialize)]
pub struct AccessTokenRequestData {
pub app_id: Secret<String>,
pub id: Option<Secret<String>>,
Expand Down
4 changes: 2 additions & 2 deletions crates/hyperswitch_interfaces/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -29,8 +29,8 @@ serde_json = "1.0.140"
strum = { version = "0.26", features = ["derive"] }
thiserror = "1.0.69"
time = "0.3.41"
unified-connector-service-client = { git = "https://github.com/juspay/connector-service", rev = "b5a367c1c775c32503feb00cdc6cd063cc97ea3b", package = "rust-grpc-client" }
unified-connector-service-masking = { git = "https://github.com/juspay/hyperswitch", tag = "2025.09.24.0", package = "masking" }
unified-connector-service-client = { git = "https://github.com/juspay/connector-service", rev = "7f28be871568f5937975a99bde14ce47736fd81e", package = "rust-grpc-client" }
unified-connector-service-masking = { git = "https://github.com/juspay/hyperswitch", tag = "2025.11.24.0", package = "masking" }
tokio = { version = "1.45.1", features = ["macros", "rt-multi-thread"] }
# First party crates
hyperswitch_domain_models = { version = "0.1.0", path = "../hyperswitch_domain_models", default-features = false }
Expand Down
5 changes: 5 additions & 0 deletions crates/hyperswitch_interfaces/src/api.rs
Original file line number Diff line number Diff line change
Expand Up @@ -542,6 +542,11 @@ pub trait ConnectorSpecifications {
.unwrap_or_else(|| payment_attempt.id.get_string_repr().to_owned())
}

/// Is Authorize session token required before authorize
fn is_authorize_session_token_call_required(&self) -> bool {
false
}

#[cfg(feature = "v1")]
/// Generate connector customer reference ID for payments
fn generate_connector_customer_id(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -636,6 +636,14 @@ impl ConnectorSpecifications for ConnectorEnum {
}
}

/// Check if the connector needs authorize session token call
fn is_authorize_session_token_call_required(&self) -> bool {
match self {
Self::Old(connector) => connector.is_authorize_session_token_call_required(),
Self::New(connector) => connector.is_authorize_session_token_call_required(),
}
}

#[cfg(feature = "v1")]
fn generate_connector_request_reference_id(
&self,
Expand Down
6 changes: 3 additions & 3 deletions crates/router/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,9 @@ reqwest = { version = "0.11.27", features = ["json", "rustls-tls", "gzip", "mult
ring = "0.17.14"
rust_decimal = { version = "1.37.1", features = ["serde-with-float", "serde-with-str"] }
rust-i18n = { git = "https://github.com/kashif-m/rust-i18n", rev = "f2d8096aaaff7a87a847c35a5394c269f75e077a" }
unified-connector-service-client = { git = "https://github.com/juspay/connector-service", rev = "b5a367c1c775c32503feb00cdc6cd063cc97ea3b", package = "rust-grpc-client" }
unified-connector-service-cards = { git = "https://github.com/juspay/connector-service", rev = "b5a367c1c775c32503feb00cdc6cd063cc97ea3b", package = "ucs_cards" }
unified-connector-service-masking = { git = "https://github.com/juspay/hyperswitch", tag = "2025.09.24.0", package = "masking" }
unified-connector-service-client = { git = "https://github.com/juspay/connector-service", rev = "7f28be871568f5937975a99bde14ce47736fd81e", package = "rust-grpc-client" }
unified-connector-service-cards = { git = "https://github.com/juspay/connector-service", rev = "7f28be871568f5937975a99bde14ce47736fd81e", package = "ucs_cards" }
unified-connector-service-masking = { git = "https://github.com/juspay/hyperswitch", tag = "2025.11.24.0", package = "masking" }
rustc-hash = "1.1.0"
rustls = "0.22"
rustls-pemfile = "2"
Expand Down
Loading
Loading