Beispiel #1
0
def payment():
    form = PaymentForm(request.form)
    users = User.query.filter(User.activated).order_by(User.email.asc())

    if request.method == 'POST' and form.validate():
        user = User.query.filter(User.id == request.form['user_id']).first()
        payment = Payment(user, form.value.data)
        dbs.add(payment)
        dbs.commit()
        flash('Payment added successfully.', 'alert alert-success')
        return redirect(url_for('payment'))
    else:
        data = {'nav_urls': get_urls(), 'active_url': url_for('payment')}
        return render_template('payment_add.html',
                               data=data,
                               form=form,
                               users=users)
Beispiel #2
0
def payment():
    form = PaymentForm(request.form)
    users = User.query.filter(User.activated).order_by(User.email.asc())

    if request.method == 'POST' and form.validate():
        user = User.query.filter(User.id == request.form['user_id']).first()
        payment = Payment(user, form.value.data)
        dbs.add(payment)
        dbs.commit()
        flash('Payment added successfully.', 'alert alert-success')
        return redirect(url_for('payment'))
    else:
        data = {
            'nav_urls': get_urls(),
            'active_url': url_for('payment')
        }
        return render_template('payment_add.html', data=data, form=form, users=users)
Beispiel #3
0
def checkout():

    paymentForm = PaymentForm(request.form)

    if request.method == 'POST' and paymentForm.validate():
        paymentDict = {}
        db = shelve.open('storage.db', 'c')
        try:
            paymentDict = db['Payment']
        except:
            print("Error in retrieving Items from storage.db.")
        payment = Payment.Payment(paymentForm.name.data,
                                  paymentForm.cardno.data,
                                  paymentForm.date.data, paymentForm.cvv.data)
        paymentDict[payment.get_name()] = payment
        db['Payment'] = paymentDict
        db.close()
        return redirect(url_for('invoice'))
    return render_template('checkout.html', form=paymentForm)
Beispiel #4
0
def submit():

    form = PaymentForm(request.form)

    log.info('Incoming payment. Details:')

    if form.validate():
        amount = str(round(form.data['amount'], 2))  # 100 -> 100.00
        c = form.data['currency']

        payment_data = {
            'amount': amount,
            'currency': c,
            'shop_id': get_shop_id(),
            'shop_order_id': get_shop_order_id(),
        }

        d = form.data.get('description')
        if d:
            payment_data['description'] = d

        log.critical(payment_data)

        if c == available_currencies['EUR']:

            payment_data['sign'] = generate_sign(**payment_data)

            log.info('Rendering "Pay method" form.')

            return render_template('payform_pay.html', **payment_data)

        elif c == available_currencies['RUB']:
            payment_data['payway'] = 'payeer_rub'
            payment_data['sign'] = generate_sign(**payment_data)

            log.info('Posting to Piastrix for confirmation')

            h = {'Content-Type': 'application/json'}
            r = requests.post('https://core.piastrix.com/invoice/create',
                              data=json.dumps(payment_data),
                              headers=h)
            res = r.json()
            data = res['data']

            if res['result'] is True and res['message'] == 'Ok':

                log.info(data)
                log.info('Request succeded. Rendering "Invoice method" button')
                return render_template('payform_invoice.html',
                                       data=data)

            else:
                log.error('Request failure. Details:')
                log.error(res)
                return 'Malformed request', 403

        elif c == available_currencies['USD']:

            payment_data['shop_amount'] = payment_data.pop('amount')
            payment_data['shop_currency'] = payment_data.pop('currency')
            payment_data['payer_currency'] = payment_data['shop_currency']

            payment_data['sign'] = generate_sign(**payment_data)

            log.info('Posting to Piastrix for confirmation')

            h = {'Content-Type': 'application/json'}
            r = requests.post('https://core.piastrix.com/bill/create',
                              data=json.dumps(payment_data),
                              headers=h)
            res = r.json()
            data = res['data']

            if res['result'] is True and res['message'] == 'Ok':

                log.info('Request succeeded. Redirecting via "Bill method"')
                return redirect(data['url'], code=302)

            else:
                log.error('Request failed. Details:')
                log.error(res)
                return f'Malformed request. Details:<br>{res}', 403

    else:
        errs = {}
        for f, e in form.errors.items():
            errs[f] = e

        log.error('Bad input:')
        log.error(errs)

        return f'Bad input<br>{errs}', 403