docs: def parse_payment_result(self, xml):
          """解析微信支付结果通知"""
          try:
              data = xmltodict.parse(xml)
          except (xmltodict.ParsingInterrupted, ExpatError):
              raise InvalidSignatureException()
  
          if not data or 'xml' not in data:
              raise InvalidSignatureException()
  
          data = data['xml']
          sign = data.pop('sign', None)
          real_sign = calculate_signature(data, self.api_key if not self.sandbox else self.sandbox_api_key)
          if sign != real_sign:
              raise InvalidSignatureException()
  
          for key in ('total_fee', 'settlement_total_fee', 'cash_fee', 'coupon_fee', 'coupon_count'):
              if key in data:
                  data[key] = int(data[key])
          data['sign'] = sign
          return data