Skip to content

Commit a603e04

Browse files
committed
refactor: make StripeConnect onboarding fields optional
1 parent 7484a79 commit a603e04

File tree

2 files changed

+69
-114
lines changed

2 files changed

+69
-114
lines changed

crates/api_models/src/payouts.rs

Lines changed: 21 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -425,29 +425,29 @@ pub struct PayoutVendorAccountDetails {
425425
pub struct PayoutVendorDetails {
426426
pub account_type: String,
427427
pub business_type: String,
428-
pub business_profile_mcc: i32,
429-
pub business_profile_url: String,
430-
pub business_profile_name: Secret<String>,
431-
pub company_address_line1: Secret<String>,
432-
pub company_address_line2: Secret<String>,
433-
pub company_address_postal_code: Secret<String>,
434-
pub company_address_city: Secret<String>,
435-
pub company_address_state: Secret<String>,
436-
pub company_phone: Secret<String>,
437-
pub company_tax_id: Secret<String>,
438-
pub company_owners_provided: bool,
439-
pub capabilities_card_payments: bool,
440-
pub capabilities_transfers: bool,
428+
pub business_profile_mcc: Option<i32>,
429+
pub business_profile_url: Option<String>,
430+
pub business_profile_name: Option<Secret<String>>,
431+
pub company_address_line1: Option<Secret<String>>,
432+
pub company_address_line2: Option<Secret<String>>,
433+
pub company_address_postal_code: Option<Secret<String>>,
434+
pub company_address_city: Option<Secret<String>>,
435+
pub company_address_state: Option<Secret<String>>,
436+
pub company_phone: Option<Secret<String>>,
437+
pub company_tax_id: Option<Secret<String>>,
438+
pub company_owners_provided: Option<bool>,
439+
pub capabilities_card_payments: Option<bool>,
440+
pub capabilities_transfers: Option<bool>,
441441
}
442442

443443
#[derive(Default, DebugAsDisplay, Debug, Serialize, ToSchema, Clone, Deserialize)]
444444
pub struct PayoutIndividualDetails {
445-
pub tos_acceptance_date: i64,
446-
pub tos_acceptance_ip: Secret<String>,
447-
pub individual_dob_day: Secret<String>,
448-
pub individual_dob_month: Secret<String>,
449-
pub individual_dob_year: Secret<String>,
450-
pub individual_id_number: Secret<String>,
451-
pub individual_ssn_last_4: Secret<String>,
452-
pub external_account_account_holder_type: String,
445+
pub tos_acceptance_date: Option<i64>,
446+
pub tos_acceptance_ip: Option<Secret<String>>,
447+
pub individual_dob_day: Option<Secret<String>>,
448+
pub individual_dob_month: Option<Secret<String>>,
449+
pub individual_dob_year: Option<Secret<String>>,
450+
pub individual_id_number: Option<Secret<String>>,
451+
pub individual_ssn_last_4: Option<Secret<String>>,
452+
pub external_account_account_holder_type: Option<String>,
453453
}

crates/router/src/connector/stripe/transformers.rs

Lines changed: 48 additions & 93 deletions
Original file line numberDiff line numberDiff line change
@@ -3795,67 +3795,67 @@ pub struct StripeConnectReversalResponse {
37953795
pub struct StripeConnectRecipientCreateRequest {
37963796
#[serde(rename = "type")]
37973797
account_type: String,
3798-
country: enums::CountryAlpha2,
3799-
email: Email,
3798+
country: Option<enums::CountryAlpha2>,
3799+
email: Option<Email>,
38003800
#[serde(rename = "capabilities[card_payments][requested]")]
3801-
capabilities_card_payments: bool,
3801+
capabilities_card_payments: Option<bool>,
38023802
#[serde(rename = "capabilities[transfers][requested]")]
3803-
capabilities_transfers: bool,
3803+
capabilities_transfers: Option<bool>,
38043804
#[serde(rename = "tos_acceptance[date]")]
3805-
tos_acceptance_date: i64,
3805+
tos_acceptance_date: Option<i64>,
38063806
#[serde(rename = "tos_acceptance[ip]")]
3807-
tos_acceptance_ip: Secret<String>,
3807+
tos_acceptance_ip: Option<Secret<String>>,
38083808
business_type: String,
38093809
#[serde(rename = "business_profile[mcc]")]
3810-
business_profile_mcc: i32,
3810+
business_profile_mcc: Option<i32>,
38113811
#[serde(rename = "business_profile[url]")]
3812-
business_profile_url: String,
3812+
business_profile_url: Option<String>,
38133813
#[serde(rename = "business_profile[name]")]
3814-
business_profile_name: Secret<String>,
3814+
business_profile_name: Option<Secret<String>>,
38153815
#[serde(rename = "company[address][line1]")]
3816-
company_address_line1: Secret<String>,
3816+
company_address_line1: Option<Secret<String>>,
38173817
#[serde(rename = "company[address][line2]")]
3818-
company_address_line2: Secret<String>,
3818+
company_address_line2: Option<Secret<String>>,
38193819
#[serde(rename = "company[address][postal_code]")]
3820-
company_address_postal_code: Secret<String>,
3820+
company_address_postal_code: Option<Secret<String>>,
38213821
#[serde(rename = "company[address][city]")]
3822-
company_address_city: Secret<String>,
3822+
company_address_city: Option<Secret<String>>,
38233823
#[serde(rename = "company[address][state]")]
3824-
company_address_state: Secret<String>,
3824+
company_address_state: Option<Secret<String>>,
38253825
#[serde(rename = "company[phone]")]
3826-
company_phone: Secret<String>,
3826+
company_phone: Option<Secret<String>>,
38273827
#[serde(rename = "company[tax_id]")]
3828-
company_tax_id: Secret<String>,
3828+
company_tax_id: Option<Secret<String>>,
38293829
#[serde(rename = "company[owners_provided]")]
3830-
company_owners_provided: bool,
3830+
company_owners_provided: Option<bool>,
38313831
#[serde(rename = "individual[first_name]")]
3832-
individual_first_name: Secret<String>,
3832+
individual_first_name: Option<Secret<String>>,
38333833
#[serde(rename = "individual[last_name]")]
3834-
individual_last_name: Secret<String>,
3834+
individual_last_name: Option<Secret<String>>,
38353835
#[serde(rename = "individual[dob][day]")]
3836-
individual_dob_day: Secret<String>,
3836+
individual_dob_day: Option<Secret<String>>,
38373837
#[serde(rename = "individual[dob][month]")]
3838-
individual_dob_month: Secret<String>,
3838+
individual_dob_month: Option<Secret<String>>,
38393839
#[serde(rename = "individual[dob][year]")]
3840-
individual_dob_year: Secret<String>,
3840+
individual_dob_year: Option<Secret<String>>,
38413841
#[serde(rename = "individual[address][line1]")]
3842-
individual_address_line1: Secret<String>,
3842+
individual_address_line1: Option<Secret<String>>,
38433843
#[serde(rename = "individual[address][line2]")]
3844-
individual_address_line2: Secret<String>,
3844+
individual_address_line2: Option<Secret<String>>,
38453845
#[serde(rename = "individual[address][postal_code]")]
3846-
individual_address_postal_code: Secret<String>,
3846+
individual_address_postal_code: Option<Secret<String>>,
38473847
#[serde(rename = "individual[address][city]")]
3848-
individual_address_city: String,
3848+
individual_address_city: Option<String>,
38493849
#[serde(rename = "individual[address][state]")]
3850-
individual_address_state: Secret<String>,
3850+
individual_address_state: Option<Secret<String>>,
38513851
#[serde(rename = "individual[email]")]
3852-
individual_email: Email,
3852+
individual_email: Option<Email>,
38533853
#[serde(rename = "individual[phone]")]
3854-
individual_phone: Secret<String>,
3854+
individual_phone: Option<Secret<String>>,
38553855
#[serde(rename = "individual[id_number]")]
3856-
individual_id_number: Secret<String>,
3856+
individual_id_number: Option<Secret<String>>,
38573857
#[serde(rename = "individual[ssn_last_4]")]
3858-
individual_ssn_last_4: Secret<String>,
3858+
individual_ssn_last_4: Option<Secret<String>>,
38593859
}
38603860

38613861
#[cfg(feature = "payouts")]
@@ -4093,21 +4093,7 @@ impl<F> TryFrom<&types::PayoutsRouterData<F>> for StripeConnectRecipientCreateRe
40934093
.change_context(errors::ConnectorError::MissingRequiredField {
40944094
field_name: "email",
40954095
})?;
4096-
let address = item.get_billing_address()?;
4097-
let individual_first_name = address
4098-
.first_name
4099-
.clone()
4100-
.get_required_value("first_name")
4101-
.change_context(errors::ConnectorError::MissingRequiredField {
4102-
field_name: "address.first_name",
4103-
})?;
4104-
let individual_last_name = address
4105-
.last_name
4106-
.clone()
4107-
.get_required_value("last_name")
4108-
.change_context(errors::ConnectorError::MissingRequiredField {
4109-
field_name: "address.last_name",
4110-
})?;
4096+
let address = item.get_billing_address()?.clone();
41114097
let payout_vendor_details = request
41124098
.vendor_details
41134099
.get_required_value("vendor_details")
@@ -4120,8 +4106,8 @@ impl<F> TryFrom<&types::PayoutsRouterData<F>> for StripeConnectRecipientCreateRe
41204106
);
41214107
Ok(Self {
41224108
account_type: vendor_details.account_type,
4123-
country: request.country_code,
4124-
email: customer_email.clone(),
4109+
country: Some(request.country_code),
4110+
email: Some(customer_email.clone()),
41254111
capabilities_card_payments: vendor_details.capabilities_card_payments,
41264112
capabilities_transfers: vendor_details.capabilities_transfers,
41274113
tos_acceptance_date: individual_details.tos_acceptance_date,
@@ -4138,53 +4124,18 @@ impl<F> TryFrom<&types::PayoutsRouterData<F>> for StripeConnectRecipientCreateRe
41384124
company_phone: vendor_details.company_phone,
41394125
company_tax_id: vendor_details.company_tax_id,
41404126
company_owners_provided: vendor_details.company_owners_provided,
4141-
individual_first_name,
4142-
individual_last_name,
4127+
individual_first_name: address.first_name,
4128+
individual_last_name: address.last_name,
41434129
individual_dob_day: individual_details.individual_dob_day,
41444130
individual_dob_month: individual_details.individual_dob_month,
41454131
individual_dob_year: individual_details.individual_dob_year,
4146-
individual_address_line1: address
4147-
.line1
4148-
.clone()
4149-
.get_required_value("line1")
4150-
.change_context(errors::ConnectorError::MissingRequiredField {
4151-
field_name: "address.line1",
4152-
})?,
4153-
individual_address_line2: address
4154-
.line2
4155-
.clone()
4156-
.get_required_value("line2")
4157-
.change_context(errors::ConnectorError::MissingRequiredField {
4158-
field_name: "address.line2",
4159-
})?,
4160-
individual_address_postal_code: address
4161-
.zip
4162-
.clone()
4163-
.get_required_value("zip")
4164-
.change_context(errors::ConnectorError::MissingRequiredField {
4165-
field_name: "address.zip",
4166-
})?,
4167-
individual_address_city: address
4168-
.city
4169-
.clone()
4170-
.get_required_value("city")
4171-
.change_context(errors::ConnectorError::MissingRequiredField {
4172-
field_name: "address.city",
4173-
})?,
4174-
individual_address_state: address
4175-
.state
4176-
.clone()
4177-
.get_required_value("state")
4178-
.change_context(errors::ConnectorError::MissingRequiredField {
4179-
field_name: "address.state",
4180-
})?,
4181-
individual_email: customer_email,
4182-
individual_phone: customer_details
4183-
.phone
4184-
.get_required_value("phone")
4185-
.change_context(errors::ConnectorError::MissingRequiredField {
4186-
field_name: "address.phone",
4187-
})?,
4132+
individual_address_line1: address.line1,
4133+
individual_address_line2: address.line2,
4134+
individual_address_postal_code: address.zip,
4135+
individual_address_city: address.city,
4136+
individual_address_state: address.state,
4137+
individual_email: Some(customer_email),
4138+
individual_phone: customer_details.phone,
41884139
individual_id_number: individual_details.individual_id_number,
41894140
individual_ssn_last_4: individual_details.individual_ssn_last_4,
41904141
})
@@ -4256,7 +4207,11 @@ impl<F> TryFrom<&types::PayoutsRouterData<F>> for StripeConnectRecipientAccountC
42564207
external_account_currency: request.destination_currency.to_owned(),
42574208
external_account_account_holder_name: customer_name,
42584209
external_account_account_holder_type: individual_details
4259-
.external_account_account_holder_type,
4210+
.external_account_account_holder_type
4211+
.get_required_value("external_account_account_holder_type")
4212+
.change_context(errors::ConnectorError::MissingRequiredField {
4213+
field_name: "external_account_account_holder_type",
4214+
})?,
42604215
external_account_account_number: bank_details.bank_account_number,
42614216
external_account_routing_number: bank_details.bank_routing_number,
42624217
}))

0 commit comments

Comments
 (0)