예제 #1
0
    def order_status_upd1(self, request, *args, **kwargs):

        if not len(self.request.data_format.get("orders")):
            raise PubErrorCustom("订单号不能为空!")

        for ordercode in self.request.data_format.get("orders"):
            PayCallBase().work_handler_updbal(ordercode=ordercode)
예제 #2
0
    def appHomeData(self, request):

        res = {
            "rate": 0.0,
            "totorder": 0,
            "sorder": 0,
            "amount": 0.0,
            "totamount": 0.0
        }
        print(request.query_params_format)
        start_datetime = send_toTimestamp(
            request.query_params_format.get("startdate") + ' 00:00:01')
        end_datetime = send_toTimestamp(
            request.query_params_format.get("enddate") + ' 23:59:59')

        if self.request.user.rolecode in ["1000", "1001", "1005", "1006"]:
            pass
        else:
            raise PubErrorCustom("权限不足!")

        obj = Order.objects.filter(createtime__lte=end_datetime,
                                   createtime__gte=start_datetime)

        if obj.exists:
            for item in obj:
                res['totamount'] += float(item.amount)
                res['totorder'] += 1
                if item.status == '0':
                    res['amount'] += float(item.amount)
                    res['sorder'] += 1
        res['rate'] = round(res['sorder'] * 100.0 /
                            res['totorder'], 2) if res['totorder'] else 0.0
        return {"data": res}
예제 #3
0
    def finance_order_count(self, request, *args, **kwargs):

        query = OrderCount.objects.filter()

        if request.query_params_format.get("startdate") and request.query_params_format.get("enddate"):
            query = query.filter(
                today__lte = request.query_params_format.get("enddate")[:10],
                today__gte = request.query_params_format.get("startdate")[:10])

        if self.request.user.rolecode in ["1000", "1001"]:
            if request.query_params_format.get("userid"):
                query = query.filter(userid=request.query_params_format.get("userid"))
        elif self.request.user.rolecode == '2001':
            query = query.filter(userid=self.request.user.userid)
        elif request.user.rolecode == "3001":
            userlink = UserLink.objects.filter(userid_to=self.request.user.userid)
            if not userlink.exists():
                query = query.filter(userid=0)
            else:
                query = query.filter(userid__in=[item.userid for item in userlink])
            if request.query_params_format.get("userid"):
                query = query.filter(userid=request.query_params_format.get("userid"))
        else:
            raise PubErrorCustom("用户类型有误!")

        page=int(request.query_params_format.get('page'))
        page_size=int(request.query_params_format.get('page_size'))
        page_start = page_size * page - page_size
        page_end = page_size * page

        res = query.filter().order_by('-today')
        headers = {
            'Total': res.count(),
        }
        return {"data":OrderCountModelSerializer(res[page_start:page_end], many=True).data,"header":headers}
예제 #4
0
파일: api.py 프로젝트: ZrFinance/server
    def passwdupd(self, request, *args, **kwargs):
        if request.user.passwd != request.data.get('passwd'):
            raise PubErrorCustom("登录密码错误!")
        request.user.passwd = request.data.get('new_passwd')
        request.user.save()

        return None
예제 #5
0
    def cashoutlist1_query(self, request, *args, **kwargs):

        QuerySet = CashoutList.objects.all()

        if self.request.user.rolecode in ["1000", "1001"]:
            pass
        elif self.request.user.rolecode == '2001':
            QuerySet = QuerySet.filter(userid=self.request.user.userid)
        elif request.user.rolecode == "3001":
            userlink = UserLink.objects.filter(
                userid_to=self.request.user.userid)
            if not userlink.exists():
                QuerySet = CashoutList.objects.filter(userid=0)
            else:
                QuerySet = QuerySet.filter(
                    userid__in=[item.userid for item in userlink])
        else:
            raise PubErrorCustom("用户类型有误!")

        return {
            "data":
            CashoutListModelSerializer(
                QuerySet.filter(status__in=["1", "2"]).order_by('-updtime'),
                many=True).data
        }
