fix(core): save payment_method_type when creating a record in the payment_method table (#1378)

This commit is contained in:
Pa1NarK
2023-06-19 17:39:21 +05:30
committed by GitHub
parent b44f35d4d9
commit 76cb15e01d
6 changed files with 19 additions and 9 deletions

View File

@ -84,6 +84,7 @@ impl Feature<api::Authorize, types::PaymentsAuthorizeData> for types::PaymentsAu
resp.to_owned(),
maybe_customer,
merchant_account,
self.request.payment_method_type.clone(),
)
.await?;

View File

@ -67,6 +67,7 @@ impl Feature<api::Verify, types::VerifyRequestData> for types::VerifyRouterData
resp.to_owned(),
maybe_customer,
merchant_account,
self.request.payment_method_type.clone(),
)
.await?;
@ -177,12 +178,14 @@ impl types::VerifyRouterData {
.await
.to_verify_failed_response()?;
let payment_method_type = self.request.payment_method_type.clone();
let pm_id = tokenization::save_payment_method(
state,
connector,
resp.to_owned(),
maybe_customer,
merchant_account,
payment_method_type,
)
.await?;

View File

@ -729,13 +729,14 @@ where
#[instrument(skip_all)]
pub(crate) async fn get_payment_method_create_request(
payment_method: Option<&api::PaymentMethodData>,
payment_method_type: Option<storage_enums::PaymentMethod>,
payment_method_data: Option<&api::PaymentMethodData>,
payment_method: Option<storage_enums::PaymentMethod>,
payment_method_type: Option<storage_enums::PaymentMethodType>,
customer: &domain::Customer,
) -> RouterResult<api::PaymentMethodCreate> {
match payment_method {
Some(pm_data) => match payment_method_type {
Some(payment_method_type) => match pm_data {
match payment_method_data {
Some(pm_data) => match payment_method {
Some(payment_method) => match pm_data {
api::PaymentMethodData::Card(card) => {
let card_detail = api::CardDetail {
card_number: card.card_number.clone(),
@ -745,8 +746,8 @@ pub(crate) async fn get_payment_method_create_request(
};
let customer_id = customer.customer_id.clone();
let payment_method_request = api::PaymentMethodCreate {
payment_method: payment_method_type.foreign_into(),
payment_method_type: None,
payment_method: payment_method.foreign_into(),
payment_method_type: payment_method_type.map(ForeignInto::foreign_into),
payment_method_issuer: card.card_issuer.clone(),
payment_method_issuer_code: None,
card: Some(card_detail),
@ -761,8 +762,8 @@ pub(crate) async fn get_payment_method_create_request(
}
_ => {
let payment_method_request = api::PaymentMethodCreate {
payment_method: payment_method_type.foreign_into(),
payment_method_type: None,
payment_method: payment_method.foreign_into(),
payment_method_type: payment_method_type.map(ForeignInto::foreign_into),
payment_method_issuer: None,
payment_method_issuer_code: None,
card: None,

View File

@ -15,6 +15,7 @@ use crate::{
self,
api::{self, PaymentMethodCreateExt},
domain,
storage::enums as storage_enums,
},
utils::OptionExt,
};
@ -25,6 +26,7 @@ pub async fn save_payment_method<F: Clone, FData>(
resp: types::RouterData<F, FData, types::PaymentsResponseData>,
maybe_customer: &Option<domain::Customer>,
merchant_account: &domain::MerchantAccount,
payment_method_type: Option<storage_enums::PaymentMethodType>,
) -> RouterResult<Option<String>>
where
FData: mandate::MandateBehaviour,
@ -53,6 +55,7 @@ where
let payment_method_create_request = helpers::get_payment_method_create_request(
Some(&resp.request.get_payment_method_data()),
Some(resp.payment_method),
payment_method_type,
&customer,
)
.await?;

View File

@ -885,6 +885,7 @@ impl<F: Clone> TryFrom<PaymentAdditionalData<'_, F>> for types::VerifyRequestDat
router_return_url,
email: payment_data.email,
return_url: payment_data.payment_intent.return_url,
payment_method_type: attempt.payment_method_type.clone(),
})
}
}

View File

@ -339,6 +339,7 @@ pub struct VerifyRequestData {
pub router_return_url: Option<String>,
pub email: Option<Email>,
pub return_url: Option<String>,
pub payment_method_type: Option<storage_enums::PaymentMethodType>,
}
#[derive(Debug, Clone)]