Skip to content

Instantly share code, notes, and snippets.

@scmmishra
Last active October 17, 2021 06:41
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save scmmishra/40c6b9362dd45a67ee5f1eed9def3612 to your computer and use it in GitHub Desktop.
Save scmmishra/40c6b9362dd45a67ee5f1eed9def3612 to your computer and use it in GitHub Desktop.
Validate Razorpay e-mandate tokens
import razorpay
import os
import csv
from collections import OrderedDict
fieldnames = ("sr", "name", "member_name", "razorpay_token", "customer_id")
members = []
with open("member.csv", "r") as csvfile:
reader = csv.DictReader(csvfile, fieldnames)
for row in reader:
entry = OrderedDict()
for field in fieldnames:
entry[field] = row[field]
members.append(dict(entry))
key = os.environ.get("RAZORPAY_KEY")
secret = os.environ.get("RAZORPAY_SECRET")
client = razorpay.Client(auth=(key, secret))
good_members = []
missing_customer = []
missing_token = []
incorrect_token = []
def is_valid_token(member):
try:
client.token.fetch(
customer_id=member.get("customer_id"), token_id=member.get("razorpay_token")
)
return True
except razorpay.errors.BadRequestError:
return False
def is_valid_customer(member):
try:
client.customer.fetch(customer_id=member.get("customer_id"))
return True
except Exception as err:
return False
for member in members:
print("CHECKING ", member.get("name"))
if is_valid_token(member):
good_members.append(
dict(
name=member.get("name"),
customer_id=member.get("customer_id"),
token_id=member.get("razorpay_token"),
)
)
elif not is_valid_customer(member):
missing_customer.append(
dict(
name=member.get("name"),
customer_id=member.get("customer_id"),
token_id=member.get("razorpay_token"),
)
)
else:
token_data = client.token.all(customer_id=member.get("customer_id"))
if token_data.get("count", 0) > 0:
incorrect_token.append(
dict(
name=member.get("name"),
customer_id=member.get("customer_id"),
token_id=member.get("razorpay_token"),
tokens=[tok.get("id") for tok in token_data.get("items")],
)
)
else:
missing_token.append(
dict(
name=member.get("name"),
customer_id=member.get("customer_id"),
token_id=member.get("razorpay_token"),
)
)
print("GOOD MEMBERS ----------------")
print(*good_members, sep="\n")
print("\n")
print("MEMBERS WITH MISSING CUSTOMERS ----------------")
print(*missing_customer, sep="\n")
print("\n")
print("MEMBERS WITH WRONG TOKEN ----------------")
print(*incorrect_token, sep="\n")
print("\n")
print("MEMBERS WITH NO TOKEN ----------------")
print(*missing_token, sep="\n")
print("\n")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment