Example #1
0
def payment_qrcode(request):
    try:
        weixin, weixin_payment_image, weixin_shop_assistant_image = userpaymentmethodmanager.load_weixin_info(
            request.user)
        if request.method == 'POST':
            form = UserPaymentMethodForm(request.POST,
                                         request.FILES,
                                         instance=weixin_payment_image)
            if form.is_valid():
                form.save()
                weixin, weixin_payment_image, weixin_shop_assistant_image = userpaymentmethodmanager.load_weixin_info(
                    request.user)
            else:
                messages.error(request, "输入有错误,请检查")

        return render(
            request, 'trading/paymentmethod/weixin.html', {
                'user':
                request.user,
                'weixin':
                weixin,
                'payment_provider':
                weixin.provider.code
                if weixin is not None else PAYMENTMETHOD_WEIXIN,
                'weixin_payment_image':
                weixin_payment_image,
                'weixin_shop_assistant_image':
                weixin_shop_assistant_image
            })
    except Exception as e:
        error_msg = 'sell_axfund hit exception'
        logger.exception(error_msg)
        return errorpageview.show_error(request, ERR_CRITICAL_IRRECOVERABLE,
                                        '系统遇到问题,请稍后再试。。。{0}'.format(error_msg))
Example #2
0
def accountinfo(request):
    try:
        useraccountInfo = useraccountinfomanager.get_user_accountInfo(
            request.user, 'AXFund')
        weixin, weixin_payment_image, weixin_shop_assistant_image = userpaymentmethodmanager.load_weixin_info(
            request.user)
        request.session[REQ_KEY_USERACCOUNTINFO] = useraccountInfo.tojson()
        return render(
            request, 'trading/myaccount.html', {
                'useraccountInfo': useraccountInfo,
                REQ_KEY_USERNAME: request.user.username,
                'weixin': weixin,
                'weixin_payment_image': weixin_payment_image,
                'weixin_shop_assistant_image': weixin_shop_assistant_image
            })
    except Exception as e:
        error_msg = '用户主页显示遇到错误: {0}'.format(sys.exc_info()[0])
        logger.exception(error_msg)
        return errorpageview.show_error(request, ERR_CRITICAL_IRRECOVERABLE,
                                        '系统遇到问题,请稍后再试。。。{0}'.format(error_msg))
Example #3
0
def show_payment_qrcode(request):
    if request.method != 'GET':
        return HttpResponseNotAllowed(['GET'])

    buyorder_id = request.GET['key']
    if not buyorder_id:
        return HttpResponseBadRequest('请求没有购买单据')

    try:
        order = Order.objects.get(order_id=buyorder_id)
        payment_method = order.reference_order.seller_payment_method if order.reference_order.seller_payment_method else userpaymentmethodmanager.load_weixin_info(
            order.reference_order.user.id)
        if not payment_method:
            logger.error(
                'show_payment_qrcode(): Cannot find valid seller payment method for sell order {0} referenced by purchase order {1}'
                .format(order.reference_order.order_id, order.order_id))
            return HttpResponseServerError('对应卖单没有付款方式')

        if not payment_method.provider_qrcode_image:
            logger.error(
                'show_payment_qrcode(): sell order {0} referenced by purchase order {1} does not have payment qrcode'
                .format(order.reference_order.order_id, order.order_id))
            return HttpResponseServerError('对应卖单没有付款方式的二维码')

        return render(
            request, 'trading/paymentmethodqrcode.html', {
                'payment_method':
                payment_method_to_Chinese(payment_method.provider.code),
                'total_amount':
                order.total_amount,
                'unit_price_currency':
                order.reference_order.unit_price_currency,
                'order_units':
                order.units,
                'qrcode_url':
                payment_method.provider_qrcode_image.url
            })
    except Order.DoesNotExist:
        logger.error(
            "show_payment_qrcode(): Can not find related purchase order {0}".
            format(buyorder_id))
        return HttpResponseNotFound('没有找到购买单据')
Example #4
0
def get_payment_qrcode_image(request):
    if request.method == 'POST':
        logger.error(
            "get_payment_qrcode_image(): encounter illegal POST request")
        return HttpResponseNotAllowed("读取付款二维码需要用GET请求")

    buyorder_id = out_trade_no = None
    try:
        payment_methpd = None
        order = NotImplementedError
        if 'key' in request.GET:
            buyorder_id = request.GET['key']
            order = Order.objects.get(order_id=buyorder_id)
        elif 'out_trade_no' in request.GET:
            out_trade_no = request.GET['out_trade_no']
            api_tran = APIUserTransaction.objects.get(
                api_out_trade_no=out_trade_no)
            order = api_tran.reference_order
            if not order:
                return HttpResponseBadRequest('没有找到相关out_trade_no的购买单据')
        else:
            return HttpResponseBadRequest('请求没有out_trade_no或key')

        if order.order_type != 'BUY':
            logger.error(
                'get_payment_qrcode_image(): The order found by {0}:{1} is not a BUY order'
                .format('buy order id' if buyorder_id else 'out_trade_no',
                        buyorder_id if buyorder_id else out_trade_no))
            return HttpResponseBadRequest('请求的相关单据不是买单')

        payment_method = order.reference_order.seller_payment_method if order.reference_order.seller_payment_method else userpaymentmethodmanager.load_weixin_info(
            order.reference_order.user.id)
        if not payment_method:
            logger.error(
                'get_payment_qrcode_image(): Cannot find valid seller payment method for sell order {0} referenced by purchase order {1}'
                .format(order.reference_order.order_id, order.order_id))
            return HttpResponseServerError('对应卖单没有付款方式')
        if not payment_method.provider_qrcode_image:
            logger.error(
                'get_payment_qrcode_image(): sell order {0} referenced by purchase order {1} does not have payment qrcode'
                .format(order.reference_order.order_id, order.order_id))
            return HttpResponseServerError('对应卖单没有付款方式的二维码')

        qrcode_file = os.path.join("upload", "paymentmethod",
                                   payment_method.provider.code,
                                   payment_method.provider_qrcode_image.path)
        logger.debug(
            "get_payment_qrcode_image: qrcode is at {0}".format(qrcode_file))
        if not os.path.exists(qrcode_file):
            logger.error(
                "get_payment_qrcode_image: qrcode image at {0} does not exist".
                format(qrcode_file))
            return HttpResponseNotFound("对应二维码图像找不到")

        name, extension = os.path.splitext(qrcode_file)
        content_types = {
            'png': "image/pmg",
            'jpg': "image/jpeg",
            'jpeg': "image/jpeg",
            'gif': "image/gif"
        }

        img_content_type = content_types.get(extension, "image/png")
        logger.debug(
            "get_payment_qrcode_image: image content type is {0}".format(
                img_content_type))
        image_data = open(qrcode_file, "rb").read()
        return HttpResponse(image_data, content_type=img_content_type)
    except Order.DoesNotExist:
        logger.error(
            "get_payment_qrcode_image(): Can not find related purchase order {0}"
            .format(buyorder_id))
        return HttpResponseNotFound('没有找到购买单据{0}'.format(buyorder_id))
    except APIUserTransaction.DoesNotExist:
        logger.error(
            "get_payment_qrcode_image(): Can not find api user transaction based on out_trade_no {0}"
            .format(out_trade_no))
        return HttpResponseNotFound(
            '没有找到out_trade_no相关的充值请求'.format(buyorder_id))
    except:
        error_msg = 'get_payment_qrcode_image()遇到错误: {0}'.format(
            sys.exc_info()[0])
        logger.exception(error_msg)
        return HttpResponseServerError(content='请求遇到错误')