【发布时间】:2019-12-16 09:04:59
【问题描述】:
我正在尝试验证 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)
最后一行出现错误。有人可以帮我弄这个吗?谢谢!
Traceback(最近一次调用最后一次): 文件“C:\Users\Sreekanth\Anaconda3\lib\site-packages\django\core\handlers\exception.py”,第 34 行,在内部 响应 = get_response(请求) _get_response 中的文件“C:\Users\Sreekanth\Anaconda3\lib\site-packages\django\core\handlers\base.py”,第 115 行 response = self.process_exception_by_middleware(e, request) _get_response 中的文件“C:\Users\Sreekanth\Anaconda3\lib\site-packages\django\core\handlers\base.py”,第 113 行 响应 = 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) razorpay_webhook 中的文件“C:\Users\Sreekanth\Documents\BoosterKick_software\BoosterKick\pages\views.py”,第 168 行 验证 = client.utility.verify_webhook_signature(jsondata,签名,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 正文 = 字节(正文,'utf-8') TypeError:没有字符串参数的编码
【问题讨论】:
-
您好,请针对此错误发布您的整个堆栈跟踪。
-
向我们展示完整的错误跟踪(如果显示,请删除您的 API 密钥)。但也许这个问题最好问给 Razorpay 的人。另外,在调用它们的 API 之前,请检查
jsondata、signature和webhook_secret的值。 -
所以
body不是它所期望的。检查您的jsondata -
感谢您的回复。我编辑了问题以添加完整的错误跟踪。
-
jsondata是字典或列表对象,而不是字符串。尝试将request.body直接传递给网络挂钩检查。