예제 #6
0
    def list(self, request):
        is_type = self.request.query_params.get('is_type', '3')
        if str(is_type) != '1' and str(is_type) != '2':
            raise PubErrorCustom("is_type有误!")

        where_sql = str()
        params = list()
        code = self.request.query_params.get('code', None)
        supplier_id = self.request.query_params.get('supplier_id', None)
        start_dt = self.request.query_params.get('start_dt', None)
        end_dt = self.request.query_params.get('end_dt', None)
        order_code = self.request.query_params.get('order_code', None)
        limit = self.request.query_params.get('ym', None)
        start_limit = self.request.query_params.get('start_ym', None)
        end_limit = self.request.query_params.get('end_ym', None)
        if code:
            where_sql = "{} and LOCATE(%s,t2.code)>0".format(where_sql)
            params.append(code)
        if order_code:
            where_sql = "{} and LOCATE(%s,t1.use_code)>0".format(where_sql)
            params.append(order_code)
        if limit:
            limit = limit.replace('-', '')
            where_sql = "{} and t2.limit=%s".format(where_sql)
            params.append(limit)
        if supplier_id and str(supplier_id) != 'all' and str(
                supplier_id) != '0':
            where_sql = "{} and t2.supplier_id = %s".format(where_sql)
            params.append(supplier_id)
        if start_dt and end_dt and end_dt >= start_dt:
            where_sql = "{} and ( (substr(t1.use_code,1,2)='FA' and t1.refund_date >= %s  and t1.refund_date <= %s ) or  \
                           (substr(t1.use_code,1,2)!='FA' and t1.order_date >= %s  and t1.order_date <= %s )  )".format(
                where_sql)
            params.append(start_dt)
            params.append(end_dt)
            params.append(start_dt)
            params.append(end_dt)
        if start_limit and end_limit and end_limit >= start_limit:
            start_limit = start_limit.replace('-', '')
            end_limit = end_limit.replace('-', '')
            where_sql = "{} and t2.limit >=%s and t2.limit <=%s ".format(
                where_sql)
            params.append(start_limit)
            params.append(end_limit)

        if str(is_type) == '1':
            return {
                'data':
                NoFRceiptSerializer(noticket_query(where_sql=where_sql,
                                                   params=params),
                                    many=True).data
            }
        elif str(is_type) == '2':
            return {
                'data':
                YesFRceiptSerializer(yesticket_query(where_sql=where_sql,
                                                     params=params),
                                     many=True).data
            }
예제 #7
0
    def paypasslinktype_query(self, request, *args, **kwargs):

        print(self.request.query_params_format)
        query_format = str()
        query_params = list()
        if self.request.query_params_format.get("id"):
            query_format = query_format + " and t2.to_id=%s"
            query_params.append(self.request.query_params_format.get("id"))
        if self.request.query_params_format.get("type"):
            query_format = query_format + " and t2.type=%s"
            query_params.append(self.request.query_params_format.get("type"))

        if self.request.query_params_format.get("isAgent") == 1:
            if not self.request.query_params_format.get("userid"):
                raise PubErrorCustom("用户ID不能为空")
            query_format = query_format + " and t2.userid in (%s,0)"
            query_params.append(self.request.query_params_format.get("userid"))
        elif not self.request.query_params_format.get(
                "isAgent") and self.request.query_params_format.get("userid"):
            query_format = query_format + " and t2.userid ='%s'"
            query_params.append(self.request.query_params_format.get("userid"))
        else:
            query_format = query_format + " and t2.userid ='0'"

        paytype = PayType.objects.raw(
            """
            SELECT t1.*,t2.rate,t2.passid,t2.userid FROM paytype as t1 
            INNER JOIN paypasslinktype as t2 on t1.paytypeid = t2.paytypeid
            WHERE 1=1 %s order by t1.createtime
        """ % (query_format), query_params)

        data = PayTypeModelSerializer(paytype, many=True).data

        r_data = []

        if self.request.query_params_format.get("isAgent") == 1:
            for item in data:
                if len(r_data):
                    isFlag = False
                    for item_r_data in r_data:
                        if item_r_data['paytypeid'] == item[
                                'paytypeid'] and item_r_data['type'] == item[
                                    'type']:
                            if int(item_r_data['userid']) > 0:
                                isFlag = True
                                break
                            else:
                                item_r_data['rate'] = item['rate']
                                item_r_data['userid'] = item['userid']
                                item_r_data['createtime'] = item['createtime']
                                isFlag = True
                                break
                    if isFlag:
                        continue
                r_data.append(item)

            return {"data": r_data}
        else:
            return {"data": data}
예제 #8
0
    def qrcode_order_get(self,request, *args, **kwargs):

        try:
            order=Order.objects.get(ordercode=request.data_format.get("ordercode"))
        except Order.DoesNotExist:
            raise PubErrorCustom("订单号不存在!")

        return get_qrcode_path(order)
