Skip to content

fix(payments): branded empty state for invalid/expired payment links (#741) - #867

Merged
therealjhay merged 1 commit into
Betta-Pay:mainfrom
michealross:fix/invalid-payment-link-state
Sep 29, 2026
Merged

therealjhay merged 1 commit into
Betta-Pay:mainfrom
michealross:fix/invalid-payment-link-state

Conversation

@michealross

Copy link
Copy Markdown
Contributor

Changes Made:

  • InvalidPaymentLinkState (new): Branded empty state for links that can't be fulfilled, with reason-specific copy for not-found, expired, and error, a support reference showing the unresolved link id, and a BettaPay brand mark.
  • app/pay/[linkId]/page.tsx: Resolves the link via GET /api/payment-links/:linkId before rendering the form (loading → ready/invalid state machine). Maps 410 → expired, 404/403 → not-found, everything else → error with a "Try again" action that re-runs resolution. Invalid links never render the payment form or throw.
  • Tests: Unit coverage for the empty state component (copy, icons, actions, reference box) and page integration coverage for loading state, status-code mapping, retry recovery, and that the payment form never renders for invalid links (17 tests).

Verification:

  • npx jest — 17/17 passing across both new suites.
  • npm run typecheck — no errors in the changed files (remaining errors are pre-existing in unrelated files).

…etta-Pay#741)

Resolving a payment link previously threw on null data or surfaced a raw
error boundary, leaving payers stranded on a broken page. The pay page now
resolves the link first and renders InvalidPaymentLinkState for 404/410/403
responses, with reason-specific copy, a support reference for the link id,
and retry only for transient failures.

🤖 Generated with Codebuff
Co-Authored-By: Codebuff <noreply@codebuff.com>
@drips-wave

drips-wave Bot commented Sep 29, 2026

Copy link
Copy Markdown

@michealross Great news! 🎉 Based on an automated assessment of this PR, the linked Wave issue(s) no longer count against your application limits.

You can now already apply to more issues while waiting for a review of this PR. Keep up the great work! 🚀

Learn more about application limits

@vercel

vercel Bot commented Sep 29, 2026

Copy link
Copy Markdown

@michealross is attempting to deploy a commit to the therealjhay's projects Team on Vercel.

A member of the Team first needs to authorize it.

@therealjhay
therealjhay merged commit 039563e into Betta-Pay:main Sep 29, 2026
1 check failed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

app/pay/page routing: Implement empty state for invalid links

2 participants