import stripe import json import logging from app.config import settings logger = logging.getLogger(__name__) stripe.api_key = settings.STRIPE_PRIV_KEY class StripeIntegration: @staticmethod def create_customer(stripe_customer): logger.info(f"Inside Stripe_Customer ===== : {stripe_customer}") customer = stripe.Customer.create( email= stripe_customer["email"], name=stripe_customer["name"], payment_method="pm_card_visa", description="Customer for Merms Subscription", invoice_settings={"default_payment_method": "pm_card_visa"}, ) # payment_method="pm_card_visa", # Replace with a valid payment method ID or attach one later return customer @staticmethod def create_product(display_name, monthly): logger.info(f"Inside Stripe_Product ===== : {display_name}") product_name = display_name product = stripe.Product.create(name=product_name) price = stripe.Price.create( unit_amount=monthly, # Amount in cents (e.g., $10.00) currency="usd", recurring={"interval": "month"}, product=product.id, ) return {'product_id': product.id, 'price_id': price.id} @staticmethod def create_subscription(self, data): subscription = stripe.Subscription.create( customer='customer.id', items=[ {"price": 'price.id'}, ], payment_behavior="default_incomplete", # Recommended for handling initial payment expand=["latest_invoice.payment_intent"], # To get details for payment confirmation ) @staticmethod def create_checkout_session_subscription(price_id, customer_id): try: checkout_session = stripe.checkout.Session.create( customer=customer_id, # Pass the existing customer ID here line_items=[ { 'price': price_id, # Use a pre-defined Stripe Price ID 'quantity': 1, }, ], mode='subscription', success_url='https://qa-panel.mermsemr.com/subscription-success?session_id={CHECKOUT_SESSION_ID}', cancel_url='https://qa-panel.mermsemr.com/subscription', ) return checkout_session except stripe.error.StripeError as e: print(f"Error creating subscription Checkout Session: {e}") return None