在Shopify Webhook发出POST请求时访问Shopify API

时间:2015-02-22 02:31:37

标签: python django python-2.7 shopify

当shopify向我的应用发送webhook时,我想通过API访问店主商店的产品资源,并比较商店中产品的ID和客户订购的产品。

应用/ views.py

@csrf_exempt
def webhook (request, *args, **kwargs):
    products = []

    import shopify
    with request.user.session: # This doesn't work because no login I think
        products = shopify.Product.find()

    print "THE PRODUCTS ARE:", products

    if request.method == "POST":
        line_items = json.loads(request.body)["line_items"]
        return HttpResponse(status=200)

我无法执行此操作,因为用户未登录,因此 request.user.session 不起作用。
我不能要求webhook为我登录店主的商店 那么,如何在此函数中访问 shopify.Product.find()等产品?

2 个答案:

答案 0 :(得分:0)

我认为你在这里混合概念:webhooks,产品和客户。您首先需要遍历特定商店的所有产品。一旦您将所有产品放在正确的地方并使用正确的ID(考虑到处理变体而不是产品),那么您需要拥有该特定商店的所有客户或订单。每个订单都包含具有正确variant.id的订单项。然后循环浏览所有变体,以查看特定订单/客户订购的变体。

答案 1 :(得分:0)

webhook请求需要通过其HMAC标头进行验证,以确保它是真实的。完成此操作后,您可以放心地假设它来自的域是合法的,因此您可以在数据库中查找用户。您可以使用django-shopify-webhook来处理webhook请求,而不是自己实现。

You can check out my answer to this question to see an example of how to do this.