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