Пример #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)
Пример #2
0
def handle_paper(data):
    session = db.session
    payment = data['payment']
    details = data['details']

    gid = uuid.uuid1()

    total = int(sum(item['price'] * item['quantity'] for item in details))

    payment = Payment(token=gid,
                      name=payment['name'],
                      email=payment['email'],
                      notes=payment.get('notes'),
                      total=total)

    session.add(payment)

    for item in details:
        session.add(PaymentItem(payment_token=gid, 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_confirmation_email(payment)