webhook corrected 8-3-2024 15:40

This commit is contained in:
rizwanisready
2024-03-08 15:40:51 +05:30
parent 78cd216c0f
commit 1e48106828
2 changed files with 36 additions and 19 deletions

View File

@@ -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(

View File

@@ -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