fix(connector): add payconex to ucs_only_connectors in env_specific config#12856
Conversation
…onfig PayConex is a UCS-only connector and only works when routed through UCS, which requires its name in `ucs_only_connectors`. Deployed environments merge `config/deployments/env_specific.toml` as the effective override, and it was missing `payconex` (it was added only to development/integration_test/sandbox/production configs in #12608). As a result PayConex payments fell back to the native connector stub in deployed envs and failed with "card is not supported by payconex"; the request never reached UCS.
|
test |
[should-fix] Verify config consistency for
|
| Config File | Format |
|---|---|
config/deployments/env_specific.toml |
String: "imerchantsolutions, paytm, ..." |
config/development.toml |
Array: ucs_only_connectors = [] |
config/deployments/sandbox.toml |
Array: ucs_only_connectors = [] |
config/docker_compose.toml |
Array: ucs_only_connectors = [] |
Questions:
- Should
payconexalso be added to the development/testing configs for local development parity? - Is the string vs array format difference intentional, or should these be normalized?
If developers test locally with development.toml (empty array = no UCS-only connectors), they won't catch PayConex routing issues until deployment.
# Suggested for development.toml (if desired)
ucs_only_connectors = ["payconex", "imerchantsolutions", "paytm", ...]
XyneSpaces
left a comment
There was a problem hiding this comment.
Reviewing the payconex addition to ucs_only_connectors. One minor suggestion on ordering.
| base_url = "http://localhost:8000" # Unified Connector Service Base URL | ||
| connection_timeout = 10 # Connection Timeout Duration in Seconds | ||
| ucs_only_connectors = "imerchantsolutions, paytm, phonepe, hyperpg, revolv3, fiservcommercehub, absa_sanlam, interpayments" # Comma-separated list of connectors that use UCS only | ||
| ucs_only_connectors = "imerchantsolutions, paytm, phonepe, hyperpg, revolv3, fiservcommercehub, absa_sanlam, interpayments, payconex" # Comma-separated list of connectors that use UCS only |
There was a problem hiding this comment.
[nit] Consider alphabetical ordering
The connector list is easier to maintain when sorted alphabetically. payconex should come before phonepe in the sequence. Also, please link to the payconex connector implementation PR in the description for traceability.
Suggested change:
ucs_only_connectors = "absa_sanlam, fiservcommercehub, hyperpg, imerchantsolutions, interpayments, payconex, paytm, phonepe, revolv3"
Type of Change
Description
PayConex is a UCS-only connector — its native Hyperswitch connector is a stub (
PAYCONEX_SUPPORTED_PAYMENT_METHODS = SupportedPaymentMethods::new(), every flow returnsNotImplemented). It only works when routed through the Unified Connector Service (UCS), which requires its name to be present ingrpc_client.unified_connector_service.ucs_only_connectors.Deployed environments build their effective config by merging
config/deployments/env_specific.tomlover the per-environment file. That override file was missingpayconexfromucs_only_connectors, so in deployed environmentsdetermine_connector_integration_typereturnedDirectandUCSConnectorinstead ofUcsConnector, the gateway decision fell back toDirect, and the native stub rejected the card:The request never reached UCS. It worked locally only because
RUN_ENV=developmentreadsconfig/development.toml, which already listspayconex.#12608 (which introduced PayConex) added
payconextodevelopment.toml,integration_test.toml,sandbox.toml, andproduction.toml, but not toenv_specific.toml. This PR closes that gap.Additional Changes
config/deployments/env_specific.toml— addedpayconextoucs_only_connectors.Motivation and Context
Closes #12855
PayConex payments are unusable in all deployed environments (integration_test / sandbox / production) without this entry, because the connector has no native implementation and must be routed via UCS.
How did you test it?
Diagnosed from a failing integration request (Grafana request id
019ee39c-8322-7333-90eb-9d999d54a42b): logs showUsing DirectandUCSConnector - not in ucs_only_list→gateway=Direct→400 "card is not supported by payconex", confirming the request never reached UCS. Addingpayconextoucs_only_connectorsmakesdetermine_connector_integration_typereturnUcsConnector, forcing the UCS path — identical to the working local behavior, wheredevelopment.tomlalready contains the entry. This mirrors the same entry already present inintegration_test.toml,sandbox.toml, andproduction.toml.Checklist
cargo +nightly fmt --allcargo clippy