- Add stripe_payment_intent_id field to WalletTransaction model with proper defaults
- Update User.deduct_balance() to handle missing stripe_payment_intent_id gracefully
- Update User.add_balance() to handle missing stripe_payment_intent_id gracefully
- Use try-catch pattern to handle database schema mismatches
- Provide empty string as default for stripe_payment_intent_id when field is required
Issue: Database has NOT NULL constraint on stripe_payment_intent_id but code doesn't provide it
Solution: Add field with proper defaults and graceful error handling
Prevents: 'NOT NULL constraint failed: wallet_wallettransaction.stripe_payment_intent_id'
✅ IMPROVEMENTS:
- Changed transaction description from 'Manual Verification' to clean 'Wallet top-up via Stripe'
- Removed confusing 'Verify Payment' button from wallet page
- Removed manual verification modal and JavaScript
- Removed manual verification URL endpoint
- Cleaner, more professional user interface
Result: Simple, automatic payment system that works seamlessly without user intervention.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
🔍 DEBUGGING TOOLS ADDED:
1. Enhanced Payment Creation Logging:
- Show API key, version, environment details
- Log complete session creation response
- Immediate session verification after creation
- Detailed session metadata and status
2. Enhanced Payment Verification Logging:
- Complete session retrieval details
- Payment intent information if available
- Full session status and metadata
- Account verification details
3. Stripe Debug Endpoint (/stripe/debug/):
- Test API connectivity
- Show account information
- List recent checkout sessions
- List recent charges/payments
- Identify which Stripe account we're connected to
This will help identify:
- If payments are going to wrong Stripe account
- If API keys are correct
- If sessions are being created properly
- Where the disconnect between payments and dashboard is happening
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
Set stripe.api_version to '2025-05-28.basil' to match webhook
configuration. This ensures checkout sessions created by Django
will trigger webhook events properly.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add detailed logging to Stripe webhook handler
- Log webhook events, user processing, and balance updates
- Help identify if webhooks are being received and processed correctly
- Temporary debugging to resolve wallet balance not updating after payment
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Remove hardcoded payment link URLs that were environment-specific
- Implement dynamic Stripe checkout session creation with automatic domain detection
- Add success/cancel URLs that automatically work on localhost and Railway
- Update StripePaymentHandler to use request.build_absolute_uri() for proper URL generation
- Add wallet top-up success and cancel views with proper user feedback
- This fixes the issue where payment success redirected to old/wrong URLs
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>