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))
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))
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))
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))
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))
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))