Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(connector): [Elavon] Implement cards Flow #6485

Conversation

awasthi21
Copy link
Contributor

@awasthi21 awasthi21 commented Nov 5, 2024

Type of Change

  • Bugfix
  • New feature
  • Enhancement
  • Refactoring
  • Dependency updates
  • Documentation
  • CI/CD

Description

Added Cards flow for Elavon (ThreeDs not implemented)
Added Mandates Flow
Void Flow is not available for Elavon

Additional Changes

  • [] This PR modifies the API contract
  • This PR modifies the database schema
  • This PR modifies application configuration/environment variables

Motivation and Context

Added Cards flow for Elavon

How did you test it?

Auth +Capture

Request
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_X02U5PA0RU9fDydCUhM951NOSCQEtkvMhpkxrciTOb0VcAMczyu4ylxEz70210JH' \
--data-raw '{
    "amount": 1400,
    "currency": "USD",
    "confirm": true, 
    "capture_method": "automatic",
    "email": "[email protected]",
    "payment_method": "card",
    "payment_method_type": "credit",
    "payment_method_data": {
        "card": {
            "card_number": "4111111111111111",
            "card_exp_month": "01",
            "card_exp_year": "29",
            "card_holder_name": "joseph Doe",
            "card_cvc": "124"
        }
    }
}'
Response
{
    "payment_id": "pay_PBGAjDQVwA1SfUkqIQaU",
    "merchant_id": "merchant_1730784635",
    "status": "succeeded",
    "amount": 1400,
    "net_amount": 1400,
    "shipping_cost": null,
    "amount_capturable": 0,
    "amount_received": 1400,
    "connector": "elavon",
    "client_secret": "pay_PBGAjDQVwA1SfUkqIQaU_secret_DvxqB3TUPX5sjWwlIk4h",
    "created": "2024-11-05T15:59:25.325Z",
    "currency": "USD",
    "customer_id": null,
    "customer": {
        "id": null,
        "name": null,
        "email": "[email protected]",
        "phone": null,
        "phone_country_code": null
    },
    "description": null,
    "refunds": null,
    "disputes": null,
    "mandate_id": null,
    "mandate_data": null,
    "setup_future_usage": null,
    "off_session": null,
    "capture_on": null,
    "capture_method": "automatic",
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "last4": "1111",
            "card_type": null,
            "card_network": null,
            "card_issuer": null,
            "card_issuing_country": null,
            "card_isin": "411111",
            "card_extended_bin": null,
            "card_exp_month": "01",
            "card_exp_year": "29",
            "card_holder_name": null,
            "payment_checks": null,
            "authentication_data": null
        },
        "billing": null
    },
    "payment_token": null,
    "shipping": null,
    "billing": null,
    "order_details": null,
    "email": null,
    "name": null,
    "phone": null,
    "return_url": null,
    "authentication_type": "no_three_ds",
    "statement_descriptor_name": null,
    "statement_descriptor_suffix": null,
    "next_action": null,
    "cancellation_reason": null,
    "error_code": null,
    "error_message": null,
    "unified_code": null,
    "unified_message": null,
    "payment_experience": null,
    "payment_method_type": "credit",
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": false,
    "connector_transaction_id": "051124C45-603CD7B4-47C7-426E-B63E-E8217043459C",
    "frm_message": null,
    "metadata": null,
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": null,
    "payment_link": null,
    "profile_id": "pro_yzFt1TBeVUEs9Pc4O4J4",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_4xwh6f3O1nkokP1N5N7u",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2024-11-05T16:14:25.325Z",
    "fingerprint": null,
    "browser_info": null,
    "payment_method_id": null,
    "payment_method_status": null,
    "updated": "2024-11-05T15:59:28.882Z",
    "charges": null,
    "frm_metadata": null,
    "merchant_order_reference_id": null,
    "order_tax_amount": null,
    "connector_mandate_id": null
}

Auth Only

