updated webhook module
This commit is contained in:
@@ -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,
|
||||
)
|
||||
|
||||
@@ -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"],
|
||||
|
||||
Reference in New Issue
Block a user