浏览代码

微信支付 回调通知3

chenshibin 4 年之前
父节点
当前提交
615ac46a1c
共有 2 个文件被更改,包括 33 次插入46 次删除
  1. 12 12
      Controller/CloudStorage.py
  2. 21 34
      Object/WechatPayObject.py

+ 12 - 12
Controller/CloudStorage.py

@@ -958,16 +958,18 @@ class CloudStorageView(View):
 
 
         logger = logging.getLogger('log')
         logger = logging.getLogger('log')
 
 
-        data = WechatPayObject.weixinpay_call_back(request)
+        pay = WechatPayObject()
+        data = pay.weixinpay_call_back(request.body)
 
 
         trade_status = data['result_code']  # 业务结果  SUCCESS/FAIL
         trade_status = data['result_code']  # 业务结果  SUCCESS/FAIL
         out_trade_no = data['out_trade_no']  # 商户订单号
         out_trade_no = data['out_trade_no']  # 商户订单号
+        order_qs =None
         try:
         try:
             if trade_status == "SUCCESS":
             if trade_status == "SUCCESS":
                 logger.info('微信回调返回值 进来了。')
                 logger.info('微信回调返回值 进来了。')
-                check_sign = WechatPayObject.get_notifypay(trade_status)
+                check_sign = pay.get_notifypay(data)
                 if not check_sign:
                 if not check_sign:
-                    return HttpResponse(WechatPayObject.xml_to_dict({'return_code': 'FAIL', 'return_msg': '签名失败'}))
+                    return HttpResponse(pay.xml_to_dict({'return_code': 'FAIL', 'return_msg': '签名失败'}))
                 logger.info('签名成功')
                 logger.info('签名成功')
                 orderID = out_trade_no
                 orderID = out_trade_no
                 print("进来了,微信支付成功回调")
                 print("进来了,微信支付成功回调")
@@ -986,7 +988,7 @@ class CloudStorageView(View):
                     values("day", "bucket_id", "bucket__storeDay", "expire")
                     values("day", "bucket_id", "bucket__storeDay", "expire")
                 bucketId = smqs[0]['bucket_id']
                 bucketId = smqs[0]['bucket_id']
                 if not smqs.exists():
                 if not smqs.exists():
-                    return HttpResponse(WechatPayObject.xml_to_dict({'return_code': 'FAIL', 'return_msg': '套餐不存在'}))
+                    return HttpResponse(pay.xml_to_dict({'return_code': 'FAIL', 'return_msg': '套餐不存在'}))
                 # ##
                 # ##
                 ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
                 ubqs = UID_Bucket.objects.filter(bucket__id=bucketId, uid=UID, channel=channel, endTime__gte=nowTime). \
                            values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('addTime')[:1]
                            values("id", "bucket__storeDay", "bucket__region", "endTime").order_by('addTime')[:1]
@@ -1015,15 +1017,13 @@ class CloudStorageView(View):
                     }
                     }
                     dvq.update(**dvq_set_update_dict)
                     dvq.update(**dvq_set_update_dict)
                 order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
                 order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
-                return HttpResponse(WechatPayObject.xml_to_dict({'return_code': 'SUCCESS', 'return_msg': 'OK'}))
-            return HttpResponse(WechatPayObject.xml_to_dict({'return_code': 'FAIL', 'return_msg': '参数格式校验错误'}))
+                return HttpResponse(pay.xml_to_dict({'return_code': 'SUCCESS', 'return_msg': 'OK'}))
+            return HttpResponse(pay.xml_to_dict({'return_code': 'FAIL', 'return_msg': '参数格式校验错误'}))
         except Exception as e:
         except Exception as e:
-            print(repr(e))
-            asy = threading.Thread(target=ModelService.add_log,
-                                   args=('回调',
-                                         '回调报错', repr(e)))
-            asy.start()
-            return response.json(10, repr(e))
+            if order_qs:
+                order_qs.update(status=0)
+
+            return HttpResponse(pay.xml_to_dict({'return_code': 'FAIL', 'return_msg': repr(e)}))
 
 
 
 
 
 

+ 21 - 34
Object/WechatPayObject.py

@@ -124,9 +124,8 @@ class WechatPayObject:
         return sign_again_params  # 返回给app
         return sign_again_params  # 返回给app
 
 
     def get_notifypay(self, data):
     def get_notifypay(self, data):
-        dictdata = dict(data)
-        _dictdata = dict(dictdata['xml'])
-        success = self.get_sign(_dictdata)
+
+        success = self.get_sign(data)
         # print('success', success)
         # print('success', success)
         if success:
         if success:
             success.pop("sign", None)
             success.pop("sign", None)
@@ -136,37 +135,12 @@ class WechatPayObject:
         else:
         else:
             return False
             return False
 
 
-    @staticmethod
-    def xml_to_dict(params):
-        """
-        拼接XML
-        """
-        if not isinstance(params, dict):
-            return None
-        xml = "<xml>"
-        for k, v in params.items():
-            # v = v.encode('utf8')
-            # k = k.encode('utf8')
-            xml += '<' + k + '>' + v + '</' + k + '>'
-        xml += "</xml>"
-        return xml
-
-
-
-    def weixinpay_call_back(self, request):
-        """
-
-        微信支付回调
-
-        :param request: 回调参数
+    def weixinpay_call_back(self, data):
 
 
-        :return:
-
-        """
-        args = str(request.body, 'utf-8')
+        args = str(data, 'utf-8')
 
 
         if args is None:
         if args is None:
-             return None
+            return None
 
 
         print(args)
         print(args)
 
 
@@ -179,8 +153,6 @@ class WechatPayObject:
 
 
         return resp_dict
         return resp_dict
 
 
-
-
     def handle_wx_response_xml(self, params):
     def handle_wx_response_xml(self, params):
 
 
         """
         """
@@ -209,4 +181,19 @@ class WechatPayObject:
 
 
             return None
             return None
 
 
-        return None
+        return None
+
+    @staticmethod
+    def xml_to_dict(params):
+        """
+        拼接XML
+        """
+        if not isinstance(params, dict):
+            return None
+        xml = "<xml>"
+        for k, v in params.items():
+            # v = v.encode('utf8')
+            # k = k.encode('utf8')
+            xml += '<' + k + '>' + v + '</' + k + '>'
+        xml += "</xml>"
+        return xml