Как я могу изменить свое готовое поле на True, когда пользователь совершает платеж?
Я пытаюсь использовать django-paypal https://github.com/johnboxall/django-paypal
def view_that_asks_for_money(request):
my_order = Order.objects.get(id=1)
# What you want the button to do.
paypal_dict = {
"business": "sampleemail@mail.com",
"amount": my_order.total_price,
"item_name": my_order.name,
"invoice": "unique-invoice-id",
"notify_url": "http://www.example.com/your-ipn-location/",
"return_url": "http://www.example.com/your-return-location/",
"cancel_return": "http://www.example.com/your-cancel-location/",
}
# Create the instance.
form = PayPalPaymentsForm(initial=paypal_dict)
context = {"form": form}
return render_to_response("payment.html", context)
Как я могу изменить свой finished
поле для True
когда пользователь совершает платеж?
class Order(models.Model):
...
finished = models.BooleanField(default=False)
...
1 ответ
Решение
Вы должны слушать сигнал IPN payment_was_successful
, После получения измените статус вашего заказа:
from django.dispatch import receiver
from paypal.standard.ipn.signals import payment_was_successful
@receiver(payment_was_successful)
def complete_order(sender, **kwargs):
"""
Receiver function for successful payment.
Calls when PayPal returns success.
"""
ipn_obj = sender
# do your work here