mirror of
				https://github.com/juspay/hyperswitch.git
				synced 2025-10-31 01:57:45 +08:00 
			
		
		
		
	feat(router): add payment method display name to feature matrix response (#7639)
Co-authored-by: hyperswitch-bot[bot] <148525504+hyperswitch-bot[bot]@users.noreply.github.com>
This commit is contained in:
		| @ -7874,14 +7874,17 @@ | ||||
|         ], | ||||
|         "properties": { | ||||
|           "name": { | ||||
|             "type": "string" | ||||
|             "type": "string", | ||||
|             "description": "The name of the connector" | ||||
|           }, | ||||
|           "display_name": { | ||||
|             "type": "string", | ||||
|             "description": "The display name of the connector", | ||||
|             "nullable": true | ||||
|           }, | ||||
|           "description": { | ||||
|             "type": "string", | ||||
|             "description": "The description of the connector", | ||||
|             "nullable": true | ||||
|           }, | ||||
|           "category": { | ||||
| @ -7896,13 +7899,15 @@ | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|               "$ref": "#/components/schemas/SupportedPaymentMethod" | ||||
|             } | ||||
|             }, | ||||
|             "description": "The list of payment methods supported by the connector" | ||||
|           }, | ||||
|           "supported_webhook_flows": { | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|               "$ref": "#/components/schemas/EventClass" | ||||
|             }, | ||||
|             "description": "The list of webhook flows supported by the connector", | ||||
|             "nullable": true | ||||
|           } | ||||
|         } | ||||
| @ -8340,6 +8345,260 @@ | ||||
|           "US" | ||||
|         ] | ||||
|       }, | ||||
|       "CountryAlpha3": { | ||||
|         "type": "string", | ||||
|         "enum": [ | ||||
|           "AFG", | ||||
|           "ALA", | ||||
|           "ALB", | ||||
|           "DZA", | ||||
|           "ASM", | ||||
|           "AND", | ||||
|           "AGO", | ||||
|           "AIA", | ||||
|           "ATA", | ||||
|           "ATG", | ||||
|           "ARG", | ||||
|           "ARM", | ||||
|           "ABW", | ||||
|           "AUS", | ||||
|           "AUT", | ||||
|           "AZE", | ||||
|           "BHS", | ||||
|           "BHR", | ||||
|           "BGD", | ||||
|           "BRB", | ||||
|           "BLR", | ||||
|           "BEL", | ||||
|           "BLZ", | ||||
|           "BEN", | ||||
|           "BMU", | ||||
|           "BTN", | ||||
|           "BOL", | ||||
|           "BES", | ||||
|           "BIH", | ||||
|           "BWA", | ||||
|           "BVT", | ||||
|           "BRA", | ||||
|           "IOT", | ||||
|           "BRN", | ||||
|           "BGR", | ||||
|           "BFA", | ||||
|           "BDI", | ||||
|           "CPV", | ||||
|           "KHM", | ||||
|           "CMR", | ||||
|           "CAN", | ||||
|           "CYM", | ||||
|           "CAF", | ||||
|           "TCD", | ||||
|           "CHL", | ||||
|           "CHN", | ||||
|           "CXR", | ||||
|           "CCK", | ||||
|           "COL", | ||||
|           "COM", | ||||
|           "COG", | ||||
|           "COD", | ||||
|           "COK", | ||||
|           "CRI", | ||||
|           "CIV", | ||||
|           "HRV", | ||||
|           "CUB", | ||||
|           "CUW", | ||||
|           "CYP", | ||||
|           "CZE", | ||||
|           "DNK", | ||||
|           "DJI", | ||||
|           "DMA", | ||||
|           "DOM", | ||||
|           "ECU", | ||||
|           "EGY", | ||||
|           "SLV", | ||||
|           "GNQ", | ||||
|           "ERI", | ||||
|           "EST", | ||||
|           "ETH", | ||||
|           "FLK", | ||||
|           "FRO", | ||||
|           "FJI", | ||||
|           "FIN", | ||||
|           "FRA", | ||||
|           "GUF", | ||||
|           "PYF", | ||||
|           "ATF", | ||||
|           "GAB", | ||||
|           "GMB", | ||||
|           "GEO", | ||||
|           "DEU", | ||||
|           "GHA", | ||||
|           "GIB", | ||||
|           "GRC", | ||||
|           "GRL", | ||||
|           "GRD", | ||||
|           "GLP", | ||||
|           "GUM", | ||||
|           "GTM", | ||||
|           "GGY", | ||||
|           "GIN", | ||||
|           "GNB", | ||||
|           "GUY", | ||||
|           "HTI", | ||||
|           "HMD", | ||||
|           "VAT", | ||||
|           "HND", | ||||
|           "HKG", | ||||
|           "HUN", | ||||
|           "ISL", | ||||
|           "IND", | ||||
|           "IDN", | ||||
|           "IRN", | ||||
|           "IRQ", | ||||
|           "IRL", | ||||
|           "IMN", | ||||
|           "ISR", | ||||
|           "ITA", | ||||
|           "JAM", | ||||
|           "JPN", | ||||
|           "JEY", | ||||
|           "JOR", | ||||
|           "KAZ", | ||||
|           "KEN", | ||||
|           "KIR", | ||||
|           "PRK", | ||||
|           "KOR", | ||||
|           "KWT", | ||||
|           "KGZ", | ||||
|           "LAO", | ||||
|           "LVA", | ||||
|           "LBN", | ||||
|           "LSO", | ||||
|           "LBR", | ||||
|           "LBY", | ||||
|           "LIE", | ||||
|           "LTU", | ||||
|           "LUX", | ||||
|           "MAC", | ||||
|           "MKD", | ||||
|           "MDG", | ||||
|           "MWI", | ||||
|           "MYS", | ||||
|           "MDV", | ||||
|           "MLI", | ||||
|           "MLT", | ||||
|           "MHL", | ||||
|           "MTQ", | ||||
|           "MRT", | ||||
|           "MUS", | ||||
|           "MYT", | ||||
|           "MEX", | ||||
|           "FSM", | ||||
|           "MDA", | ||||
|           "MCO", | ||||
|           "MNG", | ||||
|           "MNE", | ||||
|           "MSR", | ||||
|           "MAR", | ||||
|           "MOZ", | ||||
|           "MMR", | ||||
|           "NAM", | ||||
|           "NRU", | ||||
|           "NPL", | ||||
|           "NLD", | ||||
|           "NCL", | ||||
|           "NZL", | ||||
|           "NIC", | ||||
|           "NER", | ||||
|           "NGA", | ||||
|           "NIU", | ||||
|           "NFK", | ||||
|           "MNP", | ||||
|           "NOR", | ||||
|           "OMN", | ||||
|           "PAK", | ||||
|           "PLW", | ||||
|           "PSE", | ||||
|           "PAN", | ||||
|           "PNG", | ||||
|           "PRY", | ||||
|           "PER", | ||||
|           "PHL", | ||||
|           "PCN", | ||||
|           "POL", | ||||
|           "PRT", | ||||
|           "PRI", | ||||
|           "QAT", | ||||
|           "REU", | ||||
|           "ROU", | ||||
|           "RUS", | ||||
|           "RWA", | ||||
|           "BLM", | ||||
|           "SHN", | ||||
|           "KNA", | ||||
|           "LCA", | ||||
|           "MAF", | ||||
|           "SPM", | ||||
|           "VCT", | ||||
|           "WSM", | ||||
|           "SMR", | ||||
|           "STP", | ||||
|           "SAU", | ||||
|           "SEN", | ||||
|           "SRB", | ||||
|           "SYC", | ||||
|           "SLE", | ||||
|           "SGP", | ||||
|           "SXM", | ||||
|           "SVK", | ||||
|           "SVN", | ||||
|           "SLB", | ||||
|           "SOM", | ||||
|           "ZAF", | ||||
|           "SGS", | ||||
|           "SSD", | ||||
|           "ESP", | ||||
|           "LKA", | ||||
|           "SDN", | ||||
|           "SUR", | ||||
|           "SJM", | ||||
|           "SWZ", | ||||
|           "SWE", | ||||
|           "CHE", | ||||
|           "SYR", | ||||
|           "TWN", | ||||
|           "TJK", | ||||
|           "TZA", | ||||
|           "THA", | ||||
|           "TLS", | ||||
|           "TGO", | ||||
|           "TKL", | ||||
|           "TON", | ||||
|           "TTO", | ||||
|           "TUN", | ||||
|           "TUR", | ||||
|           "TKM", | ||||
|           "TCA", | ||||
|           "TUV", | ||||
|           "UGA", | ||||
|           "UKR", | ||||
|           "ARE", | ||||
|           "GBR", | ||||
|           "USA", | ||||
|           "UMI", | ||||
|           "URY", | ||||
|           "UZB", | ||||
|           "VUT", | ||||
|           "VEN", | ||||
|           "VNM", | ||||
|           "VGB", | ||||
|           "VIR", | ||||
|           "WLF", | ||||
|           "ESH", | ||||
|           "YEM", | ||||
|           "ZMB", | ||||
|           "ZWE" | ||||
|         ] | ||||
|       }, | ||||
|       "CreateApiKeyRequest": { | ||||
|         "type": "object", | ||||
|         "description": "The request body for creating an API Key.", | ||||
| @ -22068,6 +22327,7 @@ | ||||
|             "required": [ | ||||
|               "payment_method", | ||||
|               "payment_method_type", | ||||
|               "payment_method_type_display_name", | ||||
|               "mandates", | ||||
|               "refunds", | ||||
|               "supported_capture_methods" | ||||
| @ -22079,6 +22339,10 @@ | ||||
|               "payment_method_type": { | ||||
|                 "$ref": "#/components/schemas/PaymentMethodType" | ||||
|               }, | ||||
|               "payment_method_type_display_name": { | ||||
|                 "type": "string", | ||||
|                 "description": "The display name of the payment method type" | ||||
|               }, | ||||
|               "mandates": { | ||||
|                 "$ref": "#/components/schemas/FeatureStatus" | ||||
|               }, | ||||
| @ -22089,13 +22353,15 @@ | ||||
|                 "type": "array", | ||||
|                 "items": { | ||||
|                   "$ref": "#/components/schemas/CaptureMethod" | ||||
|                 } | ||||
|                 }, | ||||
|                 "description": "List of supported capture methods supported by the payment method type" | ||||
|               }, | ||||
|               "supported_countries": { | ||||
|                 "type": "array", | ||||
|                 "items": { | ||||
|                   "$ref": "#/components/schemas/CountryAlpha2" | ||||
|                   "$ref": "#/components/schemas/CountryAlpha3" | ||||
|                 }, | ||||
|                 "description": "List of countries supported by the payment method type via the connector", | ||||
|                 "uniqueItems": true, | ||||
|                 "nullable": true | ||||
|               }, | ||||
| @ -22104,6 +22370,7 @@ | ||||
|                 "items": { | ||||
|                   "$ref": "#/components/schemas/Currency" | ||||
|                 }, | ||||
|                 "description": "List of currencies supported by the payment method type via the connector", | ||||
|                 "uniqueItems": true, | ||||
|                 "nullable": true | ||||
|               } | ||||
|  | ||||
| @ -9956,14 +9956,17 @@ | ||||
|         ], | ||||
|         "properties": { | ||||
|           "name": { | ||||
|             "type": "string" | ||||
|             "type": "string", | ||||
|             "description": "The name of the connector" | ||||
|           }, | ||||
|           "display_name": { | ||||
|             "type": "string", | ||||
|             "description": "The display name of the connector", | ||||
|             "nullable": true | ||||
|           }, | ||||
|           "description": { | ||||
|             "type": "string", | ||||
|             "description": "The description of the connector", | ||||
|             "nullable": true | ||||
|           }, | ||||
|           "category": { | ||||
| @ -9978,13 +9981,15 @@ | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|               "$ref": "#/components/schemas/SupportedPaymentMethod" | ||||
|             } | ||||
|             }, | ||||
|             "description": "The list of payment methods supported by the connector" | ||||
|           }, | ||||
|           "supported_webhook_flows": { | ||||
|             "type": "array", | ||||
|             "items": { | ||||
|               "$ref": "#/components/schemas/EventClass" | ||||
|             }, | ||||
|             "description": "The list of webhook flows supported by the connector", | ||||
|             "nullable": true | ||||
|           } | ||||
|         } | ||||
| @ -10451,6 +10456,260 @@ | ||||
|           "US" | ||||
|         ] | ||||
|       }, | ||||
|       "CountryAlpha3": { | ||||
|         "type": "string", | ||||
|         "enum": [ | ||||
|           "AFG", | ||||
|           "ALA", | ||||
|           "ALB", | ||||
|           "DZA", | ||||
|           "ASM", | ||||
|           "AND", | ||||
|           "AGO", | ||||
|           "AIA", | ||||
|           "ATA", | ||||
|           "ATG", | ||||
|           "ARG", | ||||
|           "ARM", | ||||
|           "ABW", | ||||
|           "AUS", | ||||
|           "AUT", | ||||
|           "AZE", | ||||
|           "BHS", | ||||
|           "BHR", | ||||
|           "BGD", | ||||
|           "BRB", | ||||
|           "BLR", | ||||
|           "BEL", | ||||
|           "BLZ", | ||||
|           "BEN", | ||||
|           "BMU", | ||||
|           "BTN", | ||||
|           "BOL", | ||||
|           "BES", | ||||
|           "BIH", | ||||
|           "BWA", | ||||
|           "BVT", | ||||
|           "BRA", | ||||
|           "IOT", | ||||
|           "BRN", | ||||
|           "BGR", | ||||
|           "BFA", | ||||
|           "BDI", | ||||
|           "CPV", | ||||
|           "KHM", | ||||
|           "CMR", | ||||
|           "CAN", | ||||
|           "CYM", | ||||
|           "CAF", | ||||
|           "TCD", | ||||
|           "CHL", | ||||
|           "CHN", | ||||
|           "CXR", | ||||
|           "CCK", | ||||
|           "COL", | ||||
|           "COM", | ||||
|           "COG", | ||||
|           "COD", | ||||
|           "COK", | ||||
|           "CRI", | ||||
|           "CIV", | ||||
|           "HRV", | ||||
|           "CUB", | ||||
|           "CUW", | ||||
|           "CYP", | ||||
|           "CZE", | ||||
|           "DNK", | ||||
|           "DJI", | ||||
|           "DMA", | ||||
|           "DOM", | ||||
|           "ECU", | ||||
|           "EGY", | ||||
|           "SLV", | ||||
|           "GNQ", | ||||
|           "ERI", | ||||
|           "EST", | ||||
|           "ETH", | ||||
|           "FLK", | ||||
|           "FRO", | ||||
|           "FJI", | ||||
|           "FIN", | ||||
|           "FRA", | ||||
|           "GUF", | ||||
|           "PYF", | ||||
|           "ATF", | ||||
|           "GAB", | ||||
|           "GMB", | ||||
|           "GEO", | ||||
|           "DEU", | ||||
|           "GHA", | ||||
|           "GIB", | ||||
|           "GRC", | ||||
|           "GRL", | ||||
|           "GRD", | ||||
|           "GLP", | ||||
|           "GUM", | ||||
|           "GTM", | ||||
|           "GGY", | ||||
|           "GIN", | ||||
|           "GNB", | ||||
|           "GUY", | ||||
|           "HTI", | ||||
|           "HMD", | ||||
|           "VAT", | ||||
|           "HND", | ||||
|           "HKG", | ||||
|           "HUN", | ||||
|           "ISL", | ||||
|           "IND", | ||||
|           "IDN", | ||||
|           "IRN", | ||||
|           "IRQ", | ||||
|           "IRL", | ||||
|           "IMN", | ||||
|           "ISR", | ||||
|           "ITA", | ||||
|           "JAM", | ||||
|           "JPN", | ||||
|           "JEY", | ||||
|           "JOR", | ||||
|           "KAZ", | ||||
|           "KEN", | ||||
|           "KIR", | ||||
|           "PRK", | ||||
|           "KOR", | ||||
|           "KWT", | ||||
|           "KGZ", | ||||
|           "LAO", | ||||
|           "LVA", | ||||
|           "LBN", | ||||
|           "LSO", | ||||
|           "LBR", | ||||
|           "LBY", | ||||
|           "LIE", | ||||
|           "LTU", | ||||
|           "LUX", | ||||
|           "MAC", | ||||
|           "MKD", | ||||
|           "MDG", | ||||
|           "MWI", | ||||
|           "MYS", | ||||
|           "MDV", | ||||
|           "MLI", | ||||
|           "MLT", | ||||
|           "MHL", | ||||
|           "MTQ", | ||||
|           "MRT", | ||||
|           "MUS", | ||||
|           "MYT", | ||||
|           "MEX", | ||||
|           "FSM", | ||||
|           "MDA", | ||||
|           "MCO", | ||||
|           "MNG", | ||||
|           "MNE", | ||||
|           "MSR", | ||||
|           "MAR", | ||||
|           "MOZ", | ||||
|           "MMR", | ||||
|           "NAM", | ||||
|           "NRU", | ||||
|           "NPL", | ||||
|           "NLD", | ||||
|           "NCL", | ||||
|           "NZL", | ||||
|           "NIC", | ||||
|           "NER", | ||||
|           "NGA", | ||||
|           "NIU", | ||||
|           "NFK", | ||||
|           "MNP", | ||||
|           "NOR", | ||||
|           "OMN", | ||||
|           "PAK", | ||||
|           "PLW", | ||||
|           "PSE", | ||||
|           "PAN", | ||||
|           "PNG", | ||||
|           "PRY", | ||||
|           "PER", | ||||
|           "PHL", | ||||
|           "PCN", | ||||
|           "POL", | ||||
|           "PRT", | ||||
|           "PRI", | ||||
|           "QAT", | ||||
|           "REU", | ||||
|           "ROU", | ||||
|           "RUS", | ||||
|           "RWA", | ||||
|           "BLM", | ||||
|           "SHN", | ||||
|           "KNA", | ||||
|           "LCA", | ||||
|           "MAF", | ||||
|           "SPM", | ||||
|           "VCT", | ||||
|           "WSM", | ||||
|           "SMR", | ||||
|           "STP", | ||||
|           "SAU", | ||||
|           "SEN", | ||||
|           "SRB", | ||||
|           "SYC", | ||||
|           "SLE", | ||||
|           "SGP", | ||||
|           "SXM", | ||||
|           "SVK", | ||||
|           "SVN", | ||||
|           "SLB", | ||||
|           "SOM", | ||||
|           "ZAF", | ||||
|           "SGS", | ||||
|           "SSD", | ||||
|           "ESP", | ||||
|           "LKA", | ||||
|           "SDN", | ||||
|           "SUR", | ||||
|           "SJM", | ||||
|           "SWZ", | ||||
|           "SWE", | ||||
|           "CHE", | ||||
|           "SYR", | ||||
|           "TWN", | ||||
|           "TJK", | ||||
|           "TZA", | ||||
|           "THA", | ||||
|           "TLS", | ||||
|           "TGO", | ||||
|           "TKL", | ||||
|           "TON", | ||||
|           "TTO", | ||||
|           "TUN", | ||||
|           "TUR", | ||||
|           "TKM", | ||||
|           "TCA", | ||||
|           "TUV", | ||||
|           "UGA", | ||||
|           "UKR", | ||||
|           "ARE", | ||||
|           "GBR", | ||||
|           "USA", | ||||
|           "UMI", | ||||
|           "URY", | ||||
|           "UZB", | ||||
|           "VUT", | ||||
|           "VEN", | ||||
|           "VNM", | ||||
|           "VGB", | ||||
|           "VIR", | ||||
|           "WLF", | ||||
|           "ESH", | ||||
|           "YEM", | ||||
|           "ZMB", | ||||
|           "ZWE" | ||||
|         ] | ||||
|       }, | ||||
|       "CreateApiKeyRequest": { | ||||
|         "type": "object", | ||||
|         "description": "The request body for creating an API Key.", | ||||
| @ -26474,6 +26733,7 @@ | ||||
|             "required": [ | ||||
|               "payment_method", | ||||
|               "payment_method_type", | ||||
|               "payment_method_type_display_name", | ||||
|               "mandates", | ||||
|               "refunds", | ||||
|               "supported_capture_methods" | ||||
| @ -26485,6 +26745,10 @@ | ||||
|               "payment_method_type": { | ||||
|                 "$ref": "#/components/schemas/PaymentMethodType" | ||||
|               }, | ||||
|               "payment_method_type_display_name": { | ||||
|                 "type": "string", | ||||
|                 "description": "The display name of the payment method type" | ||||
|               }, | ||||
|               "mandates": { | ||||
|                 "$ref": "#/components/schemas/FeatureStatus" | ||||
|               }, | ||||
| @ -26495,13 +26759,15 @@ | ||||
|                 "type": "array", | ||||
|                 "items": { | ||||
|                   "$ref": "#/components/schemas/CaptureMethod" | ||||
|                 } | ||||
|                 }, | ||||
|                 "description": "List of supported capture methods supported by the payment method type" | ||||
|               }, | ||||
|               "supported_countries": { | ||||
|                 "type": "array", | ||||
|                 "items": { | ||||
|                   "$ref": "#/components/schemas/CountryAlpha2" | ||||
|                   "$ref": "#/components/schemas/CountryAlpha3" | ||||
|                 }, | ||||
|                 "description": "List of countries supported by the payment method type via the connector", | ||||
|                 "uniqueItems": true, | ||||
|                 "nullable": true | ||||
|               }, | ||||
| @ -26510,6 +26776,7 @@ | ||||
|                 "items": { | ||||
|                   "$ref": "#/components/schemas/Currency" | ||||
|                 }, | ||||
|                 "description": "List of currencies supported by the payment method type via the connector", | ||||
|                 "uniqueItems": true, | ||||
|                 "nullable": true | ||||
|               } | ||||
|  | ||||
| @ -3,25 +3,24 @@ use std::collections::HashSet; | ||||
| use serde::{Deserialize, Serialize}; | ||||
| use utoipa::ToSchema; | ||||
|  | ||||
| use crate::enums::{ | ||||
|     CaptureMethod, CardNetwork, Connector, CountryAlpha2, Currency, EventClass, FeatureStatus, | ||||
|     PaymentConnectorCategory, PaymentMethod, PaymentMethodType, | ||||
| }; | ||||
|  | ||||
| #[derive(Default, Debug, Deserialize, Serialize, Clone, ToSchema)] | ||||
| pub struct FeatureMatrixRequest { | ||||
|     // List of connectors for which the feature matrix is requested | ||||
|     pub connectors: Option<Vec<Connector>>, | ||||
|     #[schema(value_type = Option<Vec<Connector>>)] | ||||
|     pub connectors: Option<Vec<common_enums::connector_enums::Connector>>, | ||||
| } | ||||
|  | ||||
| #[derive(Debug, Clone, ToSchema, Serialize)] | ||||
| pub struct CardSpecificFeatures { | ||||
|     /// Indicates whether three_ds card payments are supported. | ||||
|     pub three_ds: FeatureStatus, | ||||
|     /// Indicates whether non three_ds card payments are supported. | ||||
|     pub no_three_ds: FeatureStatus, | ||||
|     /// Indicates whether three_ds card payments are supported | ||||
|     #[schema(value_type = FeatureStatus)] | ||||
|     pub three_ds: common_enums::FeatureStatus, | ||||
|     /// Indicates whether non three_ds card payments are supported | ||||
|     #[schema(value_type = FeatureStatus)] | ||||
|     pub no_three_ds: common_enums::FeatureStatus, | ||||
|     /// List of supported card networks | ||||
|     pub supported_card_networks: Vec<CardNetwork>, | ||||
|     #[schema(value_type = Vec<CardNetwork>)] | ||||
|     pub supported_card_networks: Vec<common_enums::CardNetwork>, | ||||
| } | ||||
|  | ||||
| #[derive(Debug, Clone, ToSchema, Serialize)] | ||||
| @ -33,25 +32,50 @@ pub enum PaymentMethodSpecificFeatures { | ||||
|  | ||||
| #[derive(Debug, ToSchema, Serialize)] | ||||
| pub struct SupportedPaymentMethod { | ||||
|     pub payment_method: PaymentMethod, | ||||
|     pub payment_method_type: PaymentMethodType, | ||||
|     pub mandates: FeatureStatus, | ||||
|     pub refunds: FeatureStatus, | ||||
|     pub supported_capture_methods: Vec<CaptureMethod>, | ||||
|     /// The payment method supported by the connector | ||||
|     #[schema(value_type = PaymentMethod)] | ||||
|     pub payment_method: common_enums::PaymentMethod, | ||||
|     /// The payment method type supported by the connector | ||||
|     #[schema(value_type = PaymentMethodType)] | ||||
|     pub payment_method_type: common_enums::PaymentMethodType, | ||||
|     /// The display name of the payment method type | ||||
|     pub payment_method_type_display_name: String, | ||||
|     /// Indicates whether the payment method supports mandates via the connector | ||||
|     #[schema(value_type = FeatureStatus)] | ||||
|     pub mandates: common_enums::FeatureStatus, | ||||
|     /// Indicates whether the payment method supports refunds via the connector | ||||
|     #[schema(value_type = FeatureStatus)] | ||||
|     pub refunds: common_enums::FeatureStatus, | ||||
|     /// List of supported capture methods supported by the payment method type | ||||
|     #[schema(value_type = Vec<CaptureMethod>)] | ||||
|     pub supported_capture_methods: Vec<common_enums::CaptureMethod>, | ||||
|     /// Information on the Payment method specific payment features | ||||
|     #[serde(flatten)] | ||||
|     pub payment_method_specific_features: Option<PaymentMethodSpecificFeatures>, | ||||
|     pub supported_countries: Option<HashSet<CountryAlpha2>>, | ||||
|     pub supported_currencies: Option<HashSet<Currency>>, | ||||
|     /// List of countries supported by the payment method type via the connector | ||||
|     #[schema(value_type = Option<HashSet<CountryAlpha3>>)] | ||||
|     pub supported_countries: Option<HashSet<common_enums::CountryAlpha3>>, | ||||
|     /// List of currencies supported by the payment method type via the connector | ||||
|     #[schema(value_type = Option<HashSet<Currency>>)] | ||||
|     pub supported_currencies: Option<HashSet<common_enums::Currency>>, | ||||
| } | ||||
|  | ||||
| #[derive(Debug, ToSchema, Serialize)] | ||||
| pub struct ConnectorFeatureMatrixResponse { | ||||
|     /// The name of the connector | ||||
|     pub name: String, | ||||
|     /// The display name of the connector | ||||
|     pub display_name: Option<String>, | ||||
|     /// The description of the connector | ||||
|     pub description: Option<String>, | ||||
|     pub category: Option<PaymentConnectorCategory>, | ||||
|     /// The category of the connector | ||||
|     #[schema(value_type = Option<PaymentConnectorCategory>, example = "payment_gateway")] | ||||
|     pub category: Option<common_enums::PaymentConnectorCategory>, | ||||
|     /// The list of payment methods supported by the connector | ||||
|     pub supported_payment_methods: Vec<SupportedPaymentMethod>, | ||||
|     pub supported_webhook_flows: Option<Vec<EventClass>>, | ||||
|     /// The list of webhook flows supported by the connector | ||||
|     #[schema(value_type = Option<Vec<EventClass>>)] | ||||
|     pub supported_webhook_flows: Option<Vec<common_enums::EventClass>>, | ||||
| } | ||||
|  | ||||
| #[derive(Debug, Serialize, ToSchema)] | ||||
|  | ||||
| @ -1842,6 +1842,110 @@ impl PaymentMethodType { | ||||
|     pub fn should_check_for_customer_saved_payment_method_type(self) -> bool { | ||||
|         matches!(self, Self::ApplePay | Self::GooglePay | Self::SamsungPay) | ||||
|     } | ||||
|     pub fn to_display_name(&self) -> String { | ||||
|         let display_name = match self { | ||||
|             Self::Ach => "ACH Direct Debit", | ||||
|             Self::Bacs => "BACS Direct Debit", | ||||
|             Self::Affirm => "Affirm", | ||||
|             Self::AfterpayClearpay => "Afterpay Clearpay", | ||||
|             Self::Alfamart => "Alfamart", | ||||
|             Self::AliPay => "Alipay", | ||||
|             Self::AliPayHk => "AlipayHK", | ||||
|             Self::Alma => "Alma", | ||||
|             Self::AmazonPay => "Amazon Pay", | ||||
|             Self::ApplePay => "Apple Pay", | ||||
|             Self::Atome => "Atome", | ||||
|             Self::BancontactCard => "Bancontact Card", | ||||
|             Self::Becs => "BECS Direct Debit", | ||||
|             Self::Benefit => "Benefit", | ||||
|             Self::Bizum => "Bizum", | ||||
|             Self::Blik => "BLIK", | ||||
|             Self::Boleto => "Boleto Bancário", | ||||
|             Self::BcaBankTransfer => "BCA Bank Transfer", | ||||
|             Self::BniVa => "BNI Virtual Account", | ||||
|             Self::BriVa => "BRI Virtual Account", | ||||
|             Self::CardRedirect => "Card Redirect", | ||||
|             Self::CimbVa => "CIMB Virtual Account", | ||||
|             Self::ClassicReward => "Classic Reward", | ||||
|             Self::Credit => "Credit Card", | ||||
|             Self::CryptoCurrency => "Crypto", | ||||
|             Self::Cashapp => "Cash App", | ||||
|             Self::Dana => "DANA", | ||||
|             Self::DanamonVa => "Danamon Virtual Account", | ||||
|             Self::Debit => "Debit Card", | ||||
|             Self::DuitNow => "DuitNow", | ||||
|             Self::Efecty => "Efecty", | ||||
|             Self::Eft => "EFT", | ||||
|             Self::Eps => "EPS", | ||||
|             Self::Fps => "FPS", | ||||
|             Self::Evoucher => "Evoucher", | ||||
|             Self::Giropay => "Giropay", | ||||
|             Self::Givex => "Givex", | ||||
|             Self::GooglePay => "Google Pay", | ||||
|             Self::GoPay => "GoPay", | ||||
|             Self::Gcash => "GCash", | ||||
|             Self::Ideal => "iDEAL", | ||||
|             Self::Interac => "Interac", | ||||
|             Self::Indomaret => "Indomaret", | ||||
|             Self::InstantBankTransfer => "Instant Bank Transfer", | ||||
|             Self::Klarna => "Klarna", | ||||
|             Self::KakaoPay => "KakaoPay", | ||||
|             Self::LocalBankRedirect => "Local Bank Redirect", | ||||
|             Self::MandiriVa => "Mandiri Virtual Account", | ||||
|             Self::Knet => "KNET", | ||||
|             Self::MbWay => "MB WAY", | ||||
|             Self::MobilePay => "MobilePay", | ||||
|             Self::Momo => "MoMo", | ||||
|             Self::MomoAtm => "MoMo ATM", | ||||
|             Self::Multibanco => "Multibanco", | ||||
|             Self::OnlineBankingThailand => "Online Banking Thailand", | ||||
|             Self::OnlineBankingCzechRepublic => "Online Banking Czech Republic", | ||||
|             Self::OnlineBankingFinland => "Online Banking Finland", | ||||
|             Self::OnlineBankingFpx => "Online Banking FPX", | ||||
|             Self::OnlineBankingPoland => "Online Banking Poland", | ||||
|             Self::OnlineBankingSlovakia => "Online Banking Slovakia", | ||||
|             Self::Oxxo => "OXXO", | ||||
|             Self::PagoEfectivo => "PagoEfectivo", | ||||
|             Self::PermataBankTransfer => "Permata Bank Transfer", | ||||
|             Self::OpenBankingUk => "Open Banking UK", | ||||
|             Self::PayBright => "PayBright", | ||||
|             Self::Paypal => "PayPal", | ||||
|             Self::Paze => "Paze", | ||||
|             Self::Pix => "Pix", | ||||
|             Self::PaySafeCard => "PaySafeCard", | ||||
|             Self::Przelewy24 => "Przelewy24", | ||||
|             Self::PromptPay => "PromptPay", | ||||
|             Self::Pse => "PSE", | ||||
|             Self::RedCompra => "RedCompra", | ||||
|             Self::RedPagos => "RedPagos", | ||||
|             Self::SamsungPay => "Samsung Pay", | ||||
|             Self::Sepa => "SEPA Direct Debit", | ||||
|             Self::SepaBankTransfer => "SEPA Bank Transfer", | ||||
|             Self::Sofort => "Sofort", | ||||
|             Self::Swish => "Swish", | ||||
|             Self::TouchNGo => "Touch 'n Go", | ||||
|             Self::Trustly => "Trustly", | ||||
|             Self::Twint => "TWINT", | ||||
|             Self::UpiCollect => "UPI Collect", | ||||
|             Self::UpiIntent => "UPI Intent", | ||||
|             Self::Vipps => "Vipps", | ||||
|             Self::VietQr => "VietQR", | ||||
|             Self::Venmo => "Venmo", | ||||
|             Self::Walley => "Walley", | ||||
|             Self::WeChatPay => "WeChat Pay", | ||||
|             Self::SevenEleven => "7-Eleven", | ||||
|             Self::Lawson => "Lawson", | ||||
|             Self::MiniStop => "Mini Stop", | ||||
|             Self::FamilyMart => "FamilyMart", | ||||
|             Self::Seicomart => "Seicomart", | ||||
|             Self::PayEasy => "PayEasy", | ||||
|             Self::LocalBankTransfer => "Local Bank Transfer", | ||||
|             Self::Mifinity => "MiFinity", | ||||
|             Self::OpenBankingPIS => "Open Banking PIS", | ||||
|             Self::DirectCarrierBilling => "Direct Carrier Billing", | ||||
|         }; | ||||
|         display_name.to_string() | ||||
|     } | ||||
| } | ||||
|  | ||||
| impl masking::SerializableSecret for PaymentMethodType {} | ||||
| @ -2240,7 +2344,7 @@ pub enum RequestIncrementalAuthorization { | ||||
|     Default, | ||||
| } | ||||
|  | ||||
| #[derive(Clone, Copy, Debug, Serialize, Deserialize, strum::Display,)] | ||||
| #[derive(Clone, Copy, Eq, Hash, PartialEq, Debug, Serialize, Deserialize, strum::Display, ToSchema,)] | ||||
| #[rustfmt::skip] | ||||
| pub enum CountryAlpha3 { | ||||
|     AFG, ALA, ALB, DZA, ASM, AND, AGO, AIA, ATA, ATG, ARG, ARM, ABW, AUS, AUT, | ||||
|  | ||||
| @ -306,6 +306,7 @@ Never share your secret api keys. Keep them guarded and secure. | ||||
|         api_models::enums::DisputeStage, | ||||
|         api_models::enums::DisputeStatus, | ||||
|         api_models::enums::CountryAlpha2, | ||||
|         api_models::enums::CountryAlpha3, | ||||
|         api_models::enums::FieldType, | ||||
|         api_models::enums::FrmAction, | ||||
|         api_models::enums::FrmPreferredFlowTypes, | ||||
|  | ||||
| @ -273,6 +273,7 @@ Never share your secret api keys. Keep them guarded and secure. | ||||
|         api_models::enums::DisputeStage, | ||||
|         api_models::enums::DisputeStatus, | ||||
|         api_models::enums::CountryAlpha2, | ||||
|         api_models::enums::CountryAlpha3, | ||||
|         api_models::enums::FieldType, | ||||
|         api_models::enums::FrmAction, | ||||
|         api_models::enums::FrmPreferredFlowTypes, | ||||
|  | ||||
| @ -131,8 +131,13 @@ fn build_payment_method_wise_feature_details( | ||||
|                         ) | ||||
|                     }); | ||||
|  | ||||
|             let supported_countries = | ||||
|                 payment_method_type_config.and_then(|config| config.country.clone()); | ||||
|             let supported_countries = payment_method_type_config.and_then(|config| { | ||||
|                 config.country.clone().map(|set| { | ||||
|                     set.into_iter() | ||||
|                         .map(common_enums::CountryAlpha2::from_alpha2_to_alpha3) | ||||
|                         .collect::<std::collections::HashSet<_>>() | ||||
|                 }) | ||||
|             }); | ||||
|  | ||||
|             let supported_currencies = | ||||
|                 payment_method_type_config.and_then(|config| config.currency.clone()); | ||||
| @ -140,6 +145,7 @@ fn build_payment_method_wise_feature_details( | ||||
|             feature_matrix::SupportedPaymentMethod { | ||||
|                 payment_method, | ||||
|                 payment_method_type: *payment_method_type, | ||||
|                 payment_method_type_display_name: payment_method_type.to_display_name(), | ||||
|                 mandates: feature_metadata.mandates, | ||||
|                 refunds: feature_metadata.refunds, | ||||
|                 supported_capture_methods: feature_metadata.supported_capture_methods.clone(), | ||||
|  | ||||
		Reference in New Issue
	
	Block a user
	 AkshayaFoiger
					AkshayaFoiger