fix: Update browser info on payment confirmation (#52)

This commit is contained in:
Kartikeya Hegde
2022-12-01 14:35:04 +05:30
committed by GitHub
parent 0f22d707ba
commit 5a5ac61d01
2 changed files with 19 additions and 2 deletions

View File

@ -18,11 +18,11 @@ use crate::{
},
routes::AppState,
types::{
api,
self, api,
storage::{self, enums},
Connector,
},
utils::OptionExt,
utils::{self, OptionExt},
};
#[derive(Debug, Clone, Copy, PaymentOperation)]
@ -71,6 +71,15 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa
}
}
let browser_info = request
.browser_info
.clone()
.map(|x| utils::Encode::<types::BrowserInformation>::encode_to_value(&x))
.transpose()
.change_context(errors::ApiErrorResponse::InvalidDataValue {
field_name: "browser_info",
})?;
payment_attempt = db
.find_payment_attempt_by_payment_id_merchant_id(&payment_id, merchant_id)
.await
@ -80,6 +89,7 @@ impl<F: Send + Clone> GetTracker<F, PaymentData<F>, api::PaymentsRequest> for Pa
payment_attempt.payment_method = payment_method_type.or(payment_attempt.payment_method);
payment_attempt.payment_method = payment_method_type.or(payment_attempt.payment_method);
payment_attempt.browser_info = browser_info;
currency = payment_attempt.currency.get_required_value("currency")?;
amount = payment_attempt.amount;
@ -163,6 +173,7 @@ impl<F: Clone> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for Paymen
F: 'b + Send,
{
let payment_method = payment_data.payment_attempt.payment_method;
let browser_info = payment_data.payment_attempt.browser_info.clone();
let (intent_status, attempt_status) = match payment_data.payment_attempt.authentication_type
{
@ -182,6 +193,7 @@ impl<F: Clone> UpdateTracker<F, PaymentData<F>, api::PaymentsRequest> for Paymen
storage::PaymentAttemptUpdate::ConfirmUpdate {
status: attempt_status,
payment_method,
browser_info,
},
)
.await

View File

@ -87,6 +87,7 @@ pub enum PaymentAttemptUpdate {
ConfirmUpdate {
status: enums::AttemptStatus,
payment_method: Option<enums::PaymentMethodType>,
browser_info: Option<serde_json::Value>,
},
VoidUpdate {
status: enums::AttemptStatus,
@ -124,6 +125,7 @@ pub(super) struct PaymentAttemptUpdateInternal {
modified_at: Option<PrimitiveDateTime>,
redirect: Option<bool>,
mandate_id: Option<String>,
browser_info: Option<serde_json::Value>,
}
impl PaymentAttemptUpdate {
@ -142,6 +144,7 @@ impl PaymentAttemptUpdate {
payment_method_id: pa_update
.payment_method_id
.unwrap_or(source.payment_method_id),
browser_info: pa_update.browser_info,
modified_at: common_utils::date_time::now(),
..source
}
@ -178,10 +181,12 @@ impl From<PaymentAttemptUpdate> for PaymentAttemptUpdateInternal {
PaymentAttemptUpdate::ConfirmUpdate {
status,
payment_method,
browser_info,
} => Self {
status: Some(status),
payment_method,
modified_at: Some(common_utils::date_time::now()),
browser_info,
..Default::default()
},
PaymentAttemptUpdate::VoidUpdate {