Skip to content

Commit 34b54dd

Browse files
Coponderclaude
andauthored
Fix day pass "Pass Not Found" error by using full Stripe session IDs (#53)
The activation API was truncating payment IDs to 6 chars, but guest day passes stored the full Stripe session ID in Airtable. This mismatch caused lookups to fail, showing "Pass Not Found" to customers. Also fixes member day pass: stores full session ID instead of truncated, and corrects the checkout redirect query param from payment_id to id. https://claude.ai/code/session_012iZN4w9gESaszoZAoijk6G Co-authored-by: Claude <noreply@anthropic.com>
1 parent 8ecab41 commit 34b54dd

File tree

3 files changed

+4
-10
lines changed

3 files changed

+4
-10
lines changed

app/api/webhooks/stripe/route.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,7 @@ async function handleMemberDayPass(session: Stripe.Checkout.Session) {
134134

135135
try {
136136
await createRecord(Tables.DayPasses, {
137-
Name: session.id.slice(-6),
137+
Name: session.id,
138138
Username: userName,
139139
Status: 'Unused',
140140
'Stripe link (from User)': `Member day pass - $25 - ${userEmail}`,

app/day-pass/activate/api/route.ts

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,8 @@ export async function POST(request: Request) {
6666
return Response.json({ success: false, status: 'not-found' })
6767
}
6868

69-
// Truncate payment ID to last 6 chars to match how it's stored in Airtable
70-
// For multi-pass purchases, IDs end with "-1", "-2", etc. so we need to preserve that
71-
const truncatedId = paymentId.includes('-')
72-
? paymentId.slice(0, -2).slice(-6) + paymentId.slice(-2) // e.g., "cs_live_abc123-1" -> "c123-1"
73-
: paymentId.slice(-6) // e.g., "cs_live_abc123" -> "bc123"
74-
75-
// Fetch day pass record from Airtable
76-
const escapedPaymentId = escapeAirtableString(truncatedId)
69+
// Fetch day pass record from Airtable using the full payment ID
70+
const escapedPaymentId = escapeAirtableString(paymentId)
7771
const record = await findRecord<DayPassFields>(
7872
Tables.DayPasses,
7973
`{Name}='${escapedPaymentId}'`

app/portal/api/create-day-pass-checkout/route.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export async function POST(request: Request) {
3939
quantity: 1,
4040
},
4141
],
42-
success_url: `${baseUrl}/day-pass/activate?payment_id={CHECKOUT_SESSION_ID}`,
42+
success_url: `${baseUrl}/day-pass/activate?id={CHECKOUT_SESSION_ID}`,
4343
cancel_url: `${baseUrl}/portal`,
4444
metadata: {
4545
type: 'member_day_pass',

0 commit comments

Comments
 (0)