Parcourir la source

创建订单 增加传语言参数

chenshibin il y a 4 ans
Parent
commit
5c9c71c1f9
3 fichiers modifiés avec 29 ajouts et 14 suppressions
  1. 22 12
      Controller/CloudStorage.py
  2. 4 0
      Object/ResponseObject.py
  3. 3 2
      Object/WechatPayObject.py

+ 22 - 12
Controller/CloudStorage.py

@@ -14,6 +14,7 @@
 import json
 import time
 import urllib
+from urllib.parse import urlencode, parse_qs, unquote
 
 import boto3
 import oss2
@@ -716,8 +717,11 @@ class CloudStorageView(View):
         response = ResponseObject()
         data = request.POST.dict()
         logger = logging.getLogger('log')
-        try:
 
+        try:
+            passback_params = data["passback_params"]
+            parmap = dict([(k, v[0]) for k, v in parse_qs(unquote(passback_params)).items()])
+            lang = parmap["lang"]
             signature = data["sign"]
             data.pop('sign')
             orderID = data['out_trade_no']
@@ -777,7 +781,7 @@ class CloudStorageView(View):
 
                 order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
                 sys_msg_text_list = ['成功购买云存', 'Successful purchase of cloud storage']
-                do_vod_msg_Notice(request , UID, userid, sys_msg_text_list)
+                do_vod_msg_Notice(request , UID, userid, lang, sys_msg_text_list)
                 red_url = "{SERVER_DOMAIN}web/paid2/success.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
                 return HttpResponseRedirect(red_url)
             return response.json(0, signature)
@@ -791,6 +795,7 @@ class CloudStorageView(View):
         paymentId = request_dict.get('paymentId', None)
         PayerID = request_dict.get('PayerID', None)
         orderID = request_dict.get('orderID', None)
+        lang = request_dict.get('lang', None)
 
         try:
             order_qs = Order_Model.objects.filter(orderID=orderID, status=0)
@@ -852,7 +857,7 @@ class CloudStorageView(View):
                 dvq.update(**dvq_set_update_dict)
             order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
             sys_msg_text_list = ['成功购买云存','Successful purchase of cloud storage']
-            do_vod_msg_Notice(request_dict, UID, userid, sys_msg_text_list)
+            do_vod_msg_Notice(request_dict, UID, userid, lang, sys_msg_text_list)
 
             # return response.json(0)
             red_url = "{SERVER_DOMAIN}web/paid2/success.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
@@ -873,6 +878,9 @@ class CloudStorageView(View):
             pay = WechatPayObject()
             data = pay.weixinpay_call_back(request.body)
 
+            attach = data["attach"]
+            parmap = dict([(k, v[0]) for k, v in parse_qs(unquote(attach)).items()])
+            lang = parmap["lang"]
             trade_status = data['result_code']  # 业务结果  SUCCESS/FAIL
             out_trade_no = data['out_trade_no']  # 商户订单号
             order_qs = Order_Model.objects.filter(orderID=out_trade_no, status=0)
@@ -927,7 +935,7 @@ class CloudStorageView(View):
                     dvq.update(**dvq_set_update_dict)
                 order_qs.update(status=1, updTime=nowTime, uid_bucket_id=uid_bucket_id)
                 sys_msg_text_list = ['成功购买云存', 'Successful purchase of cloud storage']
-                do_vod_msg_Notice(request, UID, userid, sys_msg_text_list)
+                do_vod_msg_Notice(request, UID, userid, lang, sys_msg_text_list)
                 return HttpResponse(pay.xml_to_dict({'return_code': 'SUCCESS', 'return_msg': 'OK'}))
 
             else:
@@ -946,6 +954,7 @@ class CloudStorageView(View):
         pay_type = int(request_dict.get('pay_type', None))
         rank = request_dict.get('rank', None)
         is_select_discount = request_dict.get('is_select_discount', 0)
