auto recurring testing phase 12
This commit is contained in:
@@ -39,9 +39,9 @@ def handle_stripe_coupon(coupon_instance, stripe_secret_key):
|
||||
|
||||
# Saving the coupon instance after successful Stripe operation
|
||||
coupon_instance.save()
|
||||
return True, "Coupon successfully created or updated."
|
||||
return True, "Coupon successfully created."
|
||||
|
||||
except Exception as e:
|
||||
error_message = f"Error creating/updating Stripe coupon: {e}"
|
||||
error_message = f"Error creating Stripe coupon: {e}"
|
||||
print(error_message)
|
||||
return False, error_message
|
||||
|
||||
@@ -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."},
|
||||
{
|
||||
"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 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)
|
||||
|
||||
Reference in New Issue
Block a user