示例#1
0
def transfer_cancel(payment_id):
    payment = get_user_payment_or_abort(
        payment_id,
        'banktransfer',
        valid_states=['new', 'inprogress', 'cancelled'],
    )

    if payment.state == 'cancelled':
        logger.info('Payment %s has already been cancelled', payment.id)
        flash('Payment has already been cancelled')
        return redirect(url_for('tickets'))

    form = TransferCancelForm(request.form)
    if form.validate_on_submit():
        if form.yes.data:
            logger.info('Cancelling bank transfer %s', payment.id)
            for t in payment.tickets.all():
                t.expires = datetime.utcnow()
            payment.state = 'cancelled'
            db.session.commit()

            logging.info('Payment %s cancelled', payment.id)
            flash('Payment cancelled')

        return redirect(url_for('tickets'))

    return render_template('transfer-cancel.html', payment=payment, form=form)
示例#2
0
def stripe_capture(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'stripe',
        valid_states=['new'],
    )

    if not app.config.get('STRIPE'):
        logger.warn('Unable to capture payment as Stripe is disabled')
        flash('Stripe is currently unavailable. Please try again later')
        return redirect(url_for('tickets'))

    form = StripeAuthorizeForm(request.form)
    if form.validate_on_submit():
        try:
            logger.info("Stripe payment %s captured, token %s", payment.id, payment.token)
            payment.token = form.token.data
            payment.state = 'captured'
            db.session.commit()

        except Exception, e:
            logger.warn("Exception %r updating payment", e)
            flash('An error occurred with your payment, please try again')
            return redirect(url_for('stripe_tryagain', payment_id=payment.id))

        return charge_stripe(payment)
示例#3
0
def stripe_capture(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'stripe',
        valid_states=['new'],
    )

    if not app.config.get('STRIPE'):
        logger.warn('Unable to capture payment as Stripe is disabled')
        flash('Stripe is currently unavailable. Please try again later')
        return redirect(url_for('tickets'))

    form = StripeAuthorizeForm(request.form)
    if form.validate_on_submit():
        try:
            logger.info("Stripe payment %s captured, token %s", payment.id, payment.token)
            payment.token = form.token.data
            payment.state = 'captured'
            db.session.commit()

        except Exception, e:
            logger.warn("Exception %r updating payment", e)
            flash('An error occurred with your payment, please try again')
            return redirect(url_for('stripe_tryagain', payment_id=payment.id))

        return charge_stripe(payment)
示例#4
0
def transfer_cancel(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'banktransfer',
        valid_states=['new', 'inprogress', 'cancelled'],
    )

    if payment.state == 'cancelled':
        logger.info('Payment %s has already been cancelled', payment.id)
        flash('Payment has already been cancelled')
        return redirect(url_for('tickets'))

    form = TransferCancelForm(request.form)
    if form.validate_on_submit():
        if form.yes.data:
            logger.info('Cancelling bank transfer %s', payment.id)
            for t in payment.tickets.all():
                t.expires = datetime.utcnow()
            payment.state = 'cancelled'
            db.session.commit()

            logging.info('Payment %s cancelled', payment.id)
            flash('Payment cancelled')

        return redirect(url_for('tickets'))

    return render_template('transfer-cancel.html', payment=payment, form=form)
示例#5
0
def gocardless_cancel(payment_id):
    payment = get_user_payment_or_abort(
        payment_id,
        'gocardless',
        valid_states=[
            'new', 'cancelled'
        ],  # once it's inprogress, there's potentially money moving around
    )

    if payment.state == 'cancelled':
        logger.info('Payment %s has already been cancelled', payment.id)
        flash('Payment has already been cancelled')
        return redirect(url_for('tickets'))

    form = GoCardlessCancelForm(request.form)
    if form.validate_on_submit():
        if form.yes.data:
            logger.info('Cancelling GoCardless payment %s', payment.id)
            for t in payment.tickets.all():
                t.expires = datetime.utcnow()
            payment.state = 'cancelled'
            db.session.commit()

            logger.info('Payment %s cancelled', payment.id)
            flash('Payment cancelled')

        return redirect(url_for('tickets'))

    return render_template('gocardless-cancel.html',
                           payment=payment,
                           form=form)
示例#6
0
def gocardless_cancel(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'gocardless',
        valid_states=['new', 'cancelled'], # once it's inprogress, there's potentially money moving around
    )

    if payment.state == 'cancelled':
        logger.info('Payment %s has already been cancelled', payment.id)
        flash('Payment has already been cancelled')
        return redirect(url_for('tickets'))

    form = GoCardlessCancelForm(request.form)
    if form.validate_on_submit():
        if form.yes.data:
            logger.info('Cancelling GoCardless payment %s', payment.id)
            for t in payment.tickets.all():
                t.expires = datetime.utcnow()
            payment.state = 'cancelled'
            db.session.commit()

            logger.info('Payment %s cancelled', payment.id)
            flash('Payment cancelled')

        return redirect(url_for('tickets'))

    return render_template('gocardless-cancel.html', payment=payment, form=form)
示例#7
0
def transfer_waiting(payment_id):
    payment = get_user_payment_or_abort(
        payment_id,
        'banktransfer',
        valid_states=['inprogress'],
    )
    return render_template('transfer-waiting.html',
                           payment=payment,
                           days=app.config['EXPIRY_DAYS_TRANSFER'])
示例#8
0
def gocardless_waiting(payment_id):
    payment = get_user_payment_or_abort(
        payment_id,
        'gocardless',
        valid_states=['new', 'inprogress', 'paid'],
    )
    return render_template('gocardless-waiting.html',
                           payment=payment,
                           days=app.config['EXPIRY_DAYS_GOCARDLESS'])
示例#9
0
def stripe_waiting(payment_id):
    payment = get_user_payment_or_abort(
        payment_id,
        'stripe',
        valid_states=['charged', 'paid'],
    )
    return render_template('stripe-waiting.html',
                           payment=payment,
                           days=app.config['EXPIRY_DAYS_STRIPE'])
示例#10
0
def gocardless_tryagain(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'gocardless',
        valid_states=['new'],
    )

    if not app.config.get('GOCARDLESS'):
        logger.error('Unable to retry payment %s as GoCardless is disabled', payment.id)
        flash('GoCardless is currently unavailable. Please try again later')
        return redirect(url_for('tickets'))

    logger.info("Trying payment %s again", payment.id)
    bill_url = payment.bill_url("Electromagnetic Field Tickets")
    logger.debug('Bill URL for GoCardless: %s', bill_url)
    return redirect(bill_url)
示例#11
0
def gocardless_tryagain(payment_id):
    payment = get_user_payment_or_abort(
        payment_id,
        'gocardless',
        valid_states=['new', 'inprogress'],
    )

    if not app.config.get('GOCARDLESS'):
        logger.error('Unable to retry payment %s as GoCardless is disabled',
                     payment.id)
        flash('GoCardless is currently unavailable. Please try again later')
        return redirect(url_for('tickets'))

    logger.info("Trying payment %s again", payment.id)
    bill_url = payment.bill_url("Electromagnetic Field Tickets")
    logger.debug('Bill URL for GoCardless: %s', bill_url)
    return redirect(bill_url)
示例#12
0
def gocardless_complete(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'gocardless',
        valid_states=['new'],
    )
    logger.info("Completing payment %s, gcid %s", payment.id, request.args.get('resource_id'))

    try:
        gocardless.client.confirm_resource(request.args)

        if request.args["resource_type"] != "bill":
            raise ValueError("GoCardless resource type %s, not bill" % request.args['resource_type'])

        gcid = request.args["resource_id"]

    except Exception, e:
        logger.error("Exception %r confirming payment", e)
        flash("An error occurred with your payment, please contact %s" % app.config['TICKETS_EMAIL'][1])
        return redirect(url_for('tickets'))
示例#13
0
def stripe_tryagain(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'stripe',
        valid_states=['new', 'captured'], # once it's charged it's too late
    )

    if not app.config.get('STRIPE'):
        logger.warn('Unable to retry payment as Stripe is disabled')
        flash('Stripe is currently unavailable. Please try again later')
        return redirect(url_for('tickets'))

    if payment.state == 'new':
        return redirect(url_for('stripe_capture', payment_id=payment.id))

    form = StripeChargeAgainForm()
    if form.validate_on_submit():
        logger.info("Trying to charge payment %s again", payment.id)
        return charge_stripe(payment)

    return render_template('stripe-tryagain.html', payment=payment, form=form)
示例#14
0
def stripe_tryagain(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'stripe',
        valid_states=['new', 'captured'], # once it's charged it's too late
    )

    if not app.config.get('STRIPE'):
        logger.warn('Unable to retry payment as Stripe is disabled')
        flash('Stripe is currently unavailable. Please try again later')
        return redirect(url_for('tickets'))

    if payment.state == 'new':
        return redirect(url_for('stripe_capture', payment_id=payment.id))

    form = StripeChargeAgainForm()
    if form.validate_on_submit():
        logger.info("Trying to charge payment %s again", payment.id)
        return charge_stripe(payment)

    return render_template('stripe-tryagain.html', payment=payment, form=form)
示例#15
0
def stripe_cancel(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'stripe',
        valid_states=['new', 'captured'],
    )

    form = StripeCancelForm(request.form)
    if form.validate_on_submit():
        if form.yes.data:
            logger.info('Cancelling Stripe payment %s', payment.id)
            payment.cancel()
            db.session.commit()

            if payment.token:
                logger.warn('Stripe payment has outstanding token %s', payment.token)

            logger.info('Payment %s cancelled', payment.id)
            flash('Payment cancelled')

        return redirect(url_for('tickets'))

    return render_template('stripe-cancel.html', payment=payment, form=form)
示例#16
0
def stripe_cancel(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'stripe',
        valid_states=['new', 'captured'],
    )

    form = StripeCancelForm(request.form)
    if form.validate_on_submit():
        if form.yes.data:
            logger.info('Cancelling Stripe payment %s', payment.id)
            payment.cancel()
            db.session.commit()

            if payment.token:
                logger.warn('Stripe payment has outstanding token %s', payment.token)

            logger.info('Payment %s cancelled', payment.id)
            flash('Payment cancelled')

        return redirect(url_for('tickets'))

    return render_template('stripe-cancel.html', payment=payment, form=form)
示例#17
0
def gocardless_complete(payment_id):
    payment = get_user_payment_or_abort(
        payment_id,
        'gocardless',
        valid_states=['new'],
    )
    logger.info("Completing payment %s, gcid %s", payment.id,
                request.args.get('resource_id'))

    try:
        gocardless.client.confirm_resource(request.args)

        if request.args["resource_type"] != "bill":
            raise ValueError("GoCardless resource type %s, not bill" %
                             request.args['resource_type'])

        gcid = request.args["resource_id"]

    except Exception, e:
        logger.error("Exception %r confirming payment", e)
        flash("An error occurred with your payment, please contact %s" %
              app.config['TICKETS_EMAIL'][1])
        return redirect(url_for('tickets'))
示例#18
0
def stripe_waiting(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'stripe',
        valid_states=['charged', 'paid'],
    )
    return render_template('stripe-waiting.html', payment=payment, days=app.config['EXPIRY_DAYS_STRIPE'])
示例#19
0
def transfer_waiting(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'banktransfer',
        valid_states=['inprogress'],
    )
    return render_template('transfer-waiting.html', payment=payment, days=app.config['EXPIRY_DAYS_TRANSFER'])
示例#20
0
def gocardless_waiting(payment_id):
    payment = get_user_payment_or_abort(
        payment_id, 'gocardless',
        valid_states=['new', 'inprogress', 'paid'],
    )
    return render_template('gocardless-waiting.html', payment=payment, days=app.config['EXPIRY_DAYS_GOCARDLESS'])