Beispiel #1
0
    def agree_refund(cls, user_id, order_id):

        balance = OrderService.get_balance(user_id)
        refund_order = cls._get_refund_order(order_id)
        if balance < refund_order.price:
            return 1, "您余额不足退款给买家", {}
        if not refund_order:
            return 1, "没有这个退款单", {}
        if refund_order.refund_state not in [OrderState.APPLY_REFUNDING]:
            return 1, "正在处理中", {}
        # need 统一错的情况
        # 。。。
        from .wechartpay import WechatRefund
        wp = WechatRefund()
        result_json = wp.apply_refund(refund_order.out_trade_no,
                                      refund_order.out_refund_no,
                                      refund_order.price)
        print(result_json)
        logger.info(result_json)
        if result_json.get("result_code", "") == "SUCCESS":
            cls.save_refund_order_scuess(result_json,
                                         refund_order.out_refund_no)
            # freeze money
            OrderService.freeze(user_id, refund_order.price,
                                refund_order.out_refund_no)
            OrderService.update_order_status(order_id, OrderState.REFUNDING)
        else:
            return 1, result_json.get("err_code_des", ""), {}
        return 0, "scuessfull", {"order_id": order_id}
Beispiel #2
0
def get_customer_info_index(request, **kwargs):
    """
    个人中心--首页
    :param request:
    :return:
    """
    user_id = kwargs.get("userid")
    kwargs = {
        "user_id": user_id,
        "other_query": ~Q(seller_id=user_id),
    }
    logger.info("customer index, kwargs: %s" % kwargs)
    _, fans = CustomerService.get_my_fans_by_user_id(user_id)
    _, follows = CustomerService.get_my_follows(**kwargs)
    spreaders = JieLongSpreadUserRelation.objects.filter(
        status=1, invite_sponsor_id=user_id).count()
    balance = OrderService.get_balance(user_id)
    _, apply_refunding = OrderService.refund_order_list(
        refund_state="apply_refunding", seller_id=user_id)

    result = {
        "meta": {
            "msg": "success",
            "code": 0
        },
        "results": {
            "follow": follows,
            "fans": fans,
            "spreader": spreaders,
            "balance": "%s" % balance,
            "apply_refunding": apply_refunding,
        }
    }
    return JsonResponse(result, encoder=DjangoJSONEncoder)
Beispiel #3
0
def apply_withdraw_cash2(request, **kwargs):
    userid = kwargs.get("userid", 5)
    save_dict = json.loads(request.body)
    money = save_dict.get("money")
    from order.models import WithdrawCash
    user_name = save_dict.get("user_name")
    if not user_name:
        result = {
            "meta": {
                "msg": u"用户实际名不能为空",
                "code": 1
            },
            "results": [],
        }
        return JsonResponse(result, encoder=DjangoJSONEncoder)
    if not money:
        result = {
            "meta": {
                "msg": u"金额不能为空",
                "code": 1
            },
            "results": [],
        }
        return JsonResponse(result, encoder=DjangoJSONEncoder)
    from decimal import Decimal
    money = Decimal(money)
    if money < Decimal("1"):
        result = {
            "meta": {
                "msg": u"申请金额必须大于等于1",
                "code": 1
            },
            "results": [],
        }
        return JsonResponse(result, encoder=DjangoJSONEncoder)

    withdraw_cashs = WithdrawCash.objects.filter(user_id=userid).filter(status=0)
    if withdraw_cashs:
        result = {
            "meta": {
                "msg": u"您有一笔提现正在处理中,不能再次发起提现",
                "code": 1
            },
            "results": [],
        }
        return JsonResponse(result, encoder=DjangoJSONEncoder)
    statements = OrderService.get_balance(userid)
    if not statements:
        result = {
            "meta": {
                "msg": u"提现失败,稍后重试或联系客服",
                "code": 1
            },
            "results": [],
        }
        return JsonResponse(result, encoder=DjangoJSONEncoder)
    if statements:
        balancea = statements
        from passport.models import PassportUser
        user = PassportUser.objects.get(id=userid)
        we_user = user.wechatuser
        import time
        out_trade_no = str(int(time.time() * 1000))

        if balancea < money:
            result = {
                "meta": {
                    "msg": u"提现失败,稍后重试或联系客服",
                    "code": 1
                },
                "results": [],
            }
            return JsonResponse(result, encoder=DjangoJSONEncoder)
        cash_dict = {
            "user_id": userid,
            "user_name": user_name,
            "money": money,
            "open_id": we_user.openid,
            "order_num": out_trade_no,
        }
        # is_send
        # ready_send = WithdrawCash.objects.filter(user_id=userid, status=2).order_by("-update_time")[:1]
        # if ready_send:
        #     result_model = ready_send[0]
        #     out_trade_no = result_model.order_num
        # else:
        #     cash_dict["order_num"] = out_trade_no
        result_model = WithdrawCash.objects.create(**cash_dict)
        from payment.wechartpay import WechartWithdrawCash
        wechart_cash = WechartWithdrawCash()
        wechart_cash.out_trade_no = out_trade_no
        result_json = wechart_cash.withdraw_cash(we_user.openid, money, user_name)
        if result_json.get("result_code", "") == "SUCCESS":
            result_model.payment_no = result_json.get("payment_no", "")
            result_model.status = 1
            result_model.save()
            balance = OrderService.cash_statement(userid, money)
            result = {
                "meta": {
                    "msg": "",
                    "code": 0
                },
                "results": {"balance": balance}
            }
        else:
            # result_model.payment_no = result_json.get("payment_no", "")
            result_model.status = 2
            result_model.remark = result_json.get("err_code_des", "")
            result_model.save()
            result = {
                "meta": {
                    "msg": wechart_cash.check_withdraw_cash_err_des(result_json.get("err_code_des", "")),
                    "code": 40002
                },
                "results": {}
            }
            logger.info("apply_withdraw_cash2 result %s;wx_result_json:%s" % (result,result_json))

    return JsonResponse(result, encoder=DjangoJSONEncoder)