Skip to content

Conversation

kashif-m
Copy link
Contributor

@kashif-m kashif-m commented Jun 11, 2025

Type of Change

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

Description

This PR introduces populating connector_customer field in customers table during payment method migration.

Additional Changes

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

Motivation and Context

Allows merchants to populate connector_customer per merchant_connector_id based on connector_customer_id passed in the request.

How did you test it?

Steps for testing -

  1. Create a merchant account

  2. Create a merchant's connector account

3. Run /migrate-form API

cURL

curl --location --request POST 'http://localhost:8080/payment_methods/migrate-batch' \
    --header 'api-key: test_admin' \
    --form 'merchant_id="merchant_1749642145"' \
    --form 'merchant_connector_id="mca_llNSJsE2tTVdpfrb6n3x"' \
    --form 'file=@"/Users/test/Downloads/migrate_sample.csv"'

Response

[{"line_number":1,"customer_id":"customerReference-43","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_16\",\"message\":\"Card Expired\"}}","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":2,"customer_id":"customerReference-44","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_16\",\"message\":\"Card Expired\"}}","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":3,"customer_id":"customerReference-45","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_16\",\"message\":\"Card Expired\"}}","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":4,"customer_id":"customerReference-46","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_16\",\"message\":\"Card Expired\"}}","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":5,"customer_id":"customerReference-47","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_16\",\"message\":\"Card Expired\"}}","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":6,"payment_method_id":"pm_YQMH2vTIIhT0dDwIz2wu","payment_method":"card","payment_method_type":"credit","customer_id":"customerReference-48","migration_status":"Success","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":true,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":true},{"line_number":7,"payment_method_id":"pm_6ir1orxpyF5wy4kkOYwh","payment_method":"card","payment_method_type":"credit","customer_id":"customerReference-49","migration_status":"Success","card_number_masked":"","card_migrated":null,"network_token_migrated":true,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":true},{"line_number":8,"customer_id":"customerReference-50","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_07\",\"message\":\"Invalid value provided: card_exp_month\"}}","card_number_masked":"","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":9,"payment_method_id":"pm_uMqDIb7yeJL6cKDXHOm0","payment_method":"card","payment_method_type":"credit","customer_id":"customerReference-51","migration_status":"Success","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":true,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":10,"customer_id":"customerReference-69","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_16\",\"message\":\"Card Expired\"}}","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":11,"customer_id":"customerReference-89","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_16\",\"message\":\"Invalid Expiry Year\"}}","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":12,"customer_id":"customerReference-99","migration_status":"Failed","migration_error":"{\"error\":{\"type\":\"invalid_request_error\",\"code\":\"IR_16\",\"message\":\"Invalid Expiry Year\"}}","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":null,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null},{"line_number":13,"payment_method_id":"pm_CuESKjB4r0rosTccLRMV","payment_method":"card","payment_method_type":"credit","customer_id":"customerReference-52","migration_status":"Success","card_number_masked":"420000XXXXXX0000","card_migrated":null,"network_token_migrated":true,"connector_mandate_details_migrated":null,"network_transaction_id_migrated":null}]
Look for connector_customer in customers table Screenshot 2025-06-11 at 10 08 27 PM
Find CSV data below
name,email,phone,phone_country_code,customer_id,subscription_id,payment_method,payment_method_type,nick_name,payment_instrument_id,raw_card_number,card_number_masked,card_expiry_month,card_expiry_year,card_scheme,network_token_number,network_token_requestor_ref_id,network_token_expiry_month,network_token_expiry_year,original_transaction_id,billing_address_zip,billing_address_state,billing_address_first_name,billing_address_last_name,billing_address_city,billing_address_country,billing_address_line1,billing_address_line2,connector_customer_id,merchant_connector_id
Max Mustermann,[email protected],,,customerReference-43,orderReference-20240930-220107,card,credit,real joe,instructionReference-20240930-220107-S,4200000000000000,420000XXXXXX0000,1,2025,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,60720116005060,530004,Oman,joey,joey,Oman,,st mark,oman,1,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-44,orderReference-20240930-220107,card,credit,real joe,instructionReference-20240930-220107-S,4200000000000000,420000XXXXXX0000,1,2025,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,60720116005060,530004,Oman,joey,joey,Oman,,st mark,oman,2,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-45,orderReference-20240930-220107,card,credit,real joe,,4200000000000000,420000XXXXXX0000,1,2025,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,60720116005060,530004,Oman,joey,joey,Oman,,st mark,oman,3,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-46,orderReference-20240930-220107,card,credit,real joe,,4200000000000000,420000XXXXXX0000,1,2025,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,60720116005060,530004,Oman,joey,joey,Oman,,st mark,oman,4,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-47,orderReference-20240930-220107,card,credit,real joe,,4200000000000000,420000XXXXXX0000,1,2025,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,60720116005060,530004,Oman,joey,joey,Oman,,st mark,oman,5,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-48,orderReference-20240930-220107,card,credit,real joe,,,420000XXXXXX0000,1,2025,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,60720116005060,530004,Oman,joey,joey,Oman,,st mark,oman,7,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-49,orderReference-20240930-220107,card,credit,real joe,,,,1,2025,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,60720116005060,530004,Oman,joey,joey,Oman,,st mark,oman,6,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-50,orderReference-20240930-220107,card,credit,real joe,,,,,,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,60720116005060,530004,Oman,joey,joey,Oman,,st mark,oman,8,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-51,orderReference-20240930-220107,card,credit,real joe,,,420000XXXXXX0000,1,25,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2025,,530004,Oman,joey,joey,Oman,,st mark,oman,9,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-69,orderReference-20240930-220107,card,credit,real joe,,4200000000000000,420000XXXXXX0000,1,25,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2022,,530004,Oman,joey,joey,Oman,,st mark,oman,10,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-89,orderReference-20240930-220107,card,credit,real joe,,4200000000000000,420000XXXXXX0000,1,22,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2022,,530004,Oman,joey,joey,Oman,,st mark,oman,11,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-99,orderReference-20240930-220107,card,credit,real joe,,4200000000000000,420000XXXXXX0000,1,2022,,5595300359062662,RR16qBRBV-00a00a20uBPVV-18sNRV20uFBTTD22w18s12mRR18sZ00000334051,1,2022,,530004,Oman,joey,joey,Oman,,st mark,oman,12,mca_llNSJsE2tTVdpfrb6n3x
Max Mustermann,[email protected],,,customerReference-52,orderReference-20240930-220107,card,credit,real joe,,,420000XXXXXX0000,1,25,,,,,,,530004,Oman,joey,joey,Oman,,st mark,oman,13,mca_llNSJsE2tTVdpfrb6n3x

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

