From 1e48106828f24153a1b24a591a4ae4e8f24e147e Mon Sep 17 00:00:00 2001 From: rizwanisready Date: Fri, 8 Mar 2024 15:40:51 +0530 Subject: [PATCH] webhook corrected 8-3-2024 15:40 --- goodtimes/services.py | 13 ++++++----- manage_subscriptions/views.py | 42 ++++++++++++++++++++++++----------- 2 files changed, 36 insertions(+), 19 deletions(-) diff --git a/goodtimes/services.py b/goodtimes/services.py index 324c762..d6849ec 100644 --- a/goodtimes/services.py +++ b/goodtimes/services.py @@ -213,15 +213,16 @@ class PaymentProcessingService: print("self.charge_data: ", self.charge_data) print("self.metadata: ", self.charge_data["metadata"]) # Extract transaction_id from webhook metadata - transaction_id = int(self.charge_data["metadata"]["transaction_id"]) + transaction_id = self.charge_data["metadata"]["transaction_id"] # Fetch the Transaction instance using the transaction_id - return Transaction.objects.get(id=transaction_id) + return Transaction.objects.get(id=int(transaction_id)) def _get_subscription_by_id(self): # Extract transaction_id from webhook metadata - subscription = int(self.charge_data["metadata"]["subscription_id"]) + subscription = self.charge_data["metadata"]["subscription_id"] + print("subscription: ", subscription) # Fetch the Transaction instance using the transaction_id - return Subscription.objects.get(id=subscription) + return Subscription.objects.get(id=int(subscription)) def process_event(self): if self.event_type == "checkout.session.completed": @@ -264,7 +265,7 @@ class PaymentProcessingService: self._update_reward( referral_record=referral_record, active_subscription=active_subscription, - create_subscription_method=self._create_principal_subscription, + create_subscription_method=self._create_principal_subscription(), has_active_subscription=True, ) else: @@ -320,7 +321,7 @@ class PaymentProcessingService: ) # Create a new subscription for the referred principal - referred_subscription_id = create_subscription_method() + referred_subscription_id = self._create_principal_subscription() # Create or update the ReferralTracking record ReferralTracking.objects.create( diff --git a/manage_subscriptions/views.py b/manage_subscriptions/views.py index 0da8bba..90fb863 100644 --- a/manage_subscriptions/views.py +++ b/manage_subscriptions/views.py @@ -388,7 +388,16 @@ def create_checkout_session(request): if request.method == "GET": domain_url = "http://localhost:8000/" stripe.api_key = settings.STRIPE_SECRET_KEY - subscription_id = 2 + + subscription_id = None # Assuming 3 is a default or fallback subscription ID + + if request.user.is_authenticated: + print("request.user: ", request.user) + if request.user.principal_type.name == "event_user": + subscription_id = 1 + elif request.user.principal_type.name == "event_manager": + subscription_id = 2 + try: subscription = Subscription.objects.get(id=subscription_id) except Subscription.DoesNotExist: @@ -401,17 +410,24 @@ def create_checkout_session(request): ) print("order_id: ", order_id) - # Create a Transaction object with status INITIATE - transaction = Transaction.objects.create( - principal=request.user, - principal_subscription=None, # Since the subscription is not created yet - transaction_type=TransactionType.DEPOSIT, # or PAYMENT, as applicable - payment_method=PaymentMethod.CARD, # Assuming CARD for this example - transaction_status=TransactionStatus.INITIATE, - amount=subscription.amount, - order_id=order_id, - comment="Principal Subscription Initiated", - ) + try: + # Create a Transaction object with status INITIATE + transaction = Transaction.objects.create( + principal=request.user, + principal_subscription=None, # Since the subscription is not created yet + transaction_type=TransactionType.DEPOSIT, # or PAYMENT, as applicable + payment_method=PaymentMethod.CARD, # Assuming CARD for this example + transaction_status=TransactionStatus.INITIATE, + amount=subscription.amount, # Fetching amount from the Subscription object + order_id=order_id, + comment="Principal Subscription Initiated", + ) + except Exception as e: + return ApiResponse.error( + status=status.HTTP_500_INTERNAL_SERVER_ERROR, + message="Failed to create transaction", + errors=str(e) + ) try: customer = stripe.Customer.create( email=request.user.email, @@ -435,7 +451,7 @@ def create_checkout_session(request): "price_data": { "currency": "gbp", "product_data": { - "name": "Subscription", # Adjust with your subscription/product name + "name": subscription.title, # Adjust with your subscription/product name }, "unit_amount": int( subscription.amount * 100