38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
|
|
from django.shortcuts import render, redirect
|
|
from django.conf import settings
|
|
from django.contrib.auth.decorators import login_required
|
|
from .models import Cart, Order, OrderItem
|
|
from django_paystack.signals import payment_verified
|
|
|
|
@login_required
|
|
def payment_success(request, reference):
|
|
cart = Cart.objects.get(user=request.user)
|
|
order = Order.objects.create(
|
|
user=request.user,
|
|
total_price=cart.total_price,
|
|
paid=True,
|
|
payment_reference=reference
|
|
)
|
|
for item in cart.items.all():
|
|
OrderItem.objects.create(
|
|
order=order,
|
|
product=item.product,
|
|
price=item.product.price,
|
|
quantity=item.quantity
|
|
)
|
|
cart.items.all().delete()
|
|
return redirect('payment_success_page')
|
|
|
|
def payment_failure(request):
|
|
return render(request, 'core/payment_failure.html')
|
|
|
|
@payment_verified.connect
|
|
def on_payment_verified(sender, ref, amount, **kwargs):
|
|
"""
|
|
This signal is called when a payment is successfully verified.
|
|
"""
|
|
# You can perform actions like updating order status, sending notifications, etc.
|
|
print(f"Payment verified for reference: {ref} and amount: {amount}")
|
|
|