将 WooCommerce webhooks 与 Django Rest Framework 集成

Integrate WooCommerce webhooks with Django Rest Framework

我有一个使用 WooCommerce 管理商店的 WordPress 网站。我创建了一个必须与 WooCommerce 通信的 Django 应用程序,以便了解以下操作:

每当在 WooCommerce 中创建新客户端时,我想在 Django 应用程序中创建一个新用户,并在 WooCommerce 中的状态发生变化时相应地 update/delete 它。

无论何时在 WooCommerce 中购买了产品,都应该在 Django 应用程序中看到。订阅也是如此。

  1. 在 Postman 的帮助下,我设法阅读了 POST 请求 WooCommerce 用户相关操作的问题,但格式与 Django 应用程序接受的格式不同,而且我真的不知道如何调整视图以便能够使用提供的信息

  2. 我在 Django 中配置了基于令牌的身份验证并生成了一个令牌,然后我在 WooCommerce 中配置了它,但它似乎没有使用它,因为在 WooCommerce 日志中响应是:

[Body] => {"detail":"Authentication credentials were not provided."}

我对 Django Rest Framework 和 WooCommerce webhooks 都很陌生,所以我不知道这里要包含哪些其他信息。我将等待对此的输入。

请帮助我提供一些有关如何进行此集成的指导。提前致谢!

我这周遇到了这个问题,发现关于那个东西的模糊文档没有太大帮助。

WooCommerce WebHooks 使用 HMAC-SHA256 身份验证并使用密钥和消息正文创建哈希。

你可以用类似的东西检查它(密钥与你在 Secret 字段中放入 Woo WebHook 的密钥相同):

import base64
import hashlib
import hmac

request_sig = request.headers.get("x-wc-webhook-signature")
signature = hmac.new(<your_secret_key>.encode(), request.payload, hashlib.sha256).digest()
if hmac.compare_digest(
        request_sig.encode(), base64.b64encode(signature)
):
    return True
return False

您可以从 DRF 子class BaseAuthentication 并将其放入其中,并在您的视图中将 class 用作 authentication_classes