mirror of
https://github.com/juspay/hyperswitch.git
synced 2025-10-29 09:07:09 +08:00
feat(core): add payments post_session_tokens flow (#6202)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
@ -23,7 +23,8 @@ use crate::{
|
||||
PaymentsCompleteAuthorizeRequest, PaymentsDynamicTaxCalculationRequest,
|
||||
PaymentsDynamicTaxCalculationResponse, PaymentsExternalAuthenticationRequest,
|
||||
PaymentsExternalAuthenticationResponse, PaymentsIncrementalAuthorizationRequest,
|
||||
PaymentsManualUpdateRequest, PaymentsManualUpdateResponse, PaymentsRejectRequest,
|
||||
PaymentsManualUpdateRequest, PaymentsManualUpdateResponse,
|
||||
PaymentsPostSessionTokensRequest, PaymentsPostSessionTokensResponse, PaymentsRejectRequest,
|
||||
PaymentsRequest, PaymentsResponse, PaymentsRetrieveRequest, PaymentsSessionResponse,
|
||||
PaymentsStartRequest, RedirectionResponse,
|
||||
},
|
||||
@ -71,6 +72,22 @@ impl ApiEventMetric for PaymentsDynamicTaxCalculationRequest {
|
||||
}
|
||||
}
|
||||
|
||||
impl ApiEventMetric for PaymentsPostSessionTokensRequest {
|
||||
fn get_api_event_type(&self) -> Option<ApiEventsType> {
|
||||
Some(ApiEventsType::Payment {
|
||||
payment_id: self.payment_id.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl ApiEventMetric for PaymentsPostSessionTokensResponse {
|
||||
fn get_api_event_type(&self) -> Option<ApiEventsType> {
|
||||
Some(ApiEventsType::Payment {
|
||||
payment_id: self.payment_id.clone(),
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
impl ApiEventMetric for PaymentsDynamicTaxCalculationResponse {}
|
||||
|
||||
impl ApiEventMetric for PaymentsCancelRequest {
|
||||
|
||||
@ -3819,6 +3819,7 @@ pub enum QrCodeInformation {
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub struct SdkNextActionData {
|
||||
pub next_action: NextActionCall,
|
||||
pub order_id: Option<String>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize, ToSchema)]
|
||||
@ -4873,6 +4874,34 @@ pub struct PaymentsSessionRequest {
|
||||
pub merchant_connector_details: Option<admin::MerchantConnectorDetailsWrap>,
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Deserialize, serde::Serialize, Clone, ToSchema)]
|
||||
pub struct PaymentsPostSessionTokensRequest {
|
||||
/// The unique identifier for the payment
|
||||
#[serde(skip_deserializing)]
|
||||
#[schema(value_type = String)]
|
||||
pub payment_id: id_type::PaymentId,
|
||||
/// It's a token used for client side verification.
|
||||
#[schema(value_type = String)]
|
||||
pub client_secret: Secret<String>,
|
||||
/// Payment method type
|
||||
#[schema(value_type = PaymentMethodType)]
|
||||
pub payment_method_type: api_enums::PaymentMethodType,
|
||||
/// The payment method that is to be used for the payment
|
||||
#[schema(value_type = PaymentMethod, example = "card")]
|
||||
pub payment_method: api_enums::PaymentMethod,
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize, Clone, ToSchema)]
|
||||
pub struct PaymentsPostSessionTokensResponse {
|
||||
/// The identifier for the payment
|
||||
#[schema(value_type = String)]
|
||||
pub payment_id: id_type::PaymentId,
|
||||
/// Additional information required for redirection
|
||||
pub next_action: Option<NextActionData>,
|
||||
#[schema(value_type = IntentStatus, example = "failed", default = "requires_confirmation")]
|
||||
pub status: api_enums::IntentStatus,
|
||||
}
|
||||
|
||||
#[derive(Debug, serde::Serialize, serde::Deserialize, Clone, ToSchema)]
|
||||
pub struct PaymentsDynamicTaxCalculationRequest {
|
||||
/// The unique identifier for the payment
|
||||
@ -5429,6 +5458,8 @@ pub struct SdkNextAction {
|
||||
#[derive(Debug, Eq, PartialEq, serde::Serialize, serde::Deserialize, Clone, ToSchema)]
|
||||
#[serde(rename_all = "snake_case")]
|
||||
pub enum NextActionCall {
|
||||
/// The next action call is Post Session Tokens
|
||||
PostSessionTokens,
|
||||
/// The next action call is confirm
|
||||
Confirm,
|
||||
/// The next action call is sync
|
||||
|
||||
Reference in New Issue
Block a user