def parse_response(self, response: requests.Response): """ 处理请求,将 requests 的返回包装为 PayJSResult :param response: requests 的返回值 :return: 一个 PayJSResult 元素(Success 或 Fail) """ if response.status_code == 200: # 扫码支付 与 订单查询;收银台支付失败 try: j = json.loads(response.content) except json.JSONDecodeError: return PayJSResultFail(base=self, raw_response=response, r_json=False) except UnicodeDecodeError: return PayJSResultFail(base=self, raw_response=response, r_json=False) if str(j.get('return_code')) == '0': # 请求失败 response = PayJSResultFail(base=self, raw_response=response, r_json=j) else: if self.sign(j) == j.get('sign'): response = PayJSResultSuccess(base=self, raw_response=response, r_json=j) else: response = PayJSResultFail(base=self, raw_response=response, r_json=j) response.ERROR_MSG = '返回的签名错误' elif response.status_code == 302: # 收银台支付 return PayJSResultSuccess(base=self, raw_response=response, r_json=None) else: response = PayJSResultFail(base=self, raw_response=response, r_json=False) return response