def check_cc_validity(): payload = request.forms cc = CreditCard(**payload) logger.info( 'Checking credit card **** **** **** {last_four_digits} validity.'. format(last_four_digits=cc['cc_number'][-4:])) if cc.is_valid(): logger.info('Valid credit card.') response.status = http.client.OK return logger.info('Invalid credit card.') response.status = http.client.PAYMENT_REQUIRED return 'Invalid credit card'
def pay(line): """Logic new payment""" msg = 0 if len(line) > 4: actor = User.get_by_name(line[1]) target = User.get_by_name(line[2]) amount = line[3] note = ' '.join(line[4:]) actor_card = CreditCard.get_by_user(actor) if actor_card: # actor has a card if actor and target: #both existed if actor != target: #not paying self amount = clean_amount(amount) if amount: #valid amount t = Transaction(actor, target, amount, note) t.save() else: msg = ERROR_MSG['INVLIAD_AMOUNT'] else: msg = ERROR_MSG['PAY_SELF'] else: msg = ERROR_MSG['U_NOT_EXISTED'] else: msg = ERROR_MSG['U_HAS_NO_CARD'] else: msg = ERROR_MSG['INVALID_ARS'] return msg
def credit_cards(): data = request.get_json() card_info = data.get('encrypted_payment_form', None) if not card_info: print("Empty Payment Information or Invalid Data Format") return jsonify(status='fail',message='Empty Payment Information') card = CreditCard(card_info=card_info) try: card.save() except ValidationError as e: print(e) return jsonify(status='fail',message=str(e)) return jsonify(status='success', token=card.token)
def process_payment(): payload = request.forms amount = payload.pop('amount') cc = CreditCard(**payload) logger.info( 'Processing payment with card **** **** **** {last_four_digits}. Charging {amount}$.' .format(last_four_digits=cc['cc_number'][-4:], amount=amount)) if cc.funds_available(amount): logger.info('Payment approved.') response.status = http.client.OK return 'Successfully payed {amount}$ with card **** **** **** {last_four_digits}.'.format( last_four_digits=cc['cc_number'][-4:], amount=amount) logger.error('Payment denied. Not enough money.') response.status = http.client.PAYMENT_REQUIRED return 'Not enough funds. Please try again with a different credit card!'
def test_should_have_creditcard_as_addressable(self): """ Prueba que una direccion pueda ser asociada a una tarjeta de credito """ credit_card = CreditCard(number="1111111111") credit_card.save() address = Address() address.street1 = "Cra 7 # 6-19" address.addressable_object = credit_card address.save() address_from_db = Address.objects.get(id=address.id) self.assertEqual(address_from_db.addressable_type.name, 'credit card')
def add_card(line): """Logic add a card""" msg = 0 if len(line) == 3: user_name = line[1] card_number = line[2] user = User.get_by_name(user_name) card1 = CreditCard.get_by_user(user) #already have a card? if not card1: card2 = CreditCard.get_by_number(card_number) #fraud card? if not card2: if user: if clean_card_number(card_number): card = CreditCard(user, card_number) card.save() else: msg = ERROR_MSG['INVALID_CARD'] else: msg = ERROR_MSG['U_NOT_EXISTED'] else: msg = ERROR_MSG['FRAUD_CARD'] else: msg = ERROR_MSG['U_HAS_CARD'] else: msg = ERROR_MSG['INVALID_ARS'] return msg
def save(self, instance=None): data = self.data data['user_id'] = instance.id credit_card = CreditCard.query.filter( CreditCard.user_id == instance.id, CreditCard.is_active == True).first() if credit_card: data['stripe_customer_id'] = credit_card.stripe_customer_id update_card(data) del data['cvv'] db.session.query(CreditCard).filter( CreditCard.user_id == instance.id, CreditCard.is_active == True).update(data) else: add_card(data) del data['cvv'] credit_card = CreditCard(**data) db.session.add(credit_card) db.session.flush() db.session.commit() return CreditCard.query.filter(CreditCard.id == credit_card.id).first()
def setUp(self): """ Runs before each test """ CreditCard.init_db(server.app) CreditCard.collection.drop()
def init_db(): """ Initialies the SQLAlchemy app """ global app CreditCard.init_db(app)