Как я могу изменить свое готовое поле на 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
Другие вопросы по тегам