add email to stripe

sync
Raz 8 months ago
parent 39dc48b702
commit e4da854380
  1. 3
      padelclub_backend/settings_app.py
  2. 24
      shop/stripe_utils.py
  3. 9
      shop/views.py

@ -45,8 +45,7 @@ QR_CODE_CACHE_ALIAS = 'qr-code'
STRIPE_CURRENCY = 'eur'
# Add managers who should receive internal emails
SHOP_MANAGERS = [
('Razmig Sarkissian', 'razmig@padelclub.app'),
# ('Shop Admin', 'shop-admin@padelclub.app'),
('Shop Admin', 'shop-admin@padelclub.app'),
# ('Laurent Morvillier', 'laurent@padelclub.app'),
# ('Xavier Rousset', 'xavier@padelclub.app'),
]

@ -25,12 +25,13 @@ class StripeService:
mode_str = "TEST" if self.is_test_mode else "LIVE"
logger.debug(f"Initialized StripeService in {mode_str} mode")
def create_checkout_session(self, line_items, success_url, cancel_url, metadata=None):
def create_checkout_session(self, customer_email, line_items, success_url, cancel_url, metadata=None):
"""Create a Stripe Checkout Session for one-time payments"""
if self.is_test_mode:
logger.info(f"Creating checkout session in TEST mode with metadata: {metadata}")
session = stripe.checkout.Session.create(
customer_email=customer_email,
payment_method_types=['card'],
line_items=line_items,
mode='payment',
@ -67,24 +68,3 @@ class StripeService:
# Create a singleton instance for import and use throughout the app
stripe_service = StripeService()
# For backward compatibility, expose some functions directly
def create_payment_intent(amount, currency=None, metadata=None):
"""Legacy function for backward compatibility"""
if currency is None:
currency = stripe_service.currency
return stripe.PaymentIntent.create(
amount=amount,
currency=currency,
metadata=metadata or {},
)
def create_checkout_session(line_items, success_url, cancel_url, metadata=None):
"""Legacy function for backward compatibility"""
return stripe_service.create_checkout_session(
line_items=line_items,
success_url=success_url,
cancel_url=cancel_url,
metadata=metadata or {},
)

@ -50,15 +50,24 @@ def _create_stripe_checkout_session(request, order, line_items):
'order_id': str(order.id),
}
# Set up customer information
customer_email = None
# Add user info to metadata if available
if request.user.is_authenticated:
metadata['user_id'] = str(request.user.id)
customer_email = request.user.email
elif order.guest_user:
metadata['guest_email'] = order.guest_user.email
customer_email = order.guest_user.email
elif 'guest_email' in request.session:
metadata['guest_email'] = request.session.get('guest_email', '')
customer_email = request.session.get('guest_email', '')
try:
# Use the service to create the session
checkout_session = stripe_service.create_checkout_session(
customer_email=customer_email,
line_items=line_items,
success_url=success_url,
cancel_url=cancel_url,

Loading…
Cancel
Save