Django-ninja Webhook Server - ошибка подписи/неправильный запрос
Я работаю над приложением Django, где мне нужно разработать сервер webhook с помощью Django-ninja. Приложение webhook получает уведомление о новом заказе, как описано здесь: https://developer.wolt.com/docs/marketplace-integrations/restaurant-advanced#webhook-server
Мой код ниже:
@api.post("/v1/wolt-new-order")
def wolt_new_order(request: HttpRequest):
    received_signature = request.headers.get('wolt-signature')
    if not received_signature:
        print("Missing signature")
        return HttpResponse('Missing signature', status=400)
    payload = request.body
    expected_signature = hmac.new(
        CLIENT_SECRET.encode(),
        payload,
        hashlib.sha256
    ).hexdigest()
    
    print(f"Received: {received_signature}")
    print(f"Expected: {expected_signature}")
    if not hmac.compare_digest(received_signature, expected_signature):
        return HttpResponse('Invalid signature', status=400)
    print(payload)
    return HttpResponse('Webhook received', status=200)
По какой-то причине это всегда возвращает "код ошибки 400, плохой синтаксис запроса", и две подписи всегда разные.
Я правильно импортирую CLIENT_SECRET, и у меня правильно установлены все необходимые библиотеки.
Как ни странно, когда я делаю то же самое в тестовом приложении Flask, я получаю уведомление от webhook корректно и без проблем.
Ниже приведен код Flask:
import hmac
import hashlib
from flask import Flask, request, abort
app = Flask(__name__)
@app.route('/api/v1/wolt-new-order', methods=['POST'])
def webhook():
    # Extract the wolt-signature header
    received_signature = request.headers.get('wolt-signature')
    
    print(received_signature)
    # Extract the request payload
    payload = request.get_data()
    
    print(payload)
    # Compute the expected signature
    expected_signature = hmac.new(
        CLIENT_SECRET.encode(),
        payload,
        hashlib.sha256
    ).hexdigest()
    
    print(expected_signature)
    # Compare signatures
    if not hmac.compare_digest(received_signature, expected_signature):
        abort(400, 'Invalid signature')
    
    print(payload)
    return 'Webhook received', 200
if __name__ == '__main__':
    app.run(port=8000)
Мой сервер вебхуков находится за ngrok. Есть идеи?
Что я делаю не так? Есть предложения?