예제 #9
0
    def orderquery(self, request,*args,**kwargs):
        user = request.user
        trantype=self.request.query_params.get('trantype',None)
        status=self.request.query_params.get('status',None)

        if not trantype:
            raise PubErrorCustom("trantype是空!")

        print("trantype:",trantype,"userid:",user.userid)
        if str(trantype) == '0' or str(trantype) == '1':
            orderfilter = Order.objects.filter(userid=user.userid, trantype=trantype,status__in=[0,1],umark=0).order_by('-confirmtime','-matchtime','-createtime')
        elif str(trantype) == '2' :
            orderfilter = Order.objects.filter(userid=user.userid, status=2,umark=0).order_by('-confirmtime')
        else:
            raise PubErrorCustom("trantype非法!")

        return {'data':OrderSerializer(orderfilter,many=True).data}
예제 #10
0
 def run(self):
     isIpValid = False
     for item in self.data[0]['dfobj'].split(','):
         if str(item) == str(self.ip):
             isIpValid = True
             break
     if not isIpValid:
         raise PubErrorCustom("拒绝访问!")
예제 #11
0
    def call_run(self):
        self.check_sign()
        if not self.data.get("businessId") or self.data.get(
                "businessId") != self.businessId:
            raise PubErrorCustom("商户ID不存在!")
        if not self.data.get("amount"):
            raise PubErrorCustom("金额不能为空!")
        if not self.data.get("signType") or self.data.get("signType") != 'MD5':
            raise PubErrorCustom("签名类型不正确")
        if not self.data.get("outTradeNo"):
            raise PubErrorCustom("商户订单号为空!")
        if not self.data.get("orderState"):
            raise PubErrorCustom("订单状态为空!")

        if self.data.get("orderState") == 'success':
            try:
                order = Order.objects.select_for_update().get(
                    ordercode=self.data.get("outTradeNo"))
            except Order.DoesNotExist:
                raise PubErrorCustom("订单号不正确!")

            if order.status == '0':
                raise PubErrorCustom("订单已处理!")

            PayCallLastPass().run(order=order)
예제 #12
0
파일: utils.py 프로젝트: ZrFinance/product
def check_referee_name(kwargs):
    referee_name = kwargs.get('referee_name')
    try:
        user = Users.objects.get(
            Q(mobile=referee_name) | Q(username=referee_name))
        kwargs['referee_name'] = user.mobile
    except Users.DoesNotExist:
        raise PubErrorCustom("推荐人不存在!")
    return user
예제 #13
0
 def init_qrcode_obj(self, id=None):
     """
     初始化二维码结构
     :return:
     """
     if id:
         try:
             self.qrcode_obj = Qrcode.objects.select_for_update().get(id=id)
         except Qrcode.DoesNotExist:
             raise PubErrorCustom("无此二维码")
     else:
         self.qrcode_obj = Qrcode.objects.select_for_update().filter(
             name=self.name, status='0', type=self.type)
         if not self.qrcode_obj.exists():
             logger.error("无对应二维码, name{},type{}".format(
                 self.name, self.type))
             raise PubErrorCustom("无对应二维码")
         self.qrcode_obj = self.qrcode_obj[0]
예제 #14
0
    def login(self, request, *args, **kwargs):

        try:
            user = ServerAdminUser.objects.get(
                username=request.data.get('username'),
                passwd=request.data.get('passwd'))
        except ServerAdminUser.DoesNotExist:
            raise PubErrorCustom('登录账号或密码错误!')
        return {'data': {'userid': user.userid, 'username': user.username}}
예제 #15
0
 def update(self, request, *args, **kwargs):
     pk = kwargs.get('pk', None)
     img_url = self.request.data.get('img_url', None)
     if pk and img_url:
         isinstance = Statement.objects.filter(code=pk)
         if not isinstance:
             raise PubErrorCustom("未找到")
         isinstance.update(img_url=img_url)
     return []
예제 #16
0
파일: aes.py 프로젝트: gzshop/taskserver
def decrypt(word, key='LXJMTZCVFKQZNQ2J'):
    try:
        word = word.encode('utf-8')
        crypto = AESCrypto(key, key)
        data = base64.b64decode(word)
        return crypto.decrypt(data)
    except Exception as e:
        print(str(e))
        raise PubErrorCustom("请求格式有误!")
