Django中可爱的BUG们(13)--- alipay问题报错TypeError(“quote_from_bytes() expected bytes“)

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

 Traceback (most recent call last):
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/django/views/generic/base.py", line 68, in view
    return self.dispatch(request, *args, **kwargs)
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/django/contrib/auth/mixins.py", line 56, in dispatch
    return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/django/views/generic/base.py", line 88, in dispatch
    return handler(request, *args, **kwargs)
  File "/home/sun/Desktop/mall/meiduomall/apps/pay/views.py", line 47, in get
    order_string = alipay.api_alipay_trade_page_pay(
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/alipay/__init__.py", line 266, in api_alipay_trade_page_pay
    return self.sign_data(data)
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/alipay/__init__.py", line 174, in sign_data
    signed_string = "&".join("{}={}".format(k, quote_plus(v)) for k, v in unquoted_items)
  File "/home/sun/.virtualenvs/py3_django_1.11.11/lib/python3.8/site-packages/alipay/__init__.py", line 174, in <genexpr>
    signed_string = "&".join("{}={}".format(k, quote_plus(v)) for k, v in unquoted_items)
  File "/usr/lib/python3.8/urllib/parse.py", line 855, in quote_plus
    string = quote(string, safe + space, encoding, errors)
  File "/usr/lib/python3.8/urllib/parse.py", line 839, in quote
    return quote_from_bytes(string, safe)
  File "/usr/lib/python3.8/urllib/parse.py", line 864, in quote_from_bytes
    raise TypeError("quote_from_bytes() expected bytes")

BUG原因:字节字符串的转换问题

跟着它报错的BUG一步一步进去发现,是阿里支付的SDK出现了问题。
解决方法:
在这里插入图片描述

def sign_data(self, data):
       # 排序后的字符串
       ordered_items = self._ordered_data(data)
       raw_string = "&".join("{}={}".format(k, v) for k, v in ordered_items)
       sign = self._sign(raw_string)
       unquoted_items = ordered_items + [('sign', sign)]

       # 获得最终的订单信息字符串
       signed_string = "&".join("{}={}".format(k, quote_plus(str(v))) for k, v in unquoted_items)
       # signed_string = "&".join("{}={}".format(k, quote_plus(v)) for k, v in unquoted_items)
       if self._verbose:
           logger.debug("signed srtring")
           logger.debug(signed_string)
       return signed_string
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值