Severity: 🟠 Major (incomplete)
1. stopPayment is a no-op
ApiController.scala:4995-5019 looks up the API then returns Ok(Json.obj()) with three TODOs:
//todo: save api
//todo: run job to "close payment"
//todo: close pricing in stripe ?
The DELETE …/_payment route cleans up nothing on the Stripe side → orphaned products/prices remain active in Stripe. Archiving helpers already exist in PaymentClient (archiveStripeProduct, archiveStripePrices) and should be wired in here.
2. Placeholder legal URLs sent to the Stripe billing portal
PaymentClient.scala:867-868 — both business_profile[privacy_policy_url] and terms_of_service_url point to https://example.com/privacy. These are customer-facing in the Stripe billing portal. They should come from tenant configuration (or be omitted).
Fix
- Implement
stopPayment: archive Stripe product/prices, cancel/close, persist the plan change.
- Replace the placeholder URLs with real (configurable) tenant values.
Related
Severity: 🟠 Major (incomplete)
1.
stopPaymentis a no-opApiController.scala:4995-5019looks up the API then returnsOk(Json.obj())with three TODOs:The
DELETE …/_paymentroute cleans up nothing on the Stripe side → orphaned products/prices remain active in Stripe. Archiving helpers already exist inPaymentClient(archiveStripeProduct,archiveStripePrices) and should be wired in here.2. Placeholder legal URLs sent to the Stripe billing portal
PaymentClient.scala:867-868— bothbusiness_profile[privacy_policy_url]andterms_of_service_urlpoint tohttps://example.com/privacy. These are customer-facing in the Stripe billing portal. They should come from tenant configuration (or be omitted).Fix
stopPayment: archive Stripe product/prices, cancel/close, persist the plan change.Related
stopPaymentcleanup of Stripe products/prices should run through the same queue-job path.