예제 #17
0
    def check_sign(self):

        parastring = (self.data['merchant_id'] + self.data['orderid'] +
                      self.data['money'] + self.secret).encode("gb2312")

        sign = hashlib.md5(parastring).hexdigest()

        if self.data['sign'] != sign:
            raise PubErrorCustom("签名不正确")
예제 #18
0
    def work_handler_updbal(self,ordercode=None,memo='调账'):
        """
        手工修改余额,传入摘要
        :return:
        """

        if not ordercode :
            raise PubErrorCustom("订单号不能为空")

        self.init_order_obj(ordercode=ordercode)
        self.order_obj.confirm_amount = self.order_obj.amount
        self.amount = self.order_obj.amount

        # 商户技术费
        stand_rate = get_Rate(self.order_obj.userid, paytypeid=self.order_obj.paytype)
        self.order_obj.tech_cost = float(self.order_obj.confirm_amount) * float(stand_rate)
        upd_bal(userid=self.order_obj.userid,
                bal=float(self.order_obj.confirm_amount) - float(self.order_obj.tech_cost), up_bal=self.amount,
                memo=memo, ordercode=self.order_obj.ordercode)

        # AccountHandler(isPay=True,userid=self.order_obj.userid)

        # 代理费用
        agent_free = 0.0
        for item in UserLink.objects.filter(userid=self.order_obj.userid).order_by('-level'):
            rate = get_Rate(item.userid_to, paytypeid=self.order_obj.paytype)
            amount = float(self.order_obj.confirm_amount) * float(stand_rate - rate) if float(
                stand_rate - rate) > 0.0 else 0.0
            if amount > 0.0:
                upd_bal(userid=item.userid_to, bal=amount, up_bal=self.amount, memo=memo,
                        ordercode=self.order_obj.ordercode)

            stand_rate = rate
            agent_free += amount
        self.order_obj.agentfee = agent_free

        if self.order_obj.paypass in (0, 1):
            self.init_qrcode_obj(self.order_obj.qr_id)
            # 码商费用以及码商流水
            rate = get_Rate(self.qrcode_obj.userid, paytypeid=self.order_obj.paytype, type="2")
            self.order_obj.codefee = float(self.order_obj.confirm_amount) * float(rate)
            upd_bal(userid=self.qrcode_obj.userid, bal=self.order_obj.codefee, up_bal=self.amount, memo=memo,
                    ordercode=self.order_obj.ordercode,flag=True,upd_business_agent_tot=True)
        else:
            # 上游聚到服务费
            paypass = PayPass.objects.get(paypassid=self.order_obj.paypass)
            rate = get_Rate(paypass.paypassid, paytypeid=self.order_obj.paytype, type="0")
            self.order_obj.codefee = float(self.order_obj.confirm_amount) * float(rate)
            paypass.bal = float(paypass.bal) + float(self.order_obj.codefee)


        # 咱们自己的收入
        self.order_obj.myfee = float(self.order_obj.tech_cost) - float(self.order_obj.codefee) - float(agent_free)
        if self.order_obj.userid not in [3,20,5]:
            upd_bal(userid=1, bal=self.order_obj.myfee, up_bal=self.amount, memo=memo, ordercode=self.order_obj.ordercode,upd_business_agent_tot=True)

        self.order_obj.save()
예제 #19
0
 def helper_stop(self):
     res=send_request(url="http://localhost:5000/helper_wechat_stop",method='POST',data={
         "runname":self.runname,
         "basepath":self.basepath,
         "path":self.path,
         "md5name":self.md5name
     })
     if not res[0]:
         raise PubErrorCustom("连接登录服务器有误,请联系客服!")
예제 #20
0
    def call_run(self):
        self.check_sign()
        if not self.data.get("money"):
            raise PubErrorCustom("金额不能为空!")
        if not self.data.get("orderid"):
            raise PubErrorCustom("商户订单号为空!")

        if self.data.get("status") == '1':
            try:
                order = Order.objects.select_for_update().get(
                    ordercode=self.data.get("orderid"))
            except Order.DoesNotExist:
                raise PubErrorCustom("订单号不正确!")

            if order.status == '0':
                raise PubErrorCustom("订单已处理!")

            PayCallLastPass().run(order=order)