Request
curl --location 'http://localhost:8080/payments' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_X02U5PA0RU9fDydCUhM951NOSCQEtkvMhpkxrciTOb0VcAMczyu4ylxEz70210JH' \
--data-raw '{
    "amount": 1400,
    "currency": "USD",
    "confirm": true, 
    "capture_method": "manual",
    "email": "[email protected]",
    "payment_method": "card",
    "payment_method_type": "credit",
    "payment_method_data": {
        "card": {
            "card_number": "4111111111111111",
            "card_exp_month": "01",
            "card_exp_year": "29",
            "card_holder_name": "joseph Doe",
            "card_cvc": "124"
        }
    }
}'
Response
{
    "payment_id": "pay_cFs9lujpuOm2lJJ7yLUq",
    "merchant_id": "merchant_1730784635",
    "status": "requires_capture",
    "amount": 1400,
    "net_amount": 1400,
    "shipping_cost": null,
    "amount_capturable": 1400,
    "amount_received": null,
    "connector": "elavon",
    "client_secret": "pay_cFs9lujpuOm2lJJ7yLUq_secret_kJwPzcJNoCekNw0Xoy2A",
    "created": "2024-11-05T16:01:53.192Z",
    "currency": "USD",
    "customer_id": null,
    "customer": {
        "id": null,
        "name": null,
        "email": "[email protected]",
        "phone": null,
        "phone_country_code": null
    },
    "description": null,
    "refunds": null,
    "disputes": null,
    "mandate_id": null,
    "mandate_data": null,
    "setup_future_usage": null,
    "off_session": null,
    "capture_on": null,
    "capture_method": "manual",
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "last4": "1111",
            "card_type": null,
            "card_network": null,
            "card_issuer": null,
            "card_issuing_country": null,
            "card_isin": "411111",
            "card_extended_bin": null,
            "card_exp_month": "01",
            "card_exp_year": "29",
            "card_holder_name": null,
            "payment_checks": null,
            "authentication_data": null
        },
        "billing": null
    },
    "payment_token": null,
    "shipping": null,
    "billing": null,
    "order_details": null,
    "email": null,
    "name": null,
    "phone": null,
    "return_url": null,
    "authentication_type": "no_three_ds",
    "statement_descriptor_name": null,
    "statement_descriptor_suffix": null,
    "next_action": null,
    "cancellation_reason": null,
    "error_code": null,
    "error_message": null,
    "unified_code": null,
    "unified_message": null,
    "payment_experience": null,
    "payment_method_type": "credit",
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": false,
    "connector_transaction_id": "051124O2C-332C3670-20A1-42DA-B71F-BC54AED2807A",
    "frm_message": null,
    "metadata": null,
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": null,
    "payment_link": null,
    "profile_id": "pro_yzFt1TBeVUEs9Pc4O4J4",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_4xwh6f3O1nkokP1N5N7u",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2024-11-05T16:16:53.192Z",
    "fingerprint": null,
    "browser_info": null,
    "payment_method_id": null,
    "payment_method_status": null,
    "updated": "2024-11-05T16:01:54.567Z",
    "charges": null,
    "frm_metadata": null,
    "merchant_order_reference_id": null,
    "order_tax_amount": null,
    "connector_mandate_id": null
}

Capture

