payment-components-v1
Frozen v1 generation of TC's StencilJS payment web-component library, still deployed to CloudFront for consumers not yet migrated to payment-components (v2).
Health score
0 to 100 across seven weighted factors; nothing is hidden. Green is 75 and above, amber 50 to 74, red below 50. How scoring works.
Facts
| Languages | typescript |
| Frameworks | Stencil 4, Sass, Jest/Puppeteer |
| Runtimes | nodejs |
| Tests / CI | good / CI in place |
| Last commit | 2025-05-14 |
| Owner | Owner unknown (mapping to be curated) |
| Domain | Payments and finance (system generated; curate in repo-owners.json to override) |
| Product area | Shared platform |
| Hosted | AWS Deployed to AWS
|
| Releases | 0 release pipeline(s): |
| Integration | rest, jwt |
| Source | Open in Azure DevOps |
Dependencies in context
Entanglement
loose No binding mechanisms apply: this system needs no untangling work.
Depends on / used by
Migration playbooks
Generated from this repo's assessment data: what is feasible, what blocks it, and the steps in order. Ratings: green means actionable now, amber means sequence other work first, red means blocked, grey means not applicable.
ZDD adoption
Not applicableNot a deployed service (libraries, database definitions, desktop apps) or a retirement candidate not worth the investment. Ships as a package; ZDD applies to the services that consume it.
SQL Server exit
Not applicableNo SQL Server dependency is recorded for this repo. Nothing to migrate.
Containerisation
Not applicableLibraries ship as packages, not as running services. There is nothing to containerise.
Recommended actions
No specific actions for this repo. It either needs only normal maintenance, or its work is covered by an estate-level action. See the full programme.
Assessment notes
payment-components-v1
Purpose
The original (v1.0.0) payment web-component library, superseded by the v2 payment-components repo but still built and hosted in production for channels that have not migrated. Same architecture as v2: retail-payment-wrapper and portal-payment-wrapper host payment-method pickers, card forms and amount components, driving sessions through the TC payments router API with provider components for BR-DGE/Comcarde (hosted fields, 3-D Secure), Cybersource microform and a dummy test provider. Unlike v2 it has no Stripe provider, no payment-link wrapper and no telephony/PCI Pal components.
Tech stack
TypeScript on Stencil 4.12 with per-component SCSS (@stencil/sass) rather than v2's Tailwind, node-polyglot en/nl localisation, jwt-decode for Cybersource capture contexts, ESLint and the Stencil Jest + Puppeteer test runner. A Backstage catalog-info.yaml marks it as owned by finance-team in the payments system.
Deployment
No classic release pipelines (release_count 0); traced via build->yaml-deploy, build pipeline payment-components-v1. build.yml is a near-copy of the v2 pipeline: shared InternalOSS/azure-pipelines-templates ci.yml (UIBuild pool, Node 20.x, aws configuration, the same backup/restore workaround around tests), publishing to the tc-payments-ui-artifacts S3 bucket behind a cloudfront_spa CloudFront distribution with Terraform in aws-payments-tc-apps (useTFVarsDeployment: true, functional area payments).
Dependencies
Internal: the TC payments router REST API (tc-payment-router) and the dummy instruments API (paymentprovider-dummy). External: runtime-loaded Comcarde/BR-DGE scripts (hosted fields, 3-D Secure, Apple Pay), the Cybersource microform SDK, and Apple Pay/Google Pay wallets.
Data stores
None — stateless UI components; session state lives in the payment router.
Integration points
Outbound REST to the payments router and dummy-instruments APIs; JWT decoding for Cybersource capture contexts; browser-side PSP SDK integration.
Code health
Good test discipline for its age: ~73 spec/e2e files colocated with components and generated per-component readmes. The top-level README is pure Stencil starter boilerplate. Effectively frozen — last commit 2025-05-14, with active development having moved to the v2 repo (its package.json even retains a TODO for the router package-update command).
Modernisation risks
Medium — not because of its stack (modern Stencil/TypeScript) but because it is a duplicate, frozen copy of the payment UI kept alive for unmigrated consumers: two payment component codebases must be security-patched and kept compatible with the same router API and PSP SDKs. The clear action is to finish migrating remaining consumers to payment-components v2 and retire this repo and its CloudFront distribution.
Data store follow-up (2026-07-28)
Follow-up scan of project files, configuration and the central Terraform repos confirmed the empty data_stores list is correct. Component package repo; no data store packages or configuration found.