Spaces:
Sleeping
Sleeping
File size: 1,784 Bytes
4cc75d7 9f58923 4cc75d7 9f58923 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
import gradio as gr
def check_credit_card(card_number: str):
card_number = card_number.replace(" ", "") # remove spaces
if not card_number.isdigit(): # check if the input is numeric
return "Invalid input. Please enter a numeric credit card number."
card_number = int(card_number)
# convert card number to string to easily calculate its length
card_number_str = str(card_number)
digit = len(card_number_str)
# check if the card number has a valid length
if digit != 13 and digit != 16 and digit != 15:
return "INVALID"
# split the card number into individual digits and store them in a list
number = [int(x) for x in card_number_str[::-1]]
original_number = number.copy() # create a copy of the number list
# apply Luhn's algorithm
for i in range(1, digit, 2):
original_number[i] *= 2
# sum the digits of the numbers in original_number
v = sum(sum(divmod(x, 10)) for x in original_number)
# check if the card is a Visa, MasterCard, or American Express card
if digit == 13:
if number[-1] == 4 and v % 10 == 0:
return "VISA"
elif digit == 15:
if number[-1] == 3 and v % 10 == 0 and number[-2] in [4, 7]:
return "AMEX"
elif digit == 16:
if number[-1] == 4 and v % 10 == 0:
return "VISA"
elif number[-1] == 5 and v % 10 == 0 and number[-2] in [1, 2, 3, 4, 5]:
return "MASTERCARD"
return "INVALID"
iface = gr.Interface(fn=check_credit_card,
inputs=gr.inputs.Textbox(label="Credit Card Number"),
outputs="text",
layout="vertical",
title="Arasy's credit/debit card checker"
)
iface.launch()
|