Пример #1
0
def listusertransactions(request):
    try:
        if not request.user.is_authenticated():
            return render(request, 'login.html', {'next': '/transhistory/'})
        username = request.user.username
        userId = request.user.id
        trans = ordermanager.get_user_transactions(userId, 'AXFund')
        pending_trans = []
        transactions = []
        for tran in trans:
            if tran.status == 'PENDING':
                pending_trans.append(create_trans_list_item(tran, 'AXFund'))
            else:
                transactions.append(create_trans_list_item(tran, 'AXFund'))
        accountinfo = useraccountinfomanager.get_user_accountInfo(
            request.user, 'AXFund', True)
        return render(
            request, 'html/translist.html', {
                'pending_trans': pending_trans,
                'transactions': transactions,
                'useraccountInfo': accountinfo
            })

    except Exception as e:
        error_msg = '出售美基金遇到错误: {0}'.format(sys.exc_info()[0])
        logger.exception(error_msg)
        return errorpage.show_error(request, ERR_CRITICAL_IRRECOVERABLE,
                                    '系统遇到问题,请稍后再试。。。{0}'.format(error_msg))
Пример #2
0
def show_purchase_input(request):
    try:
        if not request.user.is_authenticated():
           return render(request, 'login.html', { 'next' : '/purchase/'})
        username = request.user.username
        userid = request.user.id
        useraccountInfo = useraccountinfomanager.get_user_accountInfo(request.user,'AXFund')
        if len(useraccountInfo.paymentmethods) == 0:
            messages.error(request, '请先注册支付方式再购买')
            return redirect('accountinfo')
        if len(useraccountInfo.paymentmethods[0].account_at_provider) == 0:
            messages.error(request, '请先注册支付账号再购买')
            return redirect('accountinfo')
        owner_user_id = request.POST["owner_user_id"]
        reference_order_id = request.POST["reference_order_id"]
        owner_login = request.POST["owner_login"]
        unit_price = float(request.POST["locked_in_unit_price"])
        total_units = 0
        if 'quantity' in request.POST:
           total_units = float(request.POST['quantity'])
        available_units = float(request.POST["available_units_for_purchase"])
        owner_payment_methods = ordermanager.get_user_payment_methods(owner_user_id)
        #for method in owner_payment_methods:
        #    print ("provider %s has image %s" % (method.provider.name, method.provider_qrcode_image))
        buyorder = OrderItem(
           '',
           userid,
           username,
           unit_price,'CYN',
           total_units, 0,
           0.0, 'AXFund',
           '','','BUY')
        return render(request, 'html/input_purchase.html',
               {'username': username,
                'buyorder': buyorder,
                'owner_user_id': owner_user_id,
                'reference_order_id': reference_order_id,
                'available_units_for_purchase': available_units,
                'owner_payment_methods': owner_payment_methods,
                'buyer_payment_methods': useraccountInfo.paymentmethods }
               )
    except Exception as e:
       error_msg = '显示买单出现错误: {0}'.format(sys.exc_info()[0])
       logger.exception(e)
       return errorpage.show_error(request, ERR_CRITICAL_IRRECOVERABLE,
              '系统遇到问题,请稍后再试。。。{0}'.format(error_msg))
Пример #3
0
def accountinfo(request):
    try:
        if not request.user.is_authenticated():
            return render(request, 'login.html',
                          {'next': '/accounts/accountinfo/'})
        useraccountInfo = useraccountinfomanager.get_user_accountInfo(
            request.user, 'AXFund')
        request.session[REQ_KEY_USERACCOUNTINFO] = useraccountInfo.tojson()
        return render(
            request, 'html/myaccount.html', {
                'useraccountInfo': useraccountInfo,
                REQ_KEY_USERNAME: request.user.username
            })
    except Exception as e:
        error_msg = '用户主页显示遇到错误: {0}'.format(sys.exc_info()[0])
        logger.exception(error_msg)
        return errorpage.show_error(request, ERR_CRITICAL_IRRECOVERABLE,
                                    '系统遇到问题,请稍后再试。。。{0}'.format(error_msg))
Пример #4
0
def show_active_sell_orders(request):
    try:
       logger.debug("get show show_active_sell_orders request")

       if not request.user.is_authenticated():
           return render(request, 'login.html', { 'next' : '/purchase/'})
       username = request.user.username
       status = None
       sellorders = ordermanager.get_all_open_seller_order_exclude_user(request.user.id)
       accountinfo = useraccountinfomanager.get_user_accountInfo(request.user, 'AXFund')
       return render(request, 'html/purchase.html', {'sellorders': sellorders,
                REQ_KEY_USERNAME: username,
                'useraccountInfo': accountinfo,
                'previous_call_status' : status})

    except Exception as e:
       error_msg = '显示现有卖单出现错误: {0}'.format(sys.exc_info()[0])
       logger.exception(e)
       return errorpage.show_error(request, ERR_CRITICAL_IRRECOVERABLE,
              '系统遇到问题,请稍后再试。。。{0}'.format(error_msg))
