0

我正在尝试验证 webhook 是否来自 Razorpay 但出现以下错误。

TypeError:没有字符串参数的编码

这是代码:

webhook_secret = MY_WEBHOOK_SECRET
signature = request.headers['X-Razorpay-Signature']
jsondata = json.loads(request.body)
client = razorpay.Client(auth=(MY_KEY, MY_SIGNATURE))
verify = client.utility.verify_webhook_signature(jsondata, signature, webhook_secret)

我在最后一行出现错误。有人可以帮我弄这个吗?谢谢!

回溯(最后一次调用):文件“C:\Users\Sreekanth\Anaconda3\lib\site-packages\django\core\handlers\exception.py”,第 34 行,内部响应 = get_response(request) 文件“C :\Users\Sreekanth\Anaconda3\lib\site-packages\django\core\handlers\base.py”,第 115 行,在 _get_response 响应 = self.process_exception_by_middleware(e, request) 文件“C:\Users\Sreekanth\Anaconda3 \lib\site-packages\django\core\handlers\base.py”,第 113 行,在 _get_response 响应 = Wrapped_callback(request, *callback_args, **callback_kwargs) 文件“C:\Users\Sreekanth\Anaconda3\lib\site -packages\django\views\decorators\csrf.py”,第 54 行,在 Wrapped_view 返回 view_func(*args, **kwargs) 文件“C:\Users\Sreekanth\Documents\BoosterKick_software\BoosterKick\pages\views.py” ,第 168 行,在 razorpay_webhook verify = client.utility.verify_webhook_signature(jsondata, signature, webhook_secret) 文件“C:\Users\Sreekanth\Anaconda3\lib\site-packages\razorpay\utility\utility.py”,第 25 行,在 verify_webhook_signature self.verify_signature (正文、签名、秘密)文件“C:\Users\Sreekanth\Anaconda3\lib\site-packages\razorpay\utility\utility.py”,第 30 行,在 verify_signature body = bytes(body, 'utf-8') TypeError:没有字符串参数的编码\Users\Sreekanth\Anaconda3\lib\site-packages\razorpay\utility\utility.py",第 30 行,在 verify_signature body = bytes(body, 'utf-8') TypeError: encoding without a string argument\Users\Sreekanth\Anaconda3\lib\site-packages\razorpay\utility\utility.py",第 30 行,在 verify_signature body = bytes(body, 'utf-8') TypeError: encoding without a string argument

4

1 回答 1

1
webhook_secret = MY_WEBHOOK_SECRET
signature = request.headers['X-Razorpay-Signature']
jsondata = json.loads(request.body)
client = razorpay.Client(auth=(MY_KEY, MY_SIGNATURE))
client.utility.verify_webhook_signature(json.dumps(jsondata, separators=(',', ':')), signature, webhook_secret)

这对我有用。

于 2019-08-08T18:21:04.203 回答