Explorar o código

支付宝 回调11

chenshibin %!s(int64=4) %!d(string=hai) anos
pai
achega
c74d2185cb
Modificáronse 1 ficheiros con 72 adicións e 69 borrados
  1. 72 69
      Controller/CloudStorage.py

+ 72 - 69
Controller/CloudStorage.py

@@ -193,7 +193,7 @@ class CloudStorageView(View):
         mold = request_dict.get('mold', None)
         uid = request_dict.get('uid', None)
         qs = Store_Meal.objects
-        eq = ExperienceContextModel.objects.filter(uid=uid,experience_type=0).values('id')
+        eq = ExperienceContextModel.objects.filter(uid=uid, experience_type=0).values('id')
         # userqs = Device_User.objects.filter(userID=userID).values('is_experience')
 
         if mold:
@@ -202,15 +202,15 @@ class CloudStorageView(View):
             qs = qs.all()
 
         if eq:
-            qs=qs.filter(~Q(pay_type='10'))
+            qs = qs.filter(~Q(pay_type='10'))
         else:
             qs = qs.filter(pay_type='10')
 
-        qs=qs.filter(~Q(pay_type='11')) #过滤不显示激活码套餐
-        qs = qs.values("id", "title", "content", "price","day", "currency", "bucket__storeDay",
-                       "bucket__bucket", "bucket__area","commodity_code",
+        qs = qs.filter(~Q(pay_type='11'))  # 过滤不显示激活码套餐
+        qs = qs.values("id", "title", "content", "price", "day", "currency", "bucket__storeDay",
+                       "bucket__bucket", "bucket__area", "commodity_code",
                        "commodity_type", "is_discounts", "virtual_price", "expire",
-                       "discount_price", "discount_content","symbol")
+                       "discount_price", "discount_content", "symbol")
 
         if qs.exists():
             ql = list(qs)
@@ -221,7 +221,7 @@ class CloudStorageView(View):
             for area, items in groupby(ql, key=itemgetter('bucket__area')):
                 items_list = list(items)
                 for key, val in enumerate(items_list):
-                    pay_types = Pay_Type.objects.filter(store_meal=items_list[key]['id']).values("id","payment")
+                    pay_types = Pay_Type.objects.filter(store_meal=items_list[key]['id']).values("id", "payment")
                     items_list[key]['pay_type'] = list(pay_types)
 
                 res_c = {'area': area, 'items': items_list}
@@ -285,7 +285,7 @@ class CloudStorageView(View):
         fg = int(fg)
         ts_count = fg & 0xf
         for i in range(ts_count):
-            shift = (i+1)*4
+            shift = (i + 1) * 4
             duration = (fg >> shift) & 0xf
             if duration > 0:
                 tsFile = '{uid}/vod{channel}/{time}/ts{i}.ts'. \
@@ -431,7 +431,7 @@ class CloudStorageView(View):
                             "Effect": "Allow",
                             "Action": "s3:*",
                             "Resource": ["arn:aws:s3:::{bucket_name}/{uid_channel}*".
-                                             format(bucket_name=bucket_name,uid_channel=storage)]
+                                             format(bucket_name=bucket_name, uid_channel=storage)]
                         }
                     ]
                 }
@@ -457,16 +457,16 @@ class CloudStorageView(View):
                     'ip': ip,
                 }
                 if sts_qs.exists():
-                    sts_qs.update(data=json.dumps(res,default=str), addTime=now_time)
+                    sts_qs.update(data=json.dumps(res, default=str), addTime=now_time)
                 else:
                     StsCrdModel.objects.create(uid=uid, channel=channel, data=json.dumps(res, default=str),
                                                addTime=now_time, type=1)
                 return JsonResponse(status=200, data=res)
             else:
                 res = {'code': 404, 'msg': 'data not exists!'}
-                return HttpResponse(json.dumps(res, ensure_ascii=False),content_type="application/json,charset=utf-8")
+                return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
         res = {'code': 405, 'msg': 'Not purchased or expired!'}
-        return HttpResponse(json.dumps(res, ensure_ascii=False),content_type="application/json,charset=utf-8")
+        return HttpResponse(json.dumps(res, ensure_ascii=False), content_type="application/json,charset=utf-8")
 
     def do_query_vod_list(self, request_dict, userID, response):
         startTime = int(request_dict.get('startTime', None))
