It looks like you're creating the message via json.dumps. This doesn't appear to work how the crypto.com docs indicate you should build it.
https://exchange-docs.crypto.com/exchange/v1/rest-ws/index.html#digital-signature
From here, it says you should create the message like this:
Next, do the following: method + id + api_key + parameter string + nonce
Your code probably won't produce this exact order. I'm guessing the confusion came from the instructions about the parameter string, which does have you simply alphabetically order the parameters. That can work for the parameter string but not the message which does define a specific order.