예제 #21
0
    def call_run(self):
        self.check_sign()
        if not self.data.get("total"):
            raise PubErrorCustom("金额不能为空!")
        if not self.data.get("api_order_sn"):
            raise PubErrorCustom("商户订单号为空!")

        if self.data.get("callbacks") == 'CODE_SUCCESS':
            try:
                order = Order.objects.select_for_update().get(
                    ordercode=self.data.get("api_order_sn"))
            except Order.DoesNotExist:
                raise PubErrorCustom("订单号不正确!")

            if order.status == '0':
                raise PubErrorCustom("订单已处理!")

            PayCallLastPass().run(order=order)
예제 #22
0
    def call_run(self):
        if not self.data.get("total_fee"):
            raise PubErrorCustom("金额不能为空!")
        if not self.data.get("out_order_no"):
            raise PubErrorCustom("商户订单号为空!")
        self.check_sign()

        if self.data.get("trade_status") == 'TRADE_SUCCESS':
            try:
                order = Order.objects.select_for_update().get(
                    ordercode=self.data.get("out_order_no"))
            except Order.DoesNotExist:
                raise PubErrorCustom("订单号不正确!")

            if order.status == '0':
                raise PubErrorCustom("订单已处理!")

            PayCallLastPass().run(order=order)
예제 #23
0
    def check_request_param(self):

        if not self.request_param.get("down_ordercode"):
            raise PubErrorCustom("订单号不存在!")

        try:
            amount = float(self.request_param.get('amount'))
            if amount <= 0.0:
                raise PubErrorCustom("订单金额不能为0")
        except:
            raise PubErrorCustom("订单金额格式不正确!")

        # try:
        #     timestamp_toDatetime(self.request_param.get('createtime'))
        # except:
        self.request_param['createtime'] = datetime_toTimestamp()

        if not self.request_param.get('client_ip'):
            raise PubErrorCustom("客户端IP不能为空!")

        if not self.request_param.get("notifyurl"):
            raise PubErrorCustom("回调地址不能为空!")

        if not self.request_param.get("ismobile"):
            raise PubErrorCustom("是否手机标志不能为空!")

        if Order.objects.filter(userid=self.user.userid, down_ordercode=self.request_param.get('down_ordercode')).exists():
            raise PubErrorCustom("该订单已生成,请勿重复生成订单!")

        paypass = self.get_paypasslinktype()

        if not self.request_param.get('paytypeid'):
            if not len(paypass):
                raise PubErrorCustom("通道暂未开放!")
            if len(paypass) > 1:
                raise PubErrorCustom("通道暂未开放!")
            self.request_param['paytypeid'] = paypass[0].paytypeid
            self.paypasslinktype = paypass[0]
        else:
            for item in paypass:
                if str(item.paytypeid) == str(self.request_param.get('paytypeid')):
                    self.paypasslinktype = item
            if not self.paypasslinktype:
                raise PubErrorCustom("通道传入有误!")
예제 #24
0
    def paypass_del(self,request, *args, **kwargs):

        try:
            pay=PayPass.objects.get(paypassid = request.data_format.get("paypassid"))
            pay.status = 2
            pay.save()
        except PayPass.DoesNotExist:
            raise PubErrorCustom("该支付渠道不存在!")

        return None
예제 #25
0
    def OrderQuery(self):

        if not self.data.get('day'):
            raise PubErrorCustom("查询日期不能为空")
        if len(self.data.get('day')) != 10:
            raise PubErrorCustom("日期格式不正确")

        start_day = self.data.get('day') + ' 00:00:01'
        end_day = self.data.get('day') + ' 23:59:59'

        start_day = self.ut.string_to_timestamp(string_s=start_day)
        end_day = self.ut.string_to_timestamp(string_s=end_day)

        return {
            "data":
            OrderModelSerializerToJd(Order.objects.filter(
                isjd='0', createtime__lte=end_day, createtime__gte=start_day),
                                     many=True).data
        }
예제 #26
0
    def order_status_upd(self, request, *args, **kwargs):

        if self.request.data_format.get("orders") and len(
                self.request.data_format.get("orders")) > 1:
            raise PubErrorCustom("手工上分只允许单笔操作!")

        if len(self.request.data_format.get("orders")):
            try:
                order = Order.objects.select_for_update().get(
                    ordercode=self.request.data_format.get("orders")[0])
            except Order.DoesNotExist:
                raise PubErrorCustom("订单号不存在!")

            if order.status == '0':
                raise PubErrorCustom("请勿重复补单!")
        else:
            raise PubErrorCustom("订单号不能为空")

        PayCallLastPass().handwork_run(order=order)