Request
curl --location 'http://localhost:8080/payments/pay_cFs9lujpuOm2lJJ7yLUq/capture' \
--header 'Content-Type: application/json' \
--header 'api-key: dev_X02U5PA0RU9fDydCUhM951NOSCQEtkvMhpkxrciTOb0VcAMczyu4ylxEz70210JH' \
--data '{
  "amount_to_capture": 650,
  "statement_descriptor_name": "Joseph",
  "statement_descriptor_suffix": "JS"
}'
Response
{
    "payment_id": "pay_cFs9lujpuOm2lJJ7yLUq",
    "merchant_id": "merchant_1730784635",
    "status": "partially_captured",
    "amount": 1400,
    "net_amount": 1400,
    "shipping_cost": null,
    "amount_capturable": 0,
    "amount_received": 650,
    "connector": "elavon",
    "client_secret": "pay_cFs9lujpuOm2lJJ7yLUq_secret_kJwPzcJNoCekNw0Xoy2A",
    "created": "2024-11-05T16:01:53.192Z",
    "currency": "USD",
    "customer_id": null,
    "customer": {
        "id": null,
        "name": null,
        "email": "[email protected]",
        "phone": null,
        "phone_country_code": null
    },
    "description": null,
    "refunds": null,
    "disputes": null,
    "mandate_id": null,
    "mandate_data": null,
    "setup_future_usage": null,
    "off_session": null,
    "capture_on": null,
    "capture_method": "manual",
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "last4": "1111",
            "card_type": null,
            "card_network": null,
            "card_issuer": null,
            "card_issuing_country": null,
            "card_isin": "411111",
            "card_extended_bin": null,
            "card_exp_month": "01",
            "card_exp_year": "29",
            "card_holder_name": null,
            "payment_checks": null,
            "authentication_data": null
        },
        "billing": null
    },
    "payment_token": null,
    "shipping": null,
    "billing": null,
    "order_details": null,
    "email": null,
    "name": null,
    "phone": null,
    "return_url": null,
    "authentication_type": "no_three_ds",
    "statement_descriptor_name": null,
    "statement_descriptor_suffix": null,
    "next_action": null,
    "cancellation_reason": null,
    "error_code": null,
    "error_message": null,
    "unified_code": null,
    "unified_message": null,
    "payment_experience": null,
    "payment_method_type": "credit",
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": false,
    "connector_transaction_id": "051124O2C-332C3670-20A1-42DA-B71F-BC54AED2807A",
    "frm_message": null,
    "metadata": null,
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": null,
    "payment_link": null,
    "profile_id": "pro_yzFt1TBeVUEs9Pc4O4J4",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_4xwh6f3O1nkokP1N5N7u",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2024-11-05T16:16:53.192Z",
    "fingerprint": null,
    "browser_info": null,
    "payment_method_id": null,
    "payment_method_status": null,
    "updated": "2024-11-05T16:02:14.492Z",
    "charges": null,
    "frm_metadata": null,
    "merchant_order_reference_id": null,
    "order_tax_amount": null,
    "connector_mandate_id": null
}

Refunds

Request
curl --location 'http://localhost:8080/refunds' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'api-key: dev_6rV2U010InOypaGTo6iqMHMvFapQAlBBg8LnGKYaP5f7HljVy9PIcYpF8SBovgDU' \
--data '{
  "payment_id": "pay_cFs9lujpuOm2lJJ7yLUq",
  "amount": 600,
  "reason": "Customer returned product",
  "refund_type": "instant",
  "metadata": {
    "udf1": "value1",
    "new_customer": "true",
    "login_date": "2019-09-10T10:11:12Z"
  }
}'
Response
{
    "refund_id": "ref_vZfboHyu9uG15sgsyBr4",
    "payment_id": "pay_cFs9lujpuOm2lJJ7yLUq",
    "amount": 600,
    "currency": "USD",
    "status": "succeeded",
    "reason": "Customer returned product",
    "metadata": {
        "udf1": "value1",
        "new_customer": "true",
        "login_date": "2019-09-10T10:11:12Z"
    },
    "error_message": null,
    "error_code": null,
    "created_at": "2024-11-05T16:02:43.922Z",
    "updated_at": "2024-11-05T16:02:49.037Z",
    "connector": "elavon",
    "profile_id": "pro_yzFt1TBeVUEs9Pc4O4J4",
    "merchant_connector_id": "mca_4xwh6f3O1nkokP1N5N7u",
    "charges": null
}

Psync

