0

我正在尝试使用 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)
    ...
4

1 回答 1

2

您需要收听 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
于 2013-06-18T12:40:01.487 回答