Pārlūkot izejas kodu

完善PayPal支付回调

locky 3 gadi atpakaļ
vecāks
revīzija
d0c55b9d26
1 mainītis faili ar 32 papildinājumiem un 23 dzēšanām
  1. 32 23
      Controller/AiController.py

+ 32 - 23
Controller/AiController.py

@@ -476,6 +476,10 @@ class AiView(View):
         orderID = request_dict.get('orderID', None)
         orderID = request_dict.get('orderID', None)
         lang = request_dict.get('lang', 'en')
         lang = request_dict.get('lang', 'en')
 
 
+        if not orderID:
+            pay_failed_url = CommonService.get_payment_status_url(lang, 'fail')
+            return HttpResponseRedirect(pay_failed_url)
+
         logger.info("paymentID={paymentId},payerID={PayerID}".format(paymentId=paymentId, PayerID=PayerID))
         logger.info("paymentID={paymentId},payerID={PayerID}".format(paymentId=paymentId, PayerID=PayerID))
 
 
         # redis加锁,防止订单重复
         # redis加锁,防止订单重复
@@ -486,9 +490,8 @@ class AiView(View):
             return response.json(5)
             return response.json(5)
         try:
         try:
             order_qs = Order_Model.objects.filter(orderID=orderID, status=0)
             order_qs = Order_Model.objects.filter(orderID=orderID, status=0)
-            if not orderID:
-                pay_failed_url = CommonService.get_payment_status_url(lang, 'fail')
-                return HttpResponseRedirect(pay_failed_url)
+            if not order_qs.exists():
+                return response.json(173)
 
 
             paypalrestsdk.configure(PAYPAL_CRD)
             paypalrestsdk.configure(PAYPAL_CRD)
             payment = paypalrestsdk.Payment.find(paymentId)
             payment = paypalrestsdk.Payment.find(paymentId)
@@ -503,36 +506,42 @@ class AiView(View):
                 return HttpResponseRedirect(pay_failed_url)
                 return HttpResponseRedirect(pay_failed_url)
 
 
             nowTime = int(time.time())
             nowTime = int(time.time())
-            order_list = order_qs.values("UID", "channel", "commodity_code", "ai_rank", "isSelectDiscounts",
+            order_list = order_qs.values("UID", "channel", "commodity_code", "ai_rank__effective_day", "isSelectDiscounts",
                                          "userID__userID", "userID__username", "coupon_id")
                                          "userID__userID", "userID__username", "coupon_id")
             userid = order_list[0]['userID__userID']
             userid = order_list[0]['userID__userID']
             username = order_list[0]['userID__username']
             username = order_list[0]['userID__username']
             UID = order_list[0]['UID']
             UID = order_list[0]['UID']
             channel = order_list[0]['channel']
             channel = order_list[0]['channel']
-            ai_rank = order_list[0]['ai_rank']
-
-            # 套餐时间
-            ai_sm_qs = AiStoreMeal.objects.filter(id=ai_rank).values('effective_day')
-            if not ai_sm_qs.exists():
-                return response.json(173)
+            effective_day = order_list[0]['ai_rank__effective_day']
+
+            ai_service_qs = AiService.objects.filter(Q(uid=UID), Q(channel=channel), Q(use_status=1))
+            ai_service_dict = {'orders_id': orderID,
+                               'uid': UID,
+                               'channel': channel,
+                               'detect_status': 1,
+                               'addTime': nowTime,
+                               'updTime': nowTime,
+                               'detect_group': '1'
+                               }
+            if ai_service_qs.exists():      # 存在正在使用的套餐
+                ai_service_dict['endTime'] = effective_day * 24 * 60 * 60
+            else:
+                ai_service_dict['use_status'] = 1
+                ai_service_dict['endTime'] = nowTime + effective_day * 24 * 60 * 60
             with transaction.atomic():
             with transaction.atomic():
                 # 更新设备主用户
                 # 更新设备主用户
-                dvq = Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='')
-                if dvq.exists():
-                    dvq_set_update_dict = {
-                        'vodPrimaryUserID': userid,
-                        'vodPrimaryMaster': username
-                    }
-                    dvq.update(**dvq_set_update_dict)
-
+                Device_Info.objects.filter(UID=UID, vodPrimaryUserID='', vodPrimaryMaster='').\
+                    update(vodPrimaryUserID=userid, vodPrimaryMaster=username)
                 # 更新订单数据,返回支付成功url
                 # 更新订单数据,返回支付成功url
                 order_qs.update(status=1, updTime=nowTime)
                 order_qs.update(status=1, updTime=nowTime)
-                pay_success_url = CommonService.get_payment_status_url(lang, 'fail')
-                redisObj.del_data(key=orderID + 'do_notify')
-                return HttpResponseRedirect(pay_success_url)
+                # 创建AiService数据
+                AiService.objects.create(**ai_service_dict)
+
+            pay_success_url = CommonService.get_payment_status_url(lang, 'fail')
+            redisObj.del_data(key=orderID + 'do_notify')
+            return HttpResponseRedirect(pay_success_url)
         except Exception as e:
         except Exception as e:
-            if order_qs:
-                order_qs.update(status=10)
+            order_qs.update(status=10)
             pay_failed_url = CommonService.get_payment_status_url(lang, 'fail')
             pay_failed_url = CommonService.get_payment_status_url(lang, 'fail')
             redisObj.del_data(key=orderID + 'do_notify')
             redisObj.del_data(key=orderID + 'do_notify')
             return HttpResponseRedirect(pay_failed_url)
             return HttpResponseRedirect(pay_failed_url)