Source code for ads.common.card_identifier

#!/usr/bin/env python
# -*- coding: utf-8 -*--

# Copyright (c) 2020, 2022 Oracle and/or its affiliates.
# Licensed under the Universal Permissive License v 1.0 as shown at https://oss.oracle.com/licenses/upl/

"""
credit card patterns refer to https://en.wikipedia.org/wiki/Payment_card_number#Issuer_identification_number_(IIN)
Active and frequent card information
American Express: 34, 37
Diners Club (US & Canada): 54,55
Discover Card: 6011, 622126 - 622925, 624000 - 626999, 628200 - 628899, 64, 65
Master Card: 2221-2720, 51–55
Visa: 4

"""


[docs]class card_identify:
[docs] def identify_issue_network(self, card_number): """ Returns the type of credit card based on its digits Parameters ---------- card_number: String Returns ------- String: A string corresponding to the kind of credit card. """ try: first_six_digit = int(str(card_number)[:6]) first_four_digit = int(str(card_number)[:4]) first_two_digit = int(str(card_number)[:2]) first_one_digit = int(str(card_number)[:1]) if first_one_digit == 4: return "Visa" elif first_two_digit == 34 or first_two_digit == 37: return "Amex" elif first_two_digit == 54 or first_two_digit == 55: return "Diners Club" elif ( first_two_digit == 64 or first_two_digit == 65 or first_four_digit == 6011 or 622126 <= first_six_digit <= 622925 or 624000 <= first_six_digit <= 626999 or 628200 <= first_six_digit <= 628899 ): return "Discover" elif 2221 <= first_four_digit <= 2720 or 51 <= first_two_digit <= 55: return "MasterCard" else: return "Unknown" except: return "Unknown"
if __name__ == "__main__": _visa = [ "4532640527811543", "4556929308150929", "4539944650919740", "4485348152450846", "4556593717607190", ] _mastercard = [ "5334180299390324", "5111466404826446", "5273114895302717", "5430972152222336", "5536426859893306", ] _amex = [ "371025944923273", "374745112042294", "340984902710890", "375767928645325", "370720852891659", ]