将WooCommerce webhook与Django Rest Framework集成



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

  • 用户创建
  • 用户更新
  • 用户删除
  • 新订阅购买
  • 续订
  • 订阅过期
  • 产品购买(我也销售实物产品(

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

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

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

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

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

我对Django Rest Framework和WooCommerce webhook都很陌生,所以我不知道这里还有什么其他信息。我将等待有关这方面的意见。

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

本周我遇到了这个问题,发现围绕这些东西的模糊文档并没有那么大帮助。

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

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

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中对BaseAuthentication进行子类化,并将其放入其中,然后在视图中将该类用作authentication_classes

最新更新