aboutsummaryrefslogtreecommitdiff
path: root/payments/__init__.py
diff options
context:
space:
mode:
authorMichał Ociepka <michal@ociepka.info>2013-11-07 16:22:32 +0100
committerMichał Ociepka <michal@ociepka.info>2013-11-07 16:22:32 +0100
commitd4b6c998fac3b32693ae15bfa7afd16d3f960405 (patch)
tree75dbc06b80ddc10736f9b7fb4dc81ade6c221365 /payments/__init__.py
parentad8a52656bae7032484aed5418ec0251abb3fc30 (diff)
downloaddjango-payments-taler-d4b6c998fac3b32693ae15bfa7afd16d3f960405.tar.gz
django-payments-taler-d4b6c998fac3b32693ae15bfa7afd16d3f960405.tar.bz2
django-payments-taler-d4b6c998fac3b32693ae15bfa7afd16d3f960405.zip
Replace the CreditCard object by a function
Diffstat (limited to 'payments/__init__.py')
-rw-r--r--payments/__init__.py17
1 files changed, 17 insertions, 0 deletions
diff --git a/payments/__init__.py b/payments/__init__.py
index 151e915..3c96350 100644
--- a/payments/__init__.py
+++ b/payments/__init__.py
@@ -1,3 +1,4 @@
+import re
from collections import namedtuple
try:
from urllib.parse import urljoin
@@ -112,3 +113,19 @@ def get_payment_model():
settings.PAYMENT_MODEL)
raise ImproperlyConfigured(msg)
return payment_model
+
+
+CARD_TYPES = [
+ ('^4[0-9]{12}(?:[0-9]{3})?$', 'visa', 'VISA'),
+ ('^5[1-5][0-9]{14}$', 'mastercard', 'MasterCard'),
+ ('^6(?:011|5[0-9]{2})[0-9]{12}$', 'discover', 'Discover'),
+ ('^3[47][0-9]{13}$', 'amex', 'American Express'),
+ ('^(?:(?:2131|1800|35\d{3})\d{11})$', 'jcb', 'JCB'),
+ ('^(?:3(?:0[0-5]|[68][0-9])[0-9]{11})$', 'diners', 'Diners Club')]
+
+
+def get_credit_card_issuer(number):
+ for regexp, card_type, name in CARD_TYPES:
+ if re.match(regexp, number):
+ return card_type, name
+ return None, None \ No newline at end of file