Request
curl --location 'http://localhost:8080/payments/pay_cFs9lujpuOm2lJJ7yLUq?force_sync=true' \
--header 'Accept: application/json' \
--header 'api-key: dev_6rV2U010InOypaGTo6iqMHMvFapQAlBBg8LnGKYaP5f7HljVy9PIcYpF8SBovgDU' \
--data ''
Response
{
    "payment_id": "pay_cFs9lujpuOm2lJJ7yLUq",
    "merchant_id": "merchant_1730784635",
    "status": "partially_captured",
    "amount": 1400,
    "net_amount": 1400,
    "shipping_cost": null,
    "amount_capturable": 0,
    "amount_received": 650,
    "connector": "elavon",
    "client_secret": "pay_cFs9lujpuOm2lJJ7yLUq_secret_kJwPzcJNoCekNw0Xoy2A",
    "created": "2024-11-05T16:01:53.192Z",
    "currency": "USD",
    "customer_id": null,
    "customer": {
        "id": null,
        "name": null,
        "email": "[email protected]",
        "phone": null,
        "phone_country_code": null
    },
    "description": null,
    "refunds": [
        {
            "refund_id": "ref_vZfboHyu9uG15sgsyBr4",
            "payment_id": "pay_cFs9lujpuOm2lJJ7yLUq",
            "amount": 600,
            "currency": "USD",
            "status": "succeeded",
            "reason": "Customer returned product",
            "metadata": {
                "udf1": "value1",
                "new_customer": "true",
                "login_date": "2019-09-10T10:11:12Z"
            },
            "error_message": null,
            "error_code": null,
            "created_at": "2024-11-05T16:02:43.922Z",
            "updated_at": "2024-11-05T16:02:49.037Z",
            "connector": "elavon",
            "profile_id": "pro_yzFt1TBeVUEs9Pc4O4J4",
            "merchant_connector_id": "mca_4xwh6f3O1nkokP1N5N7u",
            "charges": null
        }
    ],
    "disputes": null,
    "mandate_id": null,
    "mandate_data": null,
    "setup_future_usage": null,
    "off_session": null,
    "capture_on": null,
    "capture_method": "manual",
    "payment_method": "card",
    "payment_method_data": {
        "card": {
            "last4": "1111",
            "card_type": null,
            "card_network": null,
            "card_issuer": null,
            "card_issuing_country": null,
            "card_isin": "411111",
            "card_extended_bin": null,
            "card_exp_month": "01",
            "card_exp_year": "29",
            "card_holder_name": null,
            "payment_checks": null,
            "authentication_data": null
        },
        "billing": null
    },
    "payment_token": null,
    "shipping": null,
    "billing": null,
    "order_details": null,
    "email": null,
    "name": null,
    "phone": null,
    "return_url": null,
    "authentication_type": "no_three_ds",
    "statement_descriptor_name": null,
    "statement_descriptor_suffix": null,
    "next_action": null,
    "cancellation_reason": null,
    "error_code": null,
    "error_message": null,
    "unified_code": null,
    "unified_message": null,
    "payment_experience": null,
    "payment_method_type": "credit",
    "connector_label": null,
    "business_country": null,
    "business_label": "default",
    "business_sub_label": null,
    "allowed_payment_method_types": null,
    "ephemeral_key": null,
    "manual_retry_allowed": false,
    "connector_transaction_id": "051124O2C-332C3670-20A1-42DA-B71F-BC54AED2807A",
    "frm_message": null,
    "metadata": null,
    "connector_metadata": null,
    "feature_metadata": null,
    "reference_id": null,
    "payment_link": null,
    "profile_id": "pro_yzFt1TBeVUEs9Pc4O4J4",
    "surcharge_details": null,
    "attempt_count": 1,
    "merchant_decision": null,
    "merchant_connector_id": "mca_4xwh6f3O1nkokP1N5N7u",
    "incremental_authorization_allowed": null,
    "authorization_count": null,
    "incremental_authorizations": null,
    "external_authentication_details": null,
    "external_3ds_authentication_attempted": false,
    "expires_on": "2024-11-05T16:16:53.192Z",
    "fingerprint": null,
    "browser_info": null,
    "payment_method_id": null,
    "payment_method_status": null,
    "updated": "2024-11-05T16:02:14.492Z",
    "charges": null,
    "frm_metadata": null,
    "merchant_order_reference_id": null,
    "order_tax_amount": null,
    "connector_mandate_id": null
}
Screenshot 2024-11-25 at 12 27 14 PM Screenshot 2024-11-25 at 12 22 41 PM

Checklist

  • I formatted the code cargo +nightly fmt --all
  • I addressed lints thrown by cargo clippy
  • I reviewed the submitted code
  • I added unit tests for my changes where possible

@awasthi21 awasthi21 added the A-connector-integration Area: Connector integration label Nov 5, 2024
@awasthi21 awasthi21 self-assigned this Nov 5, 2024
@awasthi21 awasthi21 requested review from a team as code owners November 5, 2024 16:04
Copy link

semanticdiff-com bot commented Nov 5, 2024

Review changes with  SemanticDiff

Changed Files
File Status
  crates/api_models/src/connector_enums.rs  27% smaller
  crates/hyperswitch_connectors/src/connectors/elavon/transformers.rs  17% smaller
  crates/hyperswitch_connectors/src/connectors/elavon.rs  17% smaller
  .typos.toml Unsupported file format
  Cargo.lock Unsupported file format
  api-reference-v2/openapi_spec.json  0% smaller
  api-reference/openapi_spec.json  0% smaller
  config/config.example.toml Unsupported file format
  config/deployments/integration_test.toml Unsupported file format
  config/deployments/production.toml Unsupported file format
  config/deployments/sandbox.toml Unsupported file format
  config/development.toml Unsupported file format
  config/docker_compose.toml Unsupported file format
  crates/common_enums/src/connector_enums.rs  0% smaller
  crates/connector_configs/src/connector.rs  0% smaller
  crates/connector_configs/toml/development.toml Unsupported file format
  crates/connector_configs/toml/production.toml Unsupported file format
  crates/connector_configs/toml/sandbox.toml Unsupported file format
  crates/hyperswitch_connectors/Cargo.toml Unsupported file format
  crates/hyperswitch_connectors/src/utils.rs  0% smaller
  crates/hyperswitch_domain_models/src/router_request_types.rs  0% smaller
  crates/router/src/configs/defaults/payment_connector_required_fields.rs  0% smaller
  crates/router/src/core/admin.rs  0% smaller
  crates/router/src/core/utils.rs  0% smaller
  crates/router/src/types/api.rs  0% smaller
  crates/router/src/types/transformers.rs  0% smaller
  crates/router/tests/connectors/utils.rs  0% smaller
  cypress-tests/cypress/e2e/PaymentUtils/Elavon.js  0% smaller
  cypress-tests/cypress/e2e/PaymentUtils/Utils.js  0% smaller
  loadtest/config/development.toml Unsupported file format

@hyperswitch-bot hyperswitch-bot bot added the M-api-contract-changes Metadata: This PR involves API contract changes label Nov 5, 2024
Comment on lines 44 to 62
pub fn parse_struct<T: DeserializeOwned>(xml_data: &[u8]) -> Result<T, errors::ConnectorError> {
let response_str = str::from_utf8(xml_data)
.map_err(|e| {
router_env::logger::error!("Error converting response data to UTF-8: {:?}", e);
errors::ConnectorError::ResponseDeserializationFailed
})?
.trim();
let result: T = from_str(response_str).map_err(|e| {
router_env::logger::error!("Error deserializing XML response: {:?}", e);
errors::ConnectorError::ResponseDeserializationFailed
})?;

Ok(result)
}
pub fn struct_to_xml<T: Serialize>(
item: &T,
) -> Result<HashMap<String, Secret<String, WithoutType>>, errors::ConnectorError> {
let xml_content = quick_xml::se::to_string_with_root("txn", &item).map_err(|e| {
router_env::logger::error!("Error serializing Struct: {:?}", e);
errors::ConnectorError::ResponseDeserializationFailed
})?;

let mut result = HashMap::new();
result.insert(
"xmldata".to_string(),
Secret::<_, WithoutType>::new(xml_content),
);
Ok(result)
}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we move this to connector utils ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moved parse_struct to the utils, but the struct_to_xml contains some steps specific to Paybox (such as adding the root item and "xmldata".to_string())

@awasthi21 awasthi21 force-pushed the 7269-featconnector-elavon-add-payment-flow-cards-for-elavon branch from aff742e to 0791bf8 Compare November 15, 2024 05:44
@awasthi21 awasthi21 requested a review from a team as a code owner November 15, 2024 05:44
@awasthi21 awasthi21 force-pushed the 7269-featconnector-elavon-add-payment-flow-cards-for-elavon branch from 0791bf8 to 888ad70 Compare November 15, 2024 05:46
Comment on lines 536 to 537
| Some(SslIssuerResponse::PartialSuccess10)
| Some(SslIssuerResponse::PartialSuccess11)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we consider transaction as successful if we get PartialSuccess10 or PartialSuccess10 in response?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ideally not , In their docs they say Success is 00 only

Original issuer response
The issuer response returned during the authorization attempt.
An ssl_issuer_response = 00 indicates success.
An ssl_issuer_response = 85 indicates no reason to decline.
An ssl_issuer_response = 10 or 11 indicates partial success.
An ssl_issuer_response not equal to 00, 10, 11, or 85 indicates a decline or failure.

@awasthi21 awasthi21 force-pushed the 7269-featconnector-elavon-add-payment-flow-cards-for-elavon branch from eb6dfbe to 970e8f8 Compare November 19, 2024 05:26
AkshayaFoiger
AkshayaFoiger previously approved these changes Nov 19, 2024
SanchithHegde
SanchithHegde previously approved these changes Nov 19, 2024
Copy link
Member

@SanchithHegde SanchithHegde left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Other than that, looks good to me!

})?
.trim();
let result: T = quick_xml::de::from_str(response_str).map_err(|e| {
router_env::logger::error!("Error deserializing XML response: {:?}", e);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is there a possibility of this logging sensitive information?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have checked the response; we don’t receive any connector credentials or card details in it.

@Gnanasundari24
Copy link
Contributor

@awasthi21 Why refund and save card flows everything is failing?

@awasthi21 awasthi21 force-pushed the 7269-featconnector-elavon-add-payment-flow-cards-for-elavon branch from cfdc024 to abafe4f Compare November 25, 2024 06:26
@awasthi21
Copy link
Contributor Author

@Gnanasundari24 Some Refund flow are failing as as 3DS is not implemented

@Gnanasundari24
Copy link
Contributor

@awasthi21 Even though its not implemented you can map the error code and error message properly

@Gnanasundari24 Gnanasundari24 added this pull request to the merge queue Nov 25, 2024
@github-merge-queue github-merge-queue bot removed this pull request from the merge queue due to failed status checks Nov 25, 2024
@Gnanasundari24 Gnanasundari24 added this pull request to the merge queue Nov 25, 2024
Merged via the queue into main with commit 6887681 Nov 25, 2024
19 of 21 checks passed
@Gnanasundari24 Gnanasundari24 deleted the 7269-featconnector-elavon-add-payment-flow-cards-for-elavon branch November 25, 2024 14:38
bsayak03 pushed a commit that referenced this pull request Nov 26, 2024
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
bsayak03 pushed a commit that referenced this pull request Nov 26, 2024
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
AmeyWale-HS pushed a commit to AmeyWale-HS/hyperswitch that referenced this pull request Nov 26, 2024
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-connector-integration Area: Connector integration M-api-contract-changes Metadata: This PR involves API contract changes
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants