【问题标题】:How do I change my finished field to True when user make the payment?用户付款时如何将完成的字段更改为 True?
【发布时间】:2013-06-18 12:36:49
【问题描述】:

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

【问题讨论】:

    标签: django paypal django-paypal


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2021-06-05
      • 2018-12-12
      • 2020-03-15
      • 2014-07-30
      • 2013-01-13
      • 2012-03-11
      • 2019-10-20
      • 2013-07-31
      • 2017-10-13
      相关资源
      最近更新 更多