updated webhook module

This commit is contained in:
rizwanisready
2024-08-08 13:58:45 +05:30
parent 6e8eb96f4f
commit 33a11af520
5 changed files with 141 additions and 82 deletions

View File

@@ -293,3 +293,47 @@ class LastActiveSubscriptionView(APIView):
message="No Active Subscription Found",
errors="No Active Subscription Found",
)
class CancelSubscription(APIView):
authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]
def post(self, request):
data = json.loads(request.body)
subscription_id = data.get("subscription_id")
try:
subscription = PrincipalSubscription.objects.get(
id=subscription_id, principal=request.user
)
except PrincipalSubscription.DoesNotExist:
return ApiResponse(
message=constants.FAILURE,
errors="Subscription not found.",
status=status.HTTP_404_NOT_FOUND,
)
with transaction.atomic():
if subscription.is_stripe_subscription:
# Cancel Stripe subscription
try:
stripe.Subscription.modify(subscription.stripe_subscription_id, cancel_at_period_end=True)
except stripe.error.InvalidRequestError as e:
return ApiResponse(
message=constants.FAILURE,
errors=f"Stripe error: {str(e)}",
status=status.HTTP_400_BAD_REQUEST,
)
# Updating subscription status in the local database
subscription.status = SubscriptionStatus.INACTIVE
subscription.cancelled = True
subscription.cancelled_date_time = timezone.now()
subscription.save()
return ApiResponse(
message=constants.SUCCESS,
data="Subscription cancelled successfully.",
status=status.HTTP_200_OK,
)

View File

@@ -727,7 +727,6 @@ def create_checkout_session(request):
order_id = f"order_{timezone.localtime().timestamp()}_{request.user.email}"
# Default transaction amount based on subscription amount
final_amount = subscription.amount
print("Before Session Data")
session_data = {
"payment_method_types": ["card"],