+        lang = request_dict.get('lang', 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(
@@ -991,8 +1000,8 @@ class CloudStorageView(View):
 
         orderID = CommonService.createOrderID()
         if pay_type == 1:
-            call_sub_url = "{SERVER_DOMAIN}cloudstorage/dopaypalcallback?orderID={orderID}". \
-                format(SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
+            call_sub_url = "{SERVER_DOMAIN}cloudstorage/dopaypalcallback?orderID={orderID}&lang={lang}". \
+                format(SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID, lang=lang)
             # call_sub_url = "http://binbin.uicp.vip/cloudstorage/dopaypalcallback?orderID={orderID}".format(
             # SERVER_DOMAIN=SERVER_DOMAIN, orderID=orderID)
             call_clc_url = "{SERVER_DOMAIN}web/paid2/fail.html".format(SERVER_DOMAIN=SERVER_DOMAIN)
@@ -1045,6 +1054,7 @@ class CloudStorageView(View):
                     notify_url="{SERVER_DOMAIN_SSL}cloudstorage/doalicallback".format(
                         SERVER_DOMAIN_SSL=SERVER_DOMAIN_SSL),
                     quit_url="{SERVER_DOMAIN}web/paid2/fail.html".format(SERVER_DOMAIN=SERVER_DOMAIN),
+                    passback_params=urlencode("lang="+lang)
                     # return_url="http://192.168.136.40/cloudstorage/payOK",
                     # notify_url="http://192.168.136.40/cloudstorage/aliPayCallback"
                 )
@@ -1078,7 +1088,7 @@ class CloudStorageView(View):
             # 获取参数
             response = ResponseObject()
 
-            parameter_dict = pay.get_parameter(orderID, content, float(price) * 100, ip, notify_url)
+            parameter_dict = pay.get_parameter(orderID, content, float(price) * 100, ip, notify_url, urlencode("lang="+lang))
             print('parameter_dict', parameter_dict)
             # parameter_dict 参数中获取MWEB_URL 调转页面在路径后面添加redirect_url
             # 统一调用接口
@@ -1109,9 +1119,9 @@ class CloudStorageView(View):
         if cdk != None and pay_type == 11:
             cdk_qs = CDKcontextModel.objects.filter(cdk=cdk).values('is_activate', 'rank__id', 'rank__commodity_code')
             if not cdk_qs.exists():
-                return response.json(10, '无效激活码')
+                return response.json(10040)
             if cdk_qs[0]['is_activate'] == 1:
-                return response.json(10, '激活码已被使用过')
+                return response.json(10039)
             rank = cdk_qs[0]['rank__id']
             commodity_code = cdk_qs[0]['rank__commodity_code']
 
@@ -1320,11 +1330,11 @@ def deleteExpiredUidBucket(request):
     return response.json(0)
 
 # 云存操作系统消息
-def do_vod_msg_Notice(request, uid , userID , sys_msg_text_list):
+def do_vod_msg_Notice(request, uid , userID , lang, sys_msg_text_list):
     logger = logging.getLogger('log')
     logger.info('进来了')
-    user = Device_User.objects.get(userID = userID)
-    lang = user.language;
+    # user = Device_User.objects.get(userID = userID)
+    # lang = user.language;
     if lang == 'cn':
         sys_msg_text = sys_msg_text_list[0]
     else:

+ 4 - 0
Object/ResponseObject.py

@@ -92,6 +92,8 @@ class ResponseObject(object):
             10036: 'Non device primary users cannot exchange for cloud storage',
             10037: 'Non device primary user cannot transfer device',
             10038: 'Non device primary user cannot transfer packages',
+            10039: 'Activation code has been used',
+            10040: 'Invalid activation code'
         }
         data_cn = {
             0: '成功',
@@ -178,6 +180,8 @@ class ResponseObject(object):
             10036: '非设备主用户无法兑换云存',
             10037: '非设备主用户无法转移设备',
             10038: '非设备主用户无法转移套餐',
+            10039: '激活码已被使用过',
+            10040: '无效激活码'
         }
         if self.lang == 'cn':
             msg = data_cn

+ 3 - 2
Object/WechatPayObject.py

@@ -23,7 +23,7 @@ class WechatPayObject:
         self.error = None
         self.params = None
 
-    def get_parameter(self, order_id, body, total_fee, spbill_create_ip, notify_url):
+    def get_parameter(self, order_id, body, total_fee, spbill_create_ip, notify_url, attach):
         self.params = {
             'appid': self.APPID,  # appid
             'mch_id': self.MCHID,  # 商户号
@@ -34,7 +34,8 @@ class WechatPayObject:
             'spbill_create_ip': spbill_create_ip,  # 127.0.0.1
             'trade_type': self.TRADE_TYPE,  # 交易类型
             'notify_url': notify_url,  # 微信支付结果异步通知地址
-            'receipt': 'Y'
+            'receipt': 'Y',
+            'attach' : attach
         }
         return self.params