Beispiel #1
0
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 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 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!'
Beispiel #4
0
    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')
Beispiel #5
0
 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()