Bladeren bron

解决微信部分退款失败

peng 1 jaar geleden
bovenliggende
commit
08719b22e2
2 gewijzigde bestanden met toevoegingen van 4 en 3 verwijderingen
  1. 2 1
      Controller/CloudStorage.py
  2. 2 2
      Object/WechatPayObject.py

+ 2 - 1
Controller/CloudStorage.py

@@ -2444,8 +2444,9 @@ class CloudStorageView(View):
             elif pay_type == 3:  # 微信
                 wechat_pay_obj = WechatPayObject()
                 refund_fee = int(refund_amount * 100)  # 退款金额,单位为分,只能为整数
+                total_fee = int(float(price) * 100)  # 订单金额,单位为分,只能为整数
                 success = wechat_pay_obj.refund(out_trade_no=order_id, out_refund_no=out_request_no,
-                                                total_fee=refund_fee, refund_fee=refund_fee)
+                                                total_fee=total_fee, refund_fee=refund_fee)
                 refund_success = True if success else False
             else:  # 不支持退款的支付类型
                 return response.json(805)

+ 2 - 2
Object/WechatPayObject.py

@@ -24,7 +24,7 @@ class WechatPayObject:
         self.APIKEY = 'ZHansjeransjeransjer680301000000'
         self.url = 'https://api.mch.weixin.qq.com/pay/unifiedorder'  # 微信请求url
         self.refund_url = 'https://api.mch.weixin.qq.com/secapi/pay/refund'   # 退款url
-        self.downloadbill_url = 'https://api.mch.weixin.qq.com/pay/downloadbill'
+        self.downloadbill_url = 'https://api.mch.weixin.qq.com/pay/downloadbill'  # 账单url
         self.error = None
         self.params = None
 
@@ -224,7 +224,7 @@ class WechatPayObject:
         r = requests.post(url=self.refund_url, headers={'Content-Type': 'text/xml'}, data=xml.encode('utf-8'),
                           cert=(cert, key), verify=True)
         response = xmltodict.parse(r.text)
-        if response['xml']['return_code'] == 'SUCCESS':
+        if response['xml']['result_code'] == 'SUCCESS':
             return True
         else:
             return False