#!/usr/bin/env node /** * Test Stripe API Connection * Verifies that Stripe test keys are configured correctly and can connect to the API */ require('dotenv').config(); const stripe = require('stripe')(process.env.STRIPE_SECRET_KEY); async function testStripeConnection() { try { console.log('\nšŸ” Testing Stripe API connection...\n'); console.log(`šŸ“‹ Environment: ${process.env.NODE_ENV || 'development'}`); console.log(`šŸ”‘ Using key: ${process.env.STRIPE_SECRET_KEY?.substring(0, 20)}...`); console.log(`šŸ”“ Public key: ${process.env.STRIPE_PUBLISHABLE_KEY?.substring(0, 20)}...\n`); // Test 1: List existing products console.log('šŸ“¦ Checking existing products...'); const products = await stripe.products.list({ limit: 10 }); console.log(`āœ… Found ${products.data.length} existing products in test mode`); if (products.data.length > 0) { products.data.forEach(p => { console.log(` • ${p.name} (${p.id})`); }); } else { console.log(' ā„¹ļø No products created yet'); } // Test 2: List existing prices console.log('\nšŸ’° Checking existing prices...'); const prices = await stripe.prices.list({ limit: 10 }); console.log(`āœ… Found ${prices.data.length} existing prices in test mode`); if (prices.data.length > 0) { prices.data.forEach(p => { const amount = p.unit_amount ? `${p.currency.toUpperCase()} ${(p.unit_amount / 100).toFixed(2)}` : 'Variable'; const interval = p.recurring ? `/ ${p.recurring.interval}` : '(one-time)'; console.log(` • ${p.id}: ${amount} ${interval}`); }); } else { console.log(' ā„¹ļø No prices created yet'); } // Test 3: Check webhook endpoints console.log('\nšŸ”” Checking webhook endpoints...'); const webhooks = await stripe.webhookEndpoints.list({ limit: 10 }); console.log(`āœ… Found ${webhooks.data.length} webhook endpoint(s)`); if (webhooks.data.length > 0) { webhooks.data.forEach(w => { console.log(` • ${w.url}`); console.log(` Status: ${w.status}`); console.log(` Events: ${w.enabled_events.length} enabled`); }); } else { console.log(' āš ļø No webhook endpoints configured yet'); } console.log('\nāœ… Stripe API connection successful!\n'); console.log('šŸ“‹ Next steps:'); console.log(' 1. Create product "Tractatus Framework Support" in Stripe Dashboard'); console.log(' 2. Create 3 monthly price tiers ($5, $15, $50 NZD)'); console.log(' 3. Configure webhook endpoint'); console.log(' 4. Update .env with product/price IDs\n'); } catch (error) { console.error('\nāŒ Stripe API error:', error.message); if (error.type === 'StripeAuthenticationError') { console.error('\nāš ļø Authentication failed. Check that STRIPE_SECRET_KEY in .env is correct.'); } else if (error.type === 'StripeConnectionError') { console.error('\nāš ļø Network error. Check your internet connection.'); } console.error('\nFull error:', error); process.exit(1); } } testStripeConnection();