|
@@ -15,6 +15,7 @@ from Ansjer.config import PAYPAL_CRD, SERVER_DOMAIN_SSL, PAYPAL_WEB_HOOK_ID, CON
|
|
from Controller import CloudStorage
|
|
from Controller import CloudStorage
|
|
from Model.models import PayCycleConfigModel, Store_Meal, UID_Bucket, PromotionRuleModel, \
|
|
from Model.models import PayCycleConfigModel, Store_Meal, UID_Bucket, PromotionRuleModel, \
|
|
Unused_Uid_Meal, Device_Info, CouponModel, Order_Model, PaypalWebHookEvent, CountryModel, AiService
|
|
Unused_Uid_Meal, Device_Info, CouponModel, Order_Model, PaypalWebHookEvent, CountryModel, AiService
|
|
|
|
+from Object.RedisObject import RedisObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.ResponseObject import ResponseObject
|
|
from Object.TokenObject import TokenObject
|
|
from Object.TokenObject import TokenObject
|
|
from Service.CommonService import CommonService
|
|
from Service.CommonService import CommonService
|
|
@@ -512,6 +513,13 @@ class PaypalCycleNotify(View):
|
|
format(order_id, agreement_id))
|
|
format(order_id, agreement_id))
|
|
return HttpResponse('fail', status=500)
|
|
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']
|
|
uid = order_qs[0]['UID']
|
|
country_id = order_qs[0]['userID__region_country']
|
|
country_id = order_qs[0]['userID__region_country']
|