소스 검색

限制同一订单号十分钟内重复处理请求

locky 1 개월 전
부모
커밋
0f417e6fed
1개의 변경된 파일8개의 추가작업 그리고 0개의 파일을 삭제
  1. 8 0
      Controller/PaymentCycle.py

+ 8 - 0
Controller/PaymentCycle.py

@@ -15,6 +15,7 @@ from Ansjer.config import PAYPAL_CRD, SERVER_DOMAIN_SSL, PAYPAL_WEB_HOOK_ID, CON
 from Controller import CloudStorage
 from Model.models import PayCycleConfigModel, Store_Meal, UID_Bucket, PromotionRuleModel, \
     Unused_Uid_Meal, Device_Info, CouponModel, Order_Model, PaypalWebHookEvent, CountryModel, AiService
+from Object.RedisObject import RedisObject
 from Object.ResponseObject import ResponseObject
 from Object.TokenObject import TokenObject
 from Service.CommonService import CommonService
@@ -512,6 +513,13 @@ class PaypalCycleNotify(View):
                                 format(order_id, agreement_id))
                 return HttpResponse('fail', status=500)
 
+            # 限制同一订单号十分钟内重复处理请求
+            redis_obj = RedisObject()
+            lock_key = order_id + '_paypal_lock'
+            lock = redis_obj.try_lock(lock_key, '1', 10, 60)
+            if not lock:
+                return HttpResponse('Fail', status=500)
+
             # 判断用户地区是否跟服务器地区匹配
             uid = order_qs[0]['UID']
             country_id = order_qs[0]['userID__region_country']