docs: fix Stripe webhook URL guidance to use app.tamci.app#80
Open
jhosepmyr wants to merge 1 commit into
Open
Conversation
…amci.app api.tamci.app resolves directly to the CloudFront-only ALB; a webhook pointed there times out with zero trace on the backend (root cause of a real production incident: paid checkout never activated the plan).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Root-caused a real production incident: a user paid for a Pro upgrade, Stripe marked the checkout
complete, but the plan never activated. Traced throughStripePaymentGatewayAdapter→StripeWebhookParser→ProcessPaymentWebhookCommandHandler— the code path is correct(metadata, tenant handling via the
public-schemasubscriptionstable, signature verificationall check out). The actual problem:
docs/BILLING.mdtold readers to point the Stripe webhook athttps://your-api-domain.com/..., which in this deployment resolves toapi.tamci.app— the bareALB domain, locked down to CloudFront-only ingress for security. Stripe's servers aren't
CloudFront, so the webhook delivery times out silently: zero log trace on the backend, since the
request never arrives. Confirmed via
curl:api.tamci.apptimes out (000),app.tamci.app(routed through CloudFront) reaches the app and gets a real response.
Fixes the guidance to use
app.tamci.app(frontend domain, CloudFront-routed) for both thedemo/test-mode and production webhook setup sections, with an explicit warning explaining why.
Bounded context / area: billing (docs only)
Related issue / US: Production incident — paid Stripe checkout not activating the plan
Type of Change
feat— new featurefix— bug fixdocs— documentation onlyrefactor— code change without behavior changetest— tests onlybuild/ci— build, dependencies, or CI/CDchore— maintenanceChecklist
develop(notmain)feature/*,bugfix/*, orhotfix/*./gradlew buildpasses locally — N/A, Markdown only.pemkeys are committedCHANGELOG.mdupdated under[Unreleased]— N/A, docs correction, no product behavior changeHow to Test
Re-read the updated Deployed Test Environment and Production Deployment Checklist sections
and confirm the URL guidance and warning are accurate against
reqsai-infra's ALB security group(CloudFront-prefix-list-only ingress).
Notes / Screenshots (optional)
Immediate fix for the live incident is operational, not code: update the webhook Endpoint URL in
the Stripe Dashboard to
https://app.tamci.app/api/billing/webhooks/stripe, then use Stripe's"Resend" on the failed event to activate the plan without a new charge.