将 WooCommerce webhooks 与 Django Rest Framework 集成
Integrate WooCommerce webhooks with Django Rest Framework
我有一个使用 WooCommerce 管理商店的 WordPress 网站。我创建了一个必须与 WooCommerce 通信的 Django 应用程序,以便了解以下操作:
- 用户创建
- 用户更新
- 用户删除
- 购买新订阅
- 续订
- 订阅到期
- 产品购买(我也卖实体产品)
每当在 WooCommerce 中创建新客户端时,我想在 Django 应用程序中创建一个新用户,并在 WooCommerce 中的状态发生变化时相应地 update/delete 它。
无论何时在 WooCommerce 中购买了产品,都应该在 Django 应用程序中看到。订阅也是如此。
在 Postman 的帮助下,我设法阅读了 POST 请求 WooCommerce 用户相关操作的问题,但格式与 Django 应用程序接受的格式不同,而且我真的不知道如何调整视图以便能够使用提供的信息
我在 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
。
我有一个使用 WooCommerce 管理商店的 WordPress 网站。我创建了一个必须与 WooCommerce 通信的 Django 应用程序,以便了解以下操作:
- 用户创建
- 用户更新
- 用户删除
- 购买新订阅
- 续订
- 订阅到期
- 产品购买(我也卖实体产品)
每当在 WooCommerce 中创建新客户端时,我想在 Django 应用程序中创建一个新用户,并在 WooCommerce 中的状态发生变化时相应地 update/delete 它。
无论何时在 WooCommerce 中购买了产品,都应该在 Django 应用程序中看到。订阅也是如此。
在 Postman 的帮助下,我设法阅读了 POST 请求 WooCommerce 用户相关操作的问题,但格式与 Django 应用程序接受的格式不同,而且我真的不知道如何调整视图以便能够使用提供的信息
我在 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
。