auto recurring testing phase 12

This commit is contained in:
rizwanisready
2024-08-01 14:01:00 +05:30
parent b958765b29
commit 731f162531
2 changed files with 38 additions and 11 deletions

View File

@@ -649,27 +649,51 @@ def validate_coupon(request):
# Validating Coupon
try:
coupon = Coupon.objects.get(coupon_code=coupon_code)
if not coupon.is_valid():
return JsonResponse({"error": "Coupon is not valid."}, status=400)
# Check discount amount
if coupon.discount_amount and coupon.discount_amount > subscription.amount:
return JsonResponse(
{"error": "Coupon discount amount exceeds subscription amount."},
status=400,
)
if (
coupon.discount_percentage
and (coupon.discount_percentage / Decimal("100")) * subscription.amount
> subscription.amount
):
# Check discount percentage
if coupon.discount_percentage:
discount_amount = (
coupon.discount_percentage / Decimal("100")
) * subscription.amount
if discount_amount > subscription.amount:
return JsonResponse(
{
"error": "Coupon discount percentage exceeds subscription amount."
},
status=400,
)
# Retrieving coupon from Stripe if applicable
if coupon.coupon_id:
try:
stripe_coupon = stripe.Coupon.retrieve(coupon.coupon_id)
return JsonResponse({"message": stripe_coupon}, status=200)
except stripe.error.InvalidRequestError:
return JsonResponse(
{"error": f"Invalid coupon code: {coupon_code}"}, status=400
)
except stripe.error.StripeError as e:
return JsonResponse({"error": f"Stripe error: {str(e)}"}, status=400)
else:
return JsonResponse(
{"error": "Coupon discount percentage exceeds subscription amount."},
{
"error": "Coupon is either invalid, expired, or not associated with Stripe."
},
status=400,
)
except Coupon.DoesNotExist:
return JsonResponse({"error": "Coupon not found."}, status=404)
return JsonResponse({"message": "Coupon is valid."}, status=200)
@csrf_exempt
@require_POST
@@ -722,7 +746,10 @@ def create_checkout_session(request):
)
else:
return JsonResponse(
{"error": "Invalid or expired coupon code."}, status=400
{
"error": "Either coupon is Invalid/Expired or coupon not related with stripe."
},
status=400,
)
except Coupon.DoesNotExist:
return JsonResponse({"error": "Coupon not found."}, status=404)