fix(core): Add Validation Check for Amount in Capture Flow (#9434)

Co-authored-by: Anurag Singh <anurag.singh.001@MacBookPro.lan>
Co-authored-by: Anurag Singh <anurag.singh.001@Anurag-Singh-WPMHJ5619X.local>
This commit is contained in:
Anurag
2025-09-19 12:30:37 +05:30
committed by GitHub
parent 8930e1ed28
commit 87fc0066f6
5 changed files with 108 additions and 24 deletions

View File

@ -172,6 +172,11 @@ pub struct ConfigMetadata {
pub shop_name: Option<InputData>,
pub merchant_funding_source: Option<InputData>,
pub account_id: Option<AccountIDSupportedMethods>,
pub name: Option<InputData>,
pub client_merchant_reference_id: Option<InputData>,
pub route: Option<InputData>,
pub mid: Option<InputData>,
pub tid: Option<InputData>,
}
#[serde_with::skip_serializing_none]

View File

@ -6963,8 +6963,14 @@ key1="Tenant ID"
[peachpayments.connector_webhook_details]
merchant_secret="Webhook Secret"
[peachpayments.metadata.merchant_name]
name="merchant_name"
[peachpayments.metadata.client_merchant_reference_id]
name="client_merchant_reference_id"
label="Client Merchant Reference Id"
placeholder="Enter Client Merchant Reference Id"
required=true
type="Text"
[peachpayments.metadata.name]
name="name"
label="Merchant Name"
placeholder="Enter Merchant Name"
required=true
@ -7030,20 +7036,20 @@ label="Merchant Website"
placeholder="Enter merchant website URL"
required=true
type="Text"
[peachpayments.metadata.routing_mid]
name="routing_mid"
[peachpayments.metadata.mid]
name="mid"
label="Routing MID"
placeholder="Enter routing MID"
required=true
type="Text"
[peachpayments.metadata.routing_tid]
name="routing_tid"
[peachpayments.metadata.tid]
name="tid"
label="Routing TID"
placeholder="Enter routing TID"
required=true
type="Text"
[peachpayments.metadata.routing_route]
name="routing_route"
[peachpayments.metadata.route]
name="route"
label="Routing Route"
placeholder="Select routing route"
required=true
@ -7055,3 +7061,21 @@ label="AmEx ID"
placeholder="Enter AmEx ID for routing"
required=false
type="Text"
[peachpayments.metadata.sub_mid]
name="sub_mid"
label="Sub Mid"
placeholder="Enter Sub Mid"
required=false
type="Text"
[peachpayments.metadata.visa_payment_facilitator_id]
name="visa_payment_facilitator_id"
label="Visa Payment Facilitator Id"
placeholder="Enter Visa Payment Facilitator Id"
required=false
type="Text"
[peachpayments.metadata.mastercard_payment_facilitator_id]
name="mastercard_payment_facilitator_id"
label="mastercard Payment Facilitator Id"
placeholder="Enter mastercard Payment Facilitator Id"
required=false
type="Text"

View File

@ -5630,8 +5630,14 @@ key1="Tenant ID"
[peachpayments.connector_webhook_details]
merchant_secret="Webhook Secret"
[peachpayments.metadata.merchant_name]
name="merchant_name"
[peachpayments.metadata.client_merchant_reference_id]
name="client_merchant_reference_id"
label="Client Merchant Reference Id"
placeholder="Enter Client Merchant Reference Id"
required=true
type="Text"
[peachpayments.metadata.name]
name="name"
label="Merchant Name"
placeholder="Enter Merchant Name"
required=true
@ -5697,20 +5703,20 @@ label="Merchant Website"
placeholder="Enter merchant website URL"
required=true
type="Text"
[peachpayments.metadata.routing_mid]
name="routing_mid"
[peachpayments.metadata.mid]
name="mid"
label="Routing MID"
placeholder="Enter routing MID"
required=true
type="Text"
[peachpayments.metadata.routing_tid]
name="routing_tid"
[peachpayments.metadata.tid]
name="tid"
label="Routing TID"
placeholder="Enter routing TID"
required=true
type="Text"
[peachpayments.metadata.routing_route]
name="routing_route"
[peachpayments.metadata.route]
name="route"
label="Routing Route"
placeholder="Select routing route"
required=true
@ -5722,3 +5728,21 @@ label="AmEx ID"
placeholder="Enter AmEx ID for routing"
required=false
type="Text"
[peachpayments.metadata.sub_mid]
name="sub_mid"
label="Sub Mid"
placeholder="Enter Sub Mid"
required=false
type="Text"
[peachpayments.metadata.visa_payment_facilitator_id]
name="visa_payment_facilitator_id"
label="Visa Payment Facilitator Id"
placeholder="Enter Visa Payment Facilitator Id"
required=false
type="Text"
[peachpayments.metadata.mastercard_payment_facilitator_id]
name="mastercard_payment_facilitator_id"
label="mastercard Payment Facilitator Id"
placeholder="Enter mastercard Payment Facilitator Id"
required=false
type="Text"

View File

@ -6942,8 +6942,14 @@ key1="Tenant ID"
[peachpayments.connector_webhook_details]
merchant_secret="Webhook Secret"
[peachpayments.metadata.merchant_name]
name="merchant_name"
[peachpayments.metadata.client_merchant_reference_id]
name="client_merchant_reference_id"
label="Client Merchant Reference Id"
placeholder="Enter Client Merchant Reference Id"
required=true
type="Text"
[peachpayments.metadata.name]
name="name"
label="Merchant Name"
placeholder="Enter Merchant Name"
required=true
@ -7009,20 +7015,20 @@ label="Merchant Website"
placeholder="Enter merchant website URL"
required=true
type="Text"
[peachpayments.metadata.routing_mid]
name="routing_mid"
[peachpayments.metadata.mid]
name="mid"
label="Routing MID"
placeholder="Enter routing MID"
required=true
type="Text"
[peachpayments.metadata.routing_tid]
name="routing_tid"
[peachpayments.metadata.tid]
name="tid"
label="Routing TID"
placeholder="Enter routing TID"
required=true
type="Text"
[peachpayments.metadata.routing_route]
name="routing_route"
[peachpayments.metadata.route]
name="route"
label="Routing Route"
placeholder="Select routing route"
required=true
@ -7034,3 +7040,21 @@ label="AmEx ID"
placeholder="Enter AmEx ID for routing"
required=false
type="Text"
[peachpayments.metadata.sub_mid]
name="sub_mid"
label="Sub Mid"
placeholder="Enter Sub Mid"
required=false
type="Text"
[peachpayments.metadata.visa_payment_facilitator_id]
name="visa_payment_facilitator_id"
label="Visa Payment Facilitator Id"
placeholder="Enter Visa Payment Facilitator Id"
required=false
type="Text"
[peachpayments.metadata.mastercard_payment_facilitator_id]
name="mastercard_payment_facilitator_id"
label="mastercard Payment Facilitator Id"
placeholder="Enter mastercard Payment Facilitator Id"
required=false
type="Text"

View File

@ -2966,6 +2966,13 @@ pub(crate) fn validate_amount_to_capture(
amount: i64,
amount_to_capture: Option<i64>,
) -> RouterResult<()> {
utils::when(amount_to_capture.is_some_and(|value| value <= 0), || {
Err(report!(errors::ApiErrorResponse::InvalidDataFormat {
field_name: "amount".to_string(),
expected_format: "positive integer".to_string(),
}))
})?;
utils::when(
amount_to_capture.is_some() && (Some(amount) < amount_to_capture),
|| {