Пример #5
0
def sell_axfund(request):
    try:
       if not request.user.is_authenticated():
          return render(request, 'login.html', { 'next' : '/mysellorder/'})
       accountinfo = useraccountinfomanager.get_user_accountInfo(request.user, 'AXFund')
       if len(accountinfo.paymentmethods) == 0:
           messages.error(request, '请先注册支付方式再挂卖单')
           return redirect('accountinfo')
       if len(accountinfo.paymentmethods[0].account_at_provider) == 0:
           messages.error(request, '请先注册支付账号再挂卖单')
           return redirect('accountinfo')
       if request.method == 'POST':
          request_source = request.POST['request_source']
          # this indicate that the request come from submit
          # order instead of refresh a response page of previous
          # order
          if len(request_source) > 0:
              order_command = read_order_input(request)
              if order_command.total_units - accountinfo.available_balance < 0:
                  ordermanager.create_sell_order(order_command, request.user.username)
                  messages.success(request,'您的卖单已经成功创建')
              else:
                  messages.error(request, '卖单数量不可以高于可用余额')
       sellorders = ordermanager.get_sell_transactions_by_user(request.user.id)
       if request.method == 'POST':
           return redirect('sellorder')
       else:
           return render(request, 'html/mysellorder.html',
               {'sellorders': sellorders,
                'useraccountInfo': accountinfo})

    except Exception as e:
       error_msg = '出售美基金遇到错误: {0}'.format(sys.exc_info()[0])
       logger.exception(error_msg)
       return errorpage.show_error(request, ERR_CRITICAL_IRRECOVERABLE,
              '系统遇到问题,请稍后再试。。。{0}'.format(error_msg))
Пример #6
0
def create_purchase_order(request):
    try:
        logger.debug('create_purchase_order()...')
        if not request.user.is_authenticated():
            logger.error("user session is not valid.  Go to logout")
            return render(request, 'login.html', { 'next': '/purchase/'})
        username = request.user.username
        userid = request.user.id
        logger.info("Begin process user input for creating purchase order")
        if request.method == 'POST':
            reference_order_id = request.POST['reference_order_id']
            owner_user_id = int(request.POST["owner_user_id"])
            quantity = float(request.POST['quantity'])
            available_units = float(request.POST['available_units'])
            unit_price = float(request.POST['unit_price'])
            seller_payment_provider = request.POST['seller_payment_provider']
            crypto= request.POST['crypto']
            total_amount = float(request.POST['total_amount'])
            buyorder = OrderItem('', userid, username, unit_price, 'CNY', quantity,
                0, total_amount, crypto, '', '','BUY')
            buyorderid = None
            try:
                buyorderid = ordermanager.create_purchase_order(buyorder,
                     reference_order_id,
                     seller_payment_provider, username)
            except ValueError as ve:
                if ve.args[0] == 'SELLORDER_NOT_OPEN':
                    messages.error(request, '卖单暂时被锁定,请稍后再试')
                elif ve.args[0] == 'BUY_EXCEED_AVAILABLE_UNITS':
                    messages.error(request,'购买数量超过卖单余额,请按撤销键然后再试')
                else:
                    raise
                owner_payment_methods = ordermanager.get_user_payment_methods(owner_user_id)
                useraccountInfo = useraccountinfomanager.get_user_accountInfo(request.user,'AXFund')
                redirect('purchase')
            if buyorderid is None:
               raise ValueError('Failed to get purchase order id')

            returnstatus = None

            # read the sitsettings
            sitesettings = context_processor.settings(request)['settings']
            json_response = send_payment_request(sitesettings, seller_payment_provider,
                buyorder.order_id, total_amount)
            if json_response is not None and json_response['return_code'] == 'SUCCESS':
                if ordermanager.post_open_payment_order(
                                buyorderid, 'heepay',
                                json_response['hy_bill_no'],
                                json_response['hy_url'],
                                username):

                    qrcode_file = generate_payment_qrcode('heepay', json_response, settings.MEDIA_ROOT)
                    return render(request, 'html/purchase_heepay_qrcode.html',
                         { 'total_units' : quantity, 'unit_price': unit_price,
                           'total_amount': total_amount,
                           'heepay_qrcode_file' : qrcode_file })
            owner_payment_methods = ordermanager.get_user_payment_methods(owner_user_id)
            useraccountInfo = useraccountinfomanager.get_user_accountInfo(request.user,'AXFund')
            # sample reply error : {"return_code":"FAIL","return_msg":"无效的total_fee"}
            messages.error(request, '向汇钱包下单申请失败:{0}'.format(json_response['return_msg'].encode("utf-8")))
            redirect('purchase')

    except Exception as e:
        error_msg = '创建买单遇到错误: {0}'.format(sys.exc_info()[0])
        logger.exception(error_msg)
        return errorpage.show_error(request, ERR_CRITICAL_IRRECOVERABLE,
              '系统遇到问题,请稍后再试。。。{0}'.format(error_msg))