예제 #27
0
def matchexchange(res):
    match1 = res['match1']
    match2 = res['match2']
    tgbz_obj = dict()
    jsbz_obj = dict()
    tgbz_split = dict()
    jsbz_split = dict()
    for item in match1:
        try:
            order = Order.objects.get(ordercode=item.ordercode)
        except Order.DoesNotExist:
            raise PubErrorCustom("订单号[%d]不存在!" % (item.ordercode))

        tgbz_obj[item.ordercode] = {
            'amount': item.amount,
            'obj': item,
            'install_obj': order
        }
        tgbz_split[item.ordercode] = {
            'userid': item.userid,
            'username': item.username,
            'orders': []
        }

    for item in match2:
        try:
            order = Order.objects.get(ordercode=item.ordercode)
        except Order.DoesNotExist:
            raise PubErrorCustom("订单号[%d]不存在!" % (item.ordercode))

        jsbz_obj[item.ordercode] = {
            'amount': item.amount,
            'obj': item,
            'install_obj': order
        }
        jsbz_split[item.ordercode] = {
            'userid': item.userid,
            'username': item.username,
            'orders': []
        }

    return tgbz_obj, jsbz_obj, tgbz_split, jsbz_split
예제 #28
0
파일: utils.py 프로젝트: ZrFinance/product
def orderrclimit(user,amount):

    if user.rcqlimit > 0 :
        if amount < user.rcqlimit:
            raise PubErrorCustom("不能低于上次认筹金额%d" % (user.rcqlimit))
    else:
        order=Order.objects.filter(userid=user.userid,umark=0,trantype=0)

        obj=list()
        diffamount=list()
        for item in order:
            obj.append({'ordercode':item.ordercode,'amount':item.amount,'createtime':item.createtime})
        b = list()
        if len(obj):
            for item in obj:
                if item['ordercode'] in b:
                    continue
                t=list()
                for t_item in Tranlist.objects.filter(trantype=24,ordercode=item['ordercode']):
                    for j in t_item.tranname.split('[')[1].replace(']','')[:-1].split(','):
                        t.append(int(j))
                for j in list(set(t)):
                    if j!=item['ordercode']:
                        try:
                            order = Order.objects.get(ordercode=j, umark=0)
                            item['amount']+=order.amount
                            b.append(j)
                        except Order.DoesNotExist:
                            pass

        for item in obj:
            if item['ordercode'] in b:
                continue
            t = timestamp_toDatetime(item['createtime']).strftime("%Y-%m-%d")
            if t < "2018-11-26" and item['amount']<5000 and item['amount']>2000:
                item['amount']=2000
            diffamount.append(item['amount'])

        if len(diffamount):
            maxamount=max(diffamount)
            if amount<maxamount:
                raise PubErrorCustom("不能低于上次认筹金额%d"%(maxamount))
예제 #29
0
파일: api1.py 프로젝트: robo2025/tc_finance
 def destroy(self, request, *args, **kwargs):
     codes = request.data.get('codes', [])
     if not len(codes):
         raise PubErrorCustom("请选择要删除的记录!")
     objects = Statement.objects.filter(code__in=codes)
     if not objects.exists():
         raise PubErrorCustom("无此账单!")
     else:
         for obj in objects:
             if obj.status in [3, 4]:
                 raise PubErrorCustom("请勿删除已发布的账单!")
             if obj.status == 2:
                 obj.status = 1
                 obj.save()
                 StatementDetail.objects.filter(code=obj.code).update(
                     status=1)
             else:
                 obj.delete()
                 StatementDetail.objects.filter(code=obj.code).delete()
     return []
예제 #30
0
    def call_run(self):
        self.check_sign()
        if not self.data.get("amount"):
            raise PubErrorCustom("金额不能为空!")
        if not self.data.get("mchOrderNo"):
            raise PubErrorCustom("商户订单号为空!")

        self.data["amount"] = float(self.data.get("amount")) / 100.0

        if str(self.data.get("status")) == '2':
            try:
                order = Order.objects.select_for_update().get(
                    ordercode=self.data.get("mchOrderNo"))
            except Order.DoesNotExist:
                raise PubErrorCustom("订单号不正确!")

            if order.status == '0':
                raise PubErrorCustom("订单已处理!")

            PayCallLastPass().run(order=order)