@@ -475,17 +475,17 @@ class CloudStorageView(View):
         channel = request_dict.get('channel', None)
 
         dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False).values('vodPrimaryUserID',
-                                                                                                       'vodPrimaryMaster')
+                                                                                            'vodPrimaryMaster')
         if not dv_qs.exists():
             return response.json(12)
         if dv_qs[0]['vodPrimaryUserID'] != '' and dv_qs[0]['vodPrimaryUserID'] != userID:
             return response.json(10034)
         now_time = int(time.time())
-        bv_qs = UID_Bucket.objects.filter(uid=uid,channel=channel, endTime__gte=now_time).order_by('addTime')
+        bv_qs = UID_Bucket.objects.filter(uid=uid, channel=channel, endTime__gte=now_time).order_by('addTime')
         if not bv_qs.exists():
             return response.json(10030)
         vh_qs = VodHlsModel.objects.filter \
-            ( uid=uid, channel=channel, time__range=(startTime, endTime), endTime__gte=now_time). \
+            (uid=uid, channel=channel, time__range=(startTime, endTime), endTime__gte=now_time). \
             values("id", "time", "sec", "bucket__bucket", "fg", "bucket__endpoint", "bucket__region", "bucket__mold")
         vod_play_list = []
 
@@ -543,14 +543,14 @@ class CloudStorageView(View):
                 )
                 vod_url = '{server_domain}/cloudstorage/signplaym3u8?' \
                           'uid={uid}&channel={channel}&time={time}&sign=tktktktk'. \
-                    format(server_domain=SERVER_DOMAIN,uid=uid, channel=channel, time=vod['time'])
+                    format(server_domain=SERVER_DOMAIN, uid=uid, channel=channel, time=vod['time'])
                 ts_num = int(vod['fg']) & 0xf
                 vod_play_list.append({
                     'name': vod['time'],
                     'sign_url': vod_url,
                     'thumb': response_url,
                     'sec': vod['sec'],
-                    'ts_num' : ts_num,
+                    'ts_num': ts_num,
                     'vod_id': vod['id']
                 }),
         return response.json(0, vod_play_list)
