fix(connector): [Worldpay] use 4 digit expiry year (#6543)

This commit is contained in:
Kashif
2024-11-19 17:43:54 +05:30
committed by GitHub
parent bbd55e32f8
commit e730a2ee5a
3 changed files with 32 additions and 23 deletions

View File

@ -25,7 +25,7 @@ use super::{requests::*, response::*};
use crate::{ use crate::{
types::ResponseRouterData, types::ResponseRouterData,
utils::{ utils::{
self, AddressData, ForeignTryFrom, PaymentsAuthorizeRequestData, self, AddressData, CardData, ForeignTryFrom, PaymentsAuthorizeRequestData,
PaymentsSetupMandateRequestData, RouterData as RouterDataTrait, PaymentsSetupMandateRequestData, RouterData as RouterDataTrait,
}, },
}; };
@ -77,8 +77,8 @@ fn fetch_payment_instrument(
PaymentMethodData::Card(card) => Ok(PaymentInstrument::Card(CardPayment { PaymentMethodData::Card(card) => Ok(PaymentInstrument::Card(CardPayment {
payment_type: PaymentType::Plain, payment_type: PaymentType::Plain,
expiry_date: ExpiryDate { expiry_date: ExpiryDate {
month: utils::CardData::get_expiry_month_as_i8(&card)?, month: card.get_expiry_month_as_i8()?,
year: utils::CardData::get_expiry_year_as_i32(&card)?, year: card.get_expiry_year_as_4_digit_i32()?,
}, },
card_number: card.card_number, card_number: card.card_number,
cvc: card.card_cvc, cvc: card.card_cvc,

View File

@ -844,6 +844,7 @@ pub trait CardData {
fn get_expiry_date_as_mmyy(&self) -> Result<Secret<String>, errors::ConnectorError>; fn get_expiry_date_as_mmyy(&self) -> Result<Secret<String>, errors::ConnectorError>;
fn get_expiry_month_as_i8(&self) -> Result<Secret<i8>, Error>; fn get_expiry_month_as_i8(&self) -> Result<Secret<i8>, Error>;
fn get_expiry_year_as_i32(&self) -> Result<Secret<i32>, Error>; fn get_expiry_year_as_i32(&self) -> Result<Secret<i32>, Error>;
fn get_expiry_year_as_4_digit_i32(&self) -> Result<Secret<i32>, Error>;
} }
impl CardData for Card { impl CardData for Card {
@ -922,6 +923,14 @@ impl CardData for Card {
.change_context(errors::ConnectorError::ResponseDeserializationFailed) .change_context(errors::ConnectorError::ResponseDeserializationFailed)
.map(Secret::new) .map(Secret::new)
} }
fn get_expiry_year_as_4_digit_i32(&self) -> Result<Secret<i32>, Error> {
self.get_expiry_year_4_digit()
.peek()
.clone()
.parse::<i32>()
.change_context(errors::ConnectorError::ResponseDeserializationFailed)
.map(Secret::new)
}
} }
#[track_caller] #[track_caller]

View File

@ -26,23 +26,23 @@ const browser_info = {
"ip_address": "127.0.0.1" "ip_address": "127.0.0.1"
}; };
const successfulNo3DSCardDetails = { const successfulNoThreeDsCardDetailsRequest = {
card_number: "4242424242424242", card_number: "4242424242424242",
card_exp_month: "10", card_exp_month: "10",
card_exp_year: "2030", card_exp_year: "30",
card_holder_name: "morino", card_holder_name: "morino",
card_cvc: "737", card_cvc: "737",
}; };
const successfulThreeDSTestCardDetails = { const successfulThreeDsTestCardDetailsRequest = {
card_number: "4000000000001091", card_number: "4000000000001091",
card_exp_month: "10", card_exp_month: "10",
card_exp_year: "2030", card_exp_year: "30",
card_holder_name: "morino", card_holder_name: "morino",
card_cvc: "737", card_cvc: "737",
}; };
const payment_method_data_no3ds = { const paymentMethodDataNoThreeDsResponse = {
card: { card: {
last4: "4242", last4: "4242",
card_type: "CREDIT", card_type: "CREDIT",
@ -52,7 +52,7 @@ const payment_method_data_no3ds = {
card_isin: "424242", card_isin: "424242",
card_extended_bin: null, card_extended_bin: null,
card_exp_month: "10", card_exp_month: "10",
card_exp_year: "2030", card_exp_year: "30",
card_holder_name: null, card_holder_name: null,
payment_checks: null, payment_checks: null,
authentication_data: null authentication_data: null
@ -70,7 +70,7 @@ const payment_method_data_3ds = {
card_isin: "400000", card_isin: "400000",
card_extended_bin: null, card_extended_bin: null,
card_exp_month: "10", card_exp_month: "10",
card_exp_year: "2030", card_exp_year: "30",
card_holder_name: null, card_holder_name: null,
payment_checks: null, payment_checks: null,
authentication_data: null authentication_data: null
@ -115,7 +115,7 @@ export const connectorDetails = {
payment_method: "card", payment_method: "card",
payment_method_type: "debit", payment_method_type: "debit",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
customer_acceptance: null, customer_acceptance: null,
@ -129,7 +129,7 @@ export const connectorDetails = {
payment_method: "card", payment_method: "card",
payment_method_type: "debit", payment_method_type: "debit",
attempt_count: 1, attempt_count: 1,
payment_method_data: payment_method_data_no3ds, payment_method_data: paymentMethodDataNoThreeDsResponse,
}, },
}, },
}, },
@ -138,7 +138,7 @@ export const connectorDetails = {
payment_method: "card", payment_method: "card",
payment_method_type: "debit", payment_method_type: "debit",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
customer_acceptance: null, customer_acceptance: null,
@ -151,7 +151,7 @@ export const connectorDetails = {
payment_method: "card", payment_method: "card",
payment_method_type: "debit", payment_method_type: "debit",
attempt_count: 1, attempt_count: 1,
payment_method_data: payment_method_data_no3ds, payment_method_data: paymentMethodDataNoThreeDsResponse,
}, },
}, },
}, },
@ -160,7 +160,7 @@ export const connectorDetails = {
payment_method: "card", payment_method: "card",
payment_method_type: "debit", payment_method_type: "debit",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
customer_acceptance: null, customer_acceptance: null,
@ -179,7 +179,7 @@ export const connectorDetails = {
payment_method: "card", payment_method: "card",
payment_method_type: "debit", payment_method_type: "debit",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
customer_acceptance: null, customer_acceptance: null,
@ -222,7 +222,7 @@ export const connectorDetails = {
Request: { Request: {
payment_method: "card", payment_method: "card",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
setup_future_usage: "on_session", setup_future_usage: "on_session",
@ -250,7 +250,7 @@ export const connectorDetails = {
Request: { Request: {
payment_method: "card", payment_method: "card",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
setup_future_usage: "on_session", setup_future_usage: "on_session",
@ -276,7 +276,7 @@ export const connectorDetails = {
payment_method: "card", payment_method: "card",
payment_method_type: "debit", payment_method_type: "debit",
payment_method_data: { payment_method_data: {
card: successfulThreeDSTestCardDetails, card: successfulThreeDsTestCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
customer_acceptance: null, customer_acceptance: null,
@ -297,7 +297,7 @@ export const connectorDetails = {
payment_method: "card", payment_method: "card",
payment_method_type: "debit", payment_method_type: "debit",
payment_method_data: { payment_method_data: {
card: successfulThreeDSTestCardDetails, card: successfulThreeDsTestCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
customer_acceptance: null, customer_acceptance: null,
@ -322,7 +322,7 @@ export const connectorDetails = {
Request: { Request: {
payment_method: "card", payment_method: "card",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "EUR", currency: "EUR",
customer_acceptance: null, customer_acceptance: null,
@ -344,7 +344,7 @@ export const connectorDetails = {
Request: { Request: {
payment_method: "card", payment_method: "card",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
customer_acceptance: null, customer_acceptance: null,
@ -417,7 +417,7 @@ export const connectorDetails = {
Request: { Request: {
payment_method: "card", payment_method: "card",
payment_method_data: { payment_method_data: {
card: successfulNo3DSCardDetails, card: successfulNoThreeDsCardDetailsRequest,
}, },
currency: "USD", currency: "USD",
mandate_data: singleUseMandateData, mandate_data: singleUseMandateData,