示例#1
0
 def get_obfuscated_kwargs(self):
     """
     Get a dictionary containing the obfuscated bank card details used
     in the eway form. The card number is **not** stored in plain
     text but is obfuscated in the same way eWay obfuscates their card
     numers (first 6 and last 4 digits visible).
     """
     card_number = self.data['EWAY_CARDNUMBER']
     return {
         'card_type': bankcard_type(card_number),
         'name': self.data['EWAY_CARDNAME'],
         'number': self.get_obfuscated_card_number(card_number),
         'expiry_date': "%s/%s" % (
             self.data['EWAY_CARDEXPIRYMONTH'],
             self.data['EWAY_CARDEXPIRYYEAR'],
         ),
     }
示例#2
0
 def get_obfuscated_kwargs(self):
     """
     Get a dictionary containing the obfuscated bank card details used
     in the eway form. The card number is **not** stored in plain
     text but is obfuscated in the same way eWay obfuscates their card
     numers (first 6 and last 4 digits visible).
     """
     card_number = self.data.get('EWAY_CARDNUMBER', '')
     return {
         'card_type': bankcard_type(card_number) or '',
         'name': self.data.get('EWAY_CARDNAME', ''),
         'number': self.get_obfuscated_card_number(card_number),
         'expiry_date': "%s/%s" % (
             self.data.get('EWAY_CARDEXPIRYMONTH', ''),
             self.data.get('EWAY_CARDEXPIRYYEAR', ''),
         ),
     }
def _card_type(bankcard_number):
    """
    Convert card-number into appropriate card type that Sagepay will
    recognise.
    """
    # Oscar provides a function to do the card-type recognition but we need to
    # map into the values that Sagepay accepts.
    oscar_type = bankcards.bankcard_type(bankcard_number)
    mapping = {
        bankcards.VISA: 'VISA',
        bankcards.VISA_ELECTRON: 'UKE',
        bankcards.MASTERCARD: 'MC',
        bankcards.MAESTRO: 'MAESTRO',
        bankcards.AMEX: 'AMEX',
        bankcards.DINERS_CLUB: 'DC',
        bankcards.LASER: 'LASER',
        bankcards.JCB: 'JCB',
    }
    return mapping.get(oscar_type, '')
示例#4
0
def _card_type(bankcard_number):
    """
    Convert card-number into appropriate card type that Sagepay will
    recognise.
    """
    # Oscar provides a function to do the card-type recognition but we need to
    # map into the values that Sagepay accepts.
    oscar_type = bankcards.bankcard_type(bankcard_number)
    mapping = {
        bankcards.VISA: 'VISA',
        bankcards.VISA_ELECTRON: 'UKE',
        bankcards.MASTERCARD: 'MC',
        bankcards.MAESTRO: 'MAESTRO',
        bankcards.AMEX: 'AMEX',
        bankcards.DINERS_CLUB: 'DC',
        bankcards.LASER: 'LASER',
        bankcards.JCB: 'JCB',
    }
    return mapping.get(oscar_type, '')
示例#5
0
    def clean(self, value):
        """
        Check if given CC number is valid and one of the
        card types we accept
        """
        non_decimal = re.compile(r'\D+')
        value = non_decimal.sub('', value.strip())

        if value and not bankcards.luhn(value):
            raise forms.ValidationError(
                _("Please enter a valid credit card number."))

        if hasattr(self, 'accepted_cards'):
            card_type = bankcards.bankcard_type(value)
            if card_type not in self.accepted_cards:
                raise forms.ValidationError(
                    _("%s cards are not accepted." % card_type))

        return super(BankcardNumberField, self).clean(value)
示例#6
0
 def test_bankcard_type_sniffing(self):
     for expected_bankcard_type, numbers in self.fixture_data.items():
         for number in numbers:
             sniffed_bankcard_type = bankcards.bankcard_type(number)
             self.assertEqual(expected_bankcard_type, sniffed_bankcard_type)
def compare(number, type):
    nose.tools.eq_(bankcards.bankcard_type(number), type)
def compare(number, type):
    assert bankcards.bankcard_type(number) == type
示例#9
0
def compare(number, type):
    assert bankcards.bankcard_type(number) == type
示例#10
0
 def test_bankcard_type_sniffing(self):
     for expected_bankcard_type, numbers in self.fixture_data.items():
         for number in numbers:
             sniffed_bankcard_type = bankcards.bankcard_type(number)
             self.assertEqual(expected_bankcard_type, sniffed_bankcard_type)
示例#11
0
def compare(number, type):
    nose.tools.eq_(bankcards.bankcard_type(number), type)