@@ -732,7 +732,7 @@ class CloudStorageView(View):
                 '''
         return response
 
-    def do_pay_ok(self,request_dict):
+    def do_pay_ok(self, request_dict):
         response = HttpResponse()
         paytype = request_dict.get('paytype', None)
         showtitle = "支付成功"
@@ -753,7 +753,7 @@ class CloudStorageView(View):
     <!-- viewport的<meta>标签,这个标签可以修改在大部分的移动设备上面的显示,为了确保适当的绘制和触屏缩放。-->
     <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <link rel="shortcut icon" href="https://test.dvema.com/web/images/favicon.ico" type="image/x-icon" charset="utf-8">  
-    <title>'''+showtitle+'''</title>
+    <title>''' + showtitle + '''</title>
     <style>
             .title_head{
                     height: 50px;
@@ -800,7 +800,7 @@ class CloudStorageView(View):
             <p>
 					<img src="https://test.dvema.com/web/images/success.png" class="content_img">
                     <br>
-                    '''+showtitle+'''
+                    ''' + showtitle + '''
             </p>
     </div>
     <center class="bottom">
@@ -871,6 +871,7 @@ class CloudStorageView(View):
                     logger.info(endTime)
                     logger.info(nowTime)
                     logger.info(orderID)
+                    logger.info(ubq['id'])
                     ub_cqs = UID_Bucket.objects.filter(id=ubq['id']).update \
                         (uid=UID, channel=channel, bucket_id=bucketId,
                          endTime=endTime, updateTime=nowTime)
@@ -933,7 +934,8 @@ class CloudStorageView(View):
             print("Payment execute successfully")
 
             nowTime = int(time.time())
-            order_list = order_qs.values("UID", "channel", "commodity_code", "rank", "isSelectDiscounts", "userID__userID",
+            order_list = order_qs.values("UID", "channel", "commodity_code", "rank", "isSelectDiscounts",
+                                         "userID__userID",
                                          "userID__username")
             userid = order_list[0]['userID__userID']
             username = order_list[0]['userID__username']
@@ -953,10 +955,10 @@ class CloudStorageView(View):
                 expire = smqs[0]['expire'] * 2
             if ubqs.exists():
                 ubq = ubqs[0]
-                endTime = CommonService.calcMonthLater(expire,ubq['endTime'])
+                endTime = CommonService.calcMonthLater(expire, ubq['endTime'])
                 ub_cqs = UID_Bucket.objects.filter(id=ubq['id']).update \
                     (uid=UID, channel=channel, bucket_id=bucketId,
-                     endTime=endTime,updateTime=nowTime)
+                     endTime=endTime, updateTime=nowTime)
                 uid_bucket_id = ubq['id']
             else:
                 endTime = CommonService.calcMonthLater(expire)
@@ -987,7 +989,6 @@ class CloudStorageView(View):
 
         logger = logging.getLogger('log')
 
-
         try:
             pay = WechatPayObject()
             data = pay.weixinpay_call_back(request.body)
@@ -1057,9 +1058,6 @@ class CloudStorageView(View):
 
             return HttpResponse(pay.xml_to_dict({'return_code': 'FAIL', 'return_msg': repr(e)}))
 
-
-
-
     def do_create_pay_order(self, request_dict, userID, ip, response):
         uid = request_dict.get('uid', None)
         channel = request_dict.get('channel', None)
@@ -1068,8 +1066,9 @@ class CloudStorageView(View):
         is_select_discount = request_dict.get('is_select_discount', 0)
         if not uid or not channel or not pay_type or not rank:
             return response.json(444)
-        dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1).values('vodPrimaryUserID',
-                                                                                                       'vodPrimaryMaster')
+        dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1).values(
+            'vodPrimaryUserID',
+            'vodPrimaryMaster')
         if not dv_qs.exists():
             return response.json(12)
 
@@ -1139,7 +1138,8 @@ class CloudStorageView(View):
                                                desc=content, payType=pay_type, payTime=nowTime,
                                                price=price, currency=currency, addTime=nowTime, updTime=nowTime,
                                                pay_url=approval_url, isSelectDiscounts=is_select_discount,
-                                               commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
+                                               commodity_code=commodity_code, commodity_type=commodity_type,
+                                               rank_id=rank)
                     return response.json(0, {"redirectUrl": approval_url, "orderID": orderID})
             return response.json(10, 'generate_order_false')
         elif pay_type == 2:
@@ -1169,7 +1169,8 @@ class CloudStorageView(View):
                                                desc=content, payType=pay_type, payTime=nowTime,
                                                price=price, currency=currency, addTime=nowTime, updTime=nowTime,
                                                pay_url=redirectUrl, isSelectDiscounts=is_select_discount,
-                                               commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
+                                               commodity_code=commodity_code, commodity_type=commodity_type,
+                                               rank_id=rank)
                     return JsonResponse(status=200, data={'result_code': 0, 'reason': 'success',
                                                           'result': {"redirectUrl": redirectUrl, "orderID": orderID},
                                                           'error_code': 0})
@@ -1178,15 +1179,15 @@ class CloudStorageView(View):
 
         elif pay_type == 3:
             pay = WechatPayObject()
-            notify_url="{SERVER_DOMAIN_SSL}cloudstorage/dowechatnotify".format(
+            notify_url = "{SERVER_DOMAIN_SSL}cloudstorage/dowechatnotify".format(
                 SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL)
             # 获取参数
             response = ResponseObject()
             asy = threading.Thread(target=ModelService.add_log,
                                    args=(orderID,
-                                         orderID, '进来了,微信支付创建订单'+notify_url))
+                                         orderID, '进来了,微信支付创建订单' + notify_url))
             asy.start()
-            price = float(price)*100
+            price = float(price) * 100
             parameter_dict = pay.get_parameter(orderID, content, price, ip, notify_url)
             print('parameter_dict', parameter_dict)
             # parameter_dict 参数中获取MWEB_URL 调转页面在路径后面添加redirect_url
@@ -1199,7 +1200,7 @@ class CloudStorageView(View):
                                        desc=content, payType=pay_type, payTime=nowTime,
                                        price=price, currency=currency, addTime=nowTime, updTime=nowTime,
                                        pay_url=notify_url, isSelectDiscounts=is_select_discount,
-                                       commodity_code=commodity_code, commodity_type=commodity_type,rank_id=rank)
+                                       commodity_code=commodity_code, commodity_type=commodity_type, rank_id=rank)
             return JsonResponse(status=200, data={'result_code': 0, 'reason': 'success',
                                                   'result': response,
                                                   'orderId': orderID,
@@ -1228,12 +1229,12 @@ class CloudStorageView(View):
             return response.json(13, '参数有误.')
 
         dvq = Device_Info.objects.filter(UID=uid)
-        dvq=dvq.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID')
+        dvq = dvq.filter(~Q(vodPrimaryUserID='')).values('vodPrimaryUserID')
         if dvq.exists():
-            if dvq[0]['vodPrimaryUserID']!=userID:
-                if pay_type==10:
+            if dvq[0]['vodPrimaryUserID'] != userID:
+                if pay_type == 10:
                     return response.json(10035)
-                if pay_type==11:
+                if pay_type == 11:
                     return response.json(10036)
 
         dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1)
@@ -1253,10 +1254,10 @@ class CloudStorageView(View):
         expire = smqs[0]['expire']
         if ubqs.exists():
             ubq = ubqs[0]
-            endTime = CommonService.calcMonthLater(expire,ubq['endTime'])
+            endTime = CommonService.calcMonthLater(expire, ubq['endTime'])
             ub_cqs = UID_Bucket.objects.filter(id=ubq['id']).update \
                 (uid=uid, channel=channel, bucket_id=bucketId,
-                 endTime=endTime,updateTime=nowTime)
+                 endTime=endTime, updateTime=nowTime)
             uid_bucket_id = ubq['id']
         else:
             endTime = CommonService.calcMonthLater(expire)
@@ -1265,10 +1266,11 @@ class CloudStorageView(View):
             uid_bucket_id = ub_cqs.id
         Order_Model.objects.create(orderID=orderID, UID=uid, channel=channel, userID_id=userID,
                                    desc=smqs[0]['content'], payType=pay_type, payTime=nowTime,
-                                   price=smqs[0]['price'], currency=smqs[0]['currency'], addTime=nowTime, updTime=nowTime,
+                                   price=smqs[0]['price'], currency=smqs[0]['currency'], addTime=nowTime,
+                                   updTime=nowTime,
                                    pay_url="体验版",
                                    commodity_code=commodity_code, commodity_type=smqs[0]['commodity_type'],
-                                   rank_id=rank,status=1, uid_bucket_id=uid_bucket_id)
+                                   rank_id=rank, status=1, uid_bucket_id=uid_bucket_id)
 
         duq = Device_User.objects.filter(userID=userID).values('username')
         dvq = Device_Info.objects.filter(UID=uid, vodPrimaryUserID='', vodPrimaryMaster='')
@@ -1289,7 +1291,7 @@ class CloudStorageView(View):
             )
             returnurl = "{SERVER_DOMAIN}cloudstorage/payOK?paytype=10".format(SERVER_DOMAIN=SERVER_DOMAIN)
 
-        if pay_type== 11:
+        if pay_type == 11:
             update_dict = {}
             update_dict['is_activate'] = 1
             update_dict['order'] = orderID
@@ -1303,15 +1305,15 @@ class CloudStorageView(View):
 
         # return HttpResponseRedirect(red_url)
 
-    #重置设备云存体验
+    # 重置设备云存体验
     def do_experience_reset(self, request_dict, userID, response):
-        bid = request_dict.get("id",None)
+        bid = request_dict.get("id", None)
         ubq = UID_Bucket.objects.filter(id=bid)
         if ubq:
-            eq =ExperienceContextModel.objects.filter(uid = ubq[0].uid)
+            eq = ExperienceContextModel.objects.filter(uid=ubq[0].uid)
             if eq:
                 eq.delete()
-                Order_Model.objects.filter(uid_bucket_id = bid).delete()
+                Order_Model.objects.filter(uid_bucket_id=bid).delete()
                 ubq.delete()
             else:
                 return response.json(10007)
@@ -1319,17 +1321,16 @@ class CloudStorageView(View):
         else:
             return response.json(0, '重置云存体验失败')
 
-        return response.json(0,'重置云存体验成功')
-
+        return response.json(0, '重置云存体验成功')
 
     def deleteVodList(self, request_dict, userID, response):
-        uid = request_dict.get('uid',None)
+        uid = request_dict.get('uid', None)
         dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1) \
             .values('vodPrimaryUserID')
         if not dv_qs.exists() or dv_qs[0]['vodPrimaryUserID'] != userID:
             return response.json(12)
         vod_id_list = json.loads(request_dict.get('vod_id_list', None))
-        is_del_all = request_dict.get('is_del_all',0)
+        is_del_all = request_dict.get('is_del_all', 0)
         try:
             if is_del_all == 1:
                 VodHlsModel.objects.filter(uid=uid).delete()
@@ -1342,36 +1343,39 @@ class CloudStorageView(View):
         else:
             return response.json(0)
 
-    #设备关联套餐列表
+    # 设备关联套餐列表
     def device_commodity(self, request_dict, userID, response):
-        uid = request_dict.get('uid',None)
+        uid = request_dict.get('uid', None)
         dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1) \
             .values('vodPrimaryUserID')
         if not dv_qs.exists() or dv_qs[0]['vodPrimaryUserID'] != userID:
             return response.json(12)
         now_time = int(time.time())
         uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=now_time).values("id", "uid", "endTime",
-                                                                              "bucket__content").order_by('addTime')
+                                                                                      "bucket__content").order_by(
+            'addTime')
         if not uid_bucket.exists():
             return response.json(10030)
         for index, value in enumerate(uid_bucket):
             value['is_use'] = 0
             if index == 0:
                 value['is_use'] = 1
-        return response.json(0,list(uid_bucket))
+        return response.json(0, list(uid_bucket))
 
-    #提前使用设备关联套餐
+    # 提前使用设备关联套餐
     def switch_device_commodity(self, request_dict, userID, response):
-        uid = request_dict.get('uid',None)
+        uid = request_dict.get('uid', None)
         dv_qs = Device_Info.objects.filter(userID_id=userID, UID=uid, isShare=False, isExist=1) \
             .values('vodPrimaryUserID')
         if not dv_qs.exists() or dv_qs[0]['vodPrimaryUserID'] != userID:
             return response.json(12)
-        switch_commodity_id = request_dict.get('switch_commodity_id',None)
+        switch_commodity_id = request_dict.get('switch_commodity_id', None)
         if switch_commodity_id:
-            #切换设备套餐关联
+            # 切换设备套餐关联
             using_uid_bucket = UID_Bucket.objects.filter(uid=uid, endTime__gte=int(time.time())).values("id", "uid",
-                                                                        "endTime","bucket__content").order_by('addTime')
+                                                                                                        "endTime",
+                                                                                                        "bucket__content").order_by(
+                'addTime')
 
             if not using_uid_bucket.exists():
                 return response.json(10030)
@@ -1380,15 +1384,14 @@ class CloudStorageView(View):
                 return response.json(10032)
 
             # UID_Bucket.objects.filter(id=switch_commodity_id).update(is_use=1)  #更新转移的云存套餐为使用中
-            UID_Bucket.objects.filter(id=using_uid_bucket[0]['id']).delete()    #删除原来使用中的云存套餐
-            VodHlsModel.objects.filter(uid=uid).delete()                        #删除播放列表
-            StsCrdModel.objects.filter(uid=uid).delete()                        #删除sts记录
+            UID_Bucket.objects.filter(id=using_uid_bucket[0]['id']).delete()  # 删除原来使用中的云存套餐
+            VodHlsModel.objects.filter(uid=uid).delete()  # 删除播放列表
+            StsCrdModel.objects.filter(uid=uid).delete()  # 删除sts记录
             return response.json(0)
         return response.json(444)
 
 
-
-#删除过期云存播放列表
+# 删除过期云存播放列表
 def deleteVodHls(request):
     # UID = 'DSXG7481JVA2JM94111A'
     # channel = 1
@@ -1417,12 +1420,12 @@ def deleteVodHls(request):
         VodHlsModel.objects.filter(id__in=list(id_list)).delete()
     return response.json(0)
 
-#删除过期云存关联套餐
+
+# 删除过期云存关联套餐
 def deleteExpiredUidBucket(request):
     response = ResponseObject()
     now_time = int(time.time())
     expired_uid_bucket = UID_Bucket.objects.filter(endTime__lte=now_time)
     id_list = expired_uid_bucket.values_list("id", flat=True)
-    UID_Bucket.objects.filter(id__in=list(id_list)).delete()  #删除过期云存关联套餐, 后续是否考虑用软删除
+    UID_Bucket.objects.filter(id__in=list(id_list)).delete()  # 删除过期云存关联套餐, 后续是否考虑用软删除
     return response.json(0)
-