Summary by CodeRabbit

  • New Features

    • Added support for associating connector-specific customer details with customers during creation and migration.
    • Enhanced customer migration to include connector customer information when available.
  • Bug Fixes

    • Updated customer creation and migration flows to handle new customer details without disrupting existing functionality.
  • Chores

    • Improved internal handling of customer data to support future extensibility with connector-specific fields.

@kashif-m kashif-m self-assigned this Jun 11, 2025
@kashif-m kashif-m requested review from a team as code owners June 11, 2025 12:24
@kashif-m kashif-m linked an issue Jun 11, 2025 that may be closed by this pull request
2 tasks
Copy link

semanticdiff-com bot commented Jun 11, 2025

Review changes with  SemanticDiff

Changed Files
File Status
  crates/router/src/types/api/payment_methods.rs  97% smaller
  crates/api_models/src/payment_methods.rs  61% smaller
  crates/router/src/routes/payment_methods.rs  45% smaller
  crates/router/src/core/customers.rs  22% smaller
  crates/common_types/src/customers.rs  0% smaller
  crates/router/src/compatibility/stripe/customers.rs  0% smaller
  crates/router/src/routes/customers.rs  0% smaller

Copy link

coderabbitai bot commented Jun 11, 2025

Walkthrough

This change introduces support for handling connector-specific customer details during customer creation and migration. New data structures encapsulate connector customer information, and function signatures are updated to accept and propagate these details. The migration and customer creation flows now accommodate optional connector customer IDs, enabling more comprehensive customer data management.

Changes

File(s) Change Summary
crates/api_models/src/payment_methods.rs Added connector_customer_id to PaymentMethodRecord; introduced ConnectorCustomerDetails and PaymentMethodCustomerMigrate; updated conversion logic.
crates/router/src/core/customers.rs Updated function and trait signatures to accept optional connector customer details; handled these in customer creation and migration logic.
crates/router/src/compatibility/stripe/customers.rs
crates/router/src/routes/customers.rs
Updated calls to create_customer to include the new argument for connector customer details (set to None where not used).
crates/router/src/routes/payment_methods.rs Changed migration mapping to use PaymentMethodCustomerMigrate instead of CustomerRequest; updated imports accordingly.
crates/router/src/types/api/payment_methods.rs Added imports for new types: ConnectorCustomerDetails and PaymentMethodCustomerMigrate.

Sequence Diagram(s)

sequenceDiagram
    participant Caller as Migration/Creation Flow
    participant Core as core::customers
    participant Domain as domain::Customer
    participant DB as StorageInterface

    Caller->>Core: create_customer(state, merchant_context, customer_data, connector_customer_details)
    Core->>Core: create_domain_model_from_request(connector_customer_details, ...)
    Core->>Domain: Map fields, attach connector_customer_details if present
    Core->>DB: Persist new Customer with connector details
    DB-->>Core: Confirmation
    Core-->>Caller: Result
Loading

Possibly related issues

Poem

A hop, a leap, a customer anew,
With connectors in tow, their details accrue.
Migrations made easy, with IDs in hand,
Across every merchant, our records now stand.
The warren grows smarter, the data flows free—
Hooray for connectors, and hoppy are we!
🐇✨

✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🔭 Outside diff range comments (1)
crates/router/src/routes/customers.rs (1)

24-29: ⚠️ Potential issue

Missing the new argument – will not compile when customer_v2 is ON

create_customer now expects (state, merchant_context, req, Option<ConnectorCustomerDetails>), but the customer-v2 path still supplies only three arguments.

-            create_customer(state, merchant_context, req)
+            create_customer(state, merchant_context, req, None)

Without this change the build will fail for --features "v2,customer_v2" (or at runtime if a different overload is picked).
Please update this call (and any similar occurrences) to keep all feature combinations green.

🧹 Nitpick comments (6)
crates/router/src/routes/payment_methods.rs (2)

20-24: Nit: redundant core::customers import guard

Both the use crate::core::customers line and the call-site below are behind the same feature flags.
If you ever broaden either side, remember to mirror the flags, otherwise dead-code / missing-import errors creep in. No action needed now.


372-377: Allocate-less mapping

req.iter().map(...).collect() creates an intermediate Vec.
customers::migrate_customers takes a Vec, so this is unavoidable, but you can pre-size it to avoid a second allocation:

-                    req.iter()
-                        .map(|e| payment_methods::PaymentMethodCustomerMigrate::from((e.clone(), merchant_id.clone())))
-                        .collect(),
+                    {
+                        let mut v = Vec::with_capacity(req.len());
+                        for rec in &req {
+                            v.push(payment_methods::PaymentMethodCustomerMigrate::from((
+                                rec.clone(),
+                                merchant_id.clone(),
+                            )));
+                        }
+                        v
+                    },

Tiny optimisation, optional.

crates/api_models/src/payment_methods.rs (3)

2567-2571: Derive missing traits & add OpenAPI schema for ConnectorCustomerDetails

ConnectorCustomerDetails is transported across service boundaries (later embedded in API requests).
Please derive the common trait set (Debug, Eq, PartialEq, ToSchema) to keep it in line with other DTOs and to ensure it appears in generated spec files:

-#[derive(Debug, Clone, serde::Deserialize, serde::Serialize)]
+#[derive(Debug, Clone, PartialEq, Eq, serde::Deserialize, serde::Serialize, ToSchema)]

2573-2578: Expose PaymentMethodCustomerMigrate in OpenAPI & reuse existing types

Same as the previous comment – this struct is now part of the public contract between the migrate-flow and the customer module, yet it lacks ToSchema.
Please add it and, if possible, re-export the struct behind the same feature flags that gate customers::CustomerRequest to prevent compilation under unsupported builds.


2753-2788: Minor optimisation & clarity in From impl

  1. The .zip() call consumes both Options, which is fine, but it also moves the values out of record; after that point those fields become un-usable.
    As we do not use them later this is correct, but adding an inline comment would prevent accidental re-use in future edits.

  2. You allocate an AddressDetails every time, even when all address lines are None.
    A small micro-optimisation is to construct the payments::Address only when at least one of the fields is present, e.g.:

-let address = Some(payments::AddressDetails { ... });
+let address = {
+    let details = payments::AddressDetails { ... };
+    if details.is_empty() { None } else { Some(details) }
+};

(assuming an is_empty helper exists – if not, keep as-is).

Nothing blocking, just a heads-up.

crates/router/src/core/customers.rs (1)

1351-1352: Redundant parameter in update flow

Similar to the create path, connector_customer_details is supplied to the v2 update implementation but never used. If updates are not supposed to touch connector_customer, drop the argument here to avoid confusion; otherwise implement the necessary merge logic.

-        connector_customer_details: &'a Option<payment_methods_api::ConnectorCustomerDetails>,
+        _connector_customer_details: &'a Option<payment_methods_api::ConnectorCustomerDetails>,

or integrate the field as appropriate.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5ce2ab2 and f4ea6a6.

📒 Files selected for processing (6)
  • crates/api_models/src/payment_methods.rs (3 hunks)
  • crates/router/src/compatibility/stripe/customers.rs (1 hunks)
  • crates/router/src/core/customers.rs (13 hunks)
  • crates/router/src/routes/customers.rs (1 hunks)
  • crates/router/src/routes/payment_methods.rs (2 hunks)
  • crates/router/src/types/api/payment_methods.rs (1 hunks)
⏰ Context from checks skipped due to timeout of 900000ms (6)
  • GitHub Check: Check compilation on MSRV toolchain (ubuntu-latest)
  • GitHub Check: Check compilation for V2 features
  • GitHub Check: Run tests on stable toolchain (ubuntu-latest)
  • GitHub Check: Run Cypress tests
  • GitHub Check: Check wasm build
  • GitHub Check: Validate generated OpenAPI spec file
🔇 Additional comments (3)
crates/router/src/types/api/payment_methods.rs (1)

21-34: Import list looks good, but keep an eye on cfg divergence

The new types are only available when not(feature = "payment_methods_v2").
Down-stream code that always expects ConnectorCustomerDetails / PaymentMethodCustomerMigrate will fail to compile when payment_methods_v2 is enabled. Make sure every call-site behind other feature flags is also conditionally guarded (or re-export the aliases behind a common facade).

crates/router/src/compatibility/stripe/customers.rs (1)

60-65: OK – 4ᵗʰ parameter added correctly

The extra None matches the updated signature
create_customer(state, merchant_context, req, Option<ConnectorCustomerDetails>).
Nothing else to flag here.

crates/router/src/routes/customers.rs (1)

58-63: Consistent with new signature

Here the extra None is already added – good catch.

Comment on lines +230 to 231
connector_customer_details: &'a Option<payment_methods_api::ConnectorCustomerDetails>,
_db: &'a dyn StorageInterface,
Copy link

Choose a reason for hiding this comment

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

🛠️ Refactor suggestion

connector_customer_details parameter is accepted but silently ignored

The customer_v2 implementation of CustomerCreateBridge::create_domain_model_from_request now receives connector_customer_details, yet the body never references it. This will:

  1. trigger an “unused variable” warning (hidden only by the feature gate),
  2. break functional parity with the V1 path, leaving connector_customer always None for v2 customers.

Either wire the data into the domain::Customer (preferred) or prefix the argument with _ to silence warnings until support is added.

🤖 Prompt for AI Agents
In crates/router/src/core/customers.rs around lines 230 to 231, the parameter
connector_customer_details is accepted but not used, causing unused variable
warnings and breaking functional parity with the V1 path. To fix this, either
integrate connector_customer_details into the domain::Customer model within the
create_domain_model_from_request function or rename the parameter to
_connector_customer_details to suppress the warning until full support is
implemented.

@kashif-m kashif-m requested review from a team as code owners June 11, 2025 14:25
@hyperswitch-bot hyperswitch-bot bot added M-database-changes Metadata: This PR involves database schema changes M-api-contract-changes Metadata: This PR involves API contract changes labels Jun 11, 2025
@kashif-m kashif-m force-pushed the 8318-feature-include-connector_customer-creation-during-payment-methods-migration branch from b7d77b0 to 928b9d5 Compare June 11, 2025 14:26
@kashif-m kashif-m removed request for a team June 11, 2025 14:27
@hyperswitch-bot hyperswitch-bot bot removed M-database-changes Metadata: This PR involves database schema changes M-api-contract-changes Metadata: This PR involves API contract changes labels Jun 11, 2025
@kashif-m kashif-m added the A-payment-methods Area: Payment Methods label Jun 11, 2025
@hyperswitch-bot hyperswitch-bot bot added the M-api-contract-changes Metadata: This PR involves API contract changes label Jun 11, 2025
@kashif-m kashif-m force-pushed the 8318-feature-include-connector_customer-creation-during-payment-methods-migration branch from 11f021f to 6dbe5ba Compare June 12, 2025 10:23
@hyperswitch-bot hyperswitch-bot bot removed the M-api-contract-changes Metadata: This PR involves API contract changes label Jun 12, 2025
jagan-jaya
jagan-jaya previously approved these changes Jun 13, 2025
jarnura
jarnura previously approved these changes Jun 16, 2025
@kashif-m kashif-m dismissed stale reviews from jarnura and jagan-jaya via 40f71cd June 16, 2025 13:53
@likhinbopanna likhinbopanna added this pull request to the merge queue Jun 17, 2025
Merged via the queue into main with commit 3899ddd Jun 17, 2025
15 of 20 checks passed
@likhinbopanna likhinbopanna deleted the 8318-feature-include-connector_customer-creation-during-payment-methods-migration branch June 17, 2025 09:58
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-payment-methods Area: Payment Methods
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[FEATURE] include connector_customer creation during payment methods migration
4 participants