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)
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)