Example #1
0
def handle_card(data):
    session = db.session
    payment = data['payment']
    details = data['details']
    total = int(sum(item['price'] * item['quantity'] for item in details)) * 100

    charge = stripe.Charge.create(
        amount=total,
        currency="usd",
        card=payment['token'],
        description=payment['email'])

    if not charge['paid']:
        raise Exception("Not paid")

    payment_token = payment['token']

    payment = Payment(token=payment['token'],
                      name=payment['name'],
                      email=payment['email'],
                      notes=payment.get('notes'),
                      total=total / 100.0,
                      charge_id=charge['id'],
                      payment_time=datetime.datetime.fromtimestamp(charge['created']))


    session.add(payment)

    for item in details:
        session.add(PaymentItem(payment_token=payment_token, item_id=item['id'], num=item['quantity']))
        Item.query.filter(Item.id == item['id']).update({Item.purchased: Item.purchased + item['quantity']})

    session.commit()

    emails.send_certificate_email(payment)
Example #2
0
def handle_confirmation():
    data = flask.request.json
    payment = Payment.query.filter(Payment.token == data.get('guid', '')).limit(1).first()

    if not payment:
        return {}, 404

    payment.charge_id = "paper"
    payment.payment_time = datetime.datetime.now()

    db.session.add(payment)
    db.session.commit()

    emails.send_certificate_email(payment)

    return {"name": payment.name}