Sindbad~EG File Manager
from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session
from core.model.UserModel import UserModel
from core.model.PayumoneyModel import PayumoneyModel
from random import randint
import datetime
from datetime import timedelta,date,datetime
import requests, mandrill, json
# from .. import Cryptography
from flask import session, app
import razorpay
from random import randint
import datetime
from datetime import timedelta,date,datetime,time
import hashlib
from .. import config
import flask
import base64
import pytz
app = Flask(__name__,static_folder = "static", static_url_path='')
app = Blueprint('payumoney', __name__)
@app.route('/payment/<gateway_id>', methods = ["GET", "POST"])
def payment(gateway_id):
base64_bytes = gateway_id.encode("ascii")
# gateway id decode
sample_bytes = base64.b64decode(base64_bytes)
gateway_id_str = sample_bytes.decode("ascii")
gateway_id_int = int(gateway_id_str)
gateway_data = PayumoneyModel().get_gateway(gateway_id_int)
# now = datetime.now()
# dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
UTC = pytz.utc
IST = pytz.timezone('Asia/Kolkata')
datetime_ist = datetime.now(IST)
dt_string = datetime_ist.strftime('%Y-%m-%d %H:%M:%S')
name = request.args.get('name')
email = request.args.get('email')
mobile = request.args.get('mobile')
amount = request.args.get('amount')
res_url = request.args.get('res_url', None)
unique_id = request.args.get('unique_id') # This is added on feb 23 2020 like order id
txtid_prefix = request.args.get('txtid_prefix') # This is added on sep 24 2020 for merchant ref id
# endcode res_url
url_byte = res_url.encode("ascii")
_bytes = base64.b64encode(url_byte)
r_url = _bytes.decode("ascii")
# last_insert_id_f = request.args.get('last_insert_id')
gateway_name = "Payumoney"
currency = "INR"
data = {
'name' : name,
'email' : email,
'mobile' : mobile,
'amount' : amount,
'gateway_name' : [gateway_name],
'created_at' : [dt_string],
'currency' : [currency],
'unique_id' : [unique_id]
}
delg_save =UserModel().insert_delegates(data,unique_id)
last_insert_id = delg_save
delegates = UserModel().get_delegate_by_pid(last_insert_id)
MERCHANT_KEY = gateway_data["live_key"]
key= gateway_data["live_key"]
SALT = gateway_data["live_salt_or_secret"]
pg_data = {"merchant_key" : MERCHANT_KEY, "key_1" : key , "salt" : SALT }
# return (json.dumps(pg_data , default = str) )
# PAYU_BASE_URL = "https://sandboxsecure.payu.in/_payment"
# https://sandboxsecure.payu.in/_payment # test url
# https://secure.payu.in/_payment # live url
PAYU_BASE_URL = "https://secure.payu.in/_payment" # FOR LIVE MO
# PAYU_BASE_URL = "https://sandboxsecure.payu.in/_payment" # FOR TEST MO
action = ''
if request.method == 'GET':
posted={}
return render_template('payumoney/payumoney_payment_screen.html',posted=posted,delegates=delegates,r_url = r_url,last_insert_id=last_insert_id)
else:
print("else")
posted={}
# # Merchant Key and Salt provided y the PayU.
# randtemp = randint(0,20)
randtemp = str(randint(1,99999))+ str(unique_id)
hash_object = hashlib.sha256(str(randtemp).encode('utf-8'))
txnid= txtid_prefix + hash_object.hexdigest()[0:20]
# txnid= 'VRVDC' + hash_object.hexdigest()[0:20]
hashh = ''
# Mandatory Field
posted['amount'] = amount
posted['productinfo']='register'
posted['firstname'] = name
posted['email'] = email
posted['phone'] = mobile
posted['surl'] = config['BASE_URL']+'/payment_api/success'
# posted['surl'] = "http://127.0.0.1:5001/payment_api/success"
posted['furl'] = config['BASE_URL']+'/payment_api/failure'
# posted['furl'] = "http://127.0.0.1:5001/payment_api/failure"
posted['hash'] = ''
posted['udf1'] = r_url
posted['udf2'] = unique_id # this line added on feb 23 2020
# hashSequence = "key|txnid|amount|productinfo|firstname|email|phone|surl|furl"
hashSequence = "key|txnid|amount|productinfo|firstname|email|udf1|udf2|udf3|udf4|udf5|udf6|udf7|udf8|udf9|udf10"
posted['txnid']=txnid
posted['key']=key
hash_string=''
hashVarsSeq=hashSequence.split('|')
for i in hashVarsSeq:
try:
hash_string+=str(posted[i])
except Exception:
hash_string+=''
hash_string+='|'
hash_string+=SALT
hashh=hashlib.sha512(hash_string.encode('utf-8')).hexdigest().lower()
action =PAYU_BASE_URL
if(posted.get("key")!=None and posted.get("txnid")!=None and posted.get("firstname")!=None and posted.get("email")!=None):
payment_id = posted.get("txnid")
payment_status = "Pending"
created_at = datetime.now()
# update_payment_id = {
# 'payment_status' : 'YETTOPAY',
# 'payment_id' : posted.get("txnid"),
# 'created_at' : datetime.now(),
# }
insert_user = PayumoneyModel().update_payment_id(last_insert_id,payment_id,payment_status,created_at)
data = { "posted":posted,"hashh":hashh,"key":key,"MERCHANT_KEY":MERCHANT_KEY,"txnid":txnid,"action":"https://secure.payu.in/_payment" } # It is before mar 13 2021
# data = { "posted":posted,"hashh":hashh,"key":key,"MERCHANT_KEY":MERCHANT_KEY,"txnid":txnid,"hash_string":hash_string,"action":"https://sandboxsecure.payu.in/_payment" }
return render_template('payumoney/payu_request.html',posted=data.get('posted'),MERCHANT_KEY=MERCHANT_KEY,action=action,hashh=hashh,txnid=txnid)
else:
data = { "posted":posted,"hashh":hashh,"MERCHANT_KEY":MERCHANT_KEY,"txnid":txnid,"hash_string":hash_string,"action":"." }
return render_template('payumoney/payu_request.html',posted=data.get('posted'))
@app.route('/success', methods=['GET','POST'])
def success():
txnid=request.values["txnid"]
p=PayumoneyModel()
# get_user_id = p.getuser_idbytxnid(txnid)
payuMoneyId = request.values["payuMoneyId"]
print("paymentId on MAY 03 2022")
print(str(payuMoneyId))
status = request.values["status"]
firstname = request.values["firstname"]
amount = request.values["amount"]
# txnid=request.values["txnid"]
posted_hash = request.values["hash"]
key = request.values["key"]
productinfo = request.values["productinfo"]
email = request.values["email"]
mobile = request.values["phone"]
udf1 = request.values["udf1"]
udf2 = request.values["udf2"] # This line added on feb 23 2021
base64_bytes = udf1.encode("ascii")
sample_bytes = base64.b64decode(base64_bytes)
response_url_str = sample_bytes.decode("ascii")
salt="QlpAxn2s" # Techventure
UTC = pytz.utc
IST = pytz.timezone('Asia/Kolkata')
datetime_ist = datetime.now(IST)
dt_string = datetime_ist.strftime('%Y-%m-%d %H:%M:%S')
save_data = {
# 'user_id': user_id,
'amount' : amount ,
'payment_status' : status ,
'payment_id' : payuMoneyId,
'updated_at' : dt_string,
}
save_payment_dt = PayumoneyModel().updatepaymentdetail(txnid,save_data)
# return flask.redirect(response_url_str+'?payment_id='+str(payuMoneyId)+'&status='+status+'&email='+email+'&mobile='+mobile+'&name='+firstname+'&amount='+amount+'&unique_id='+udf2)
return flask.redirect(response_url_str+'?payment_id='+str(payuMoneyId)+'&status='+status+'&email='+email+'&mobile='+mobile+'&name='+firstname+'&amount='+amount+'&unique_id='+udf2)
@app.route('/failure', methods=['GET','POST'])
def failure():
txnid=request.values["txnid"]
payuMoneyId = request.values["payuMoneyId"]
# get_user_id = Payumoney().getuser_idbytxnid(txnid)
status = request.values["status"]
firstname = request.values["firstname"]
amount = request.values["amount"]
# paymentId = request.values["paymentId"]
posted_hash = request.values["hash"]
key = request.values["key"]
productinfo = request.values["productinfo"]
email = request.values["email"]
mobile = request.values["phone"]
r_url = request.values["udf1"]
udf2 = request.values["udf2"]
base64_bytes = r_url.encode("ascii")
sample_bytes = base64.b64decode(base64_bytes)
response_url_str = sample_bytes.decode("ascii")
salt=""
try:
additionalCharges=request.values["additionalCharges"]
retHashSeq=additionalCharges+'|'+salt+'|'+status+'|||||||||||'+email+'|'+firstname+'|'+productinfo+'|'+amount+'|'+txnid+'|'+key
except Exception:
retHashSeq = salt+'|'+status+'|||||||||||'+email+'|'+firstname+'|'+productinfo+'|'+amount+'|'+txnid+'|'+key
hashh=hashlib.sha512(retHashSeq.encode('utf-8')).hexdigest().lower()
# dt_string
UTC = pytz.utc
IST = pytz.timezone('Asia/Kolkata')
datetime_ist = datetime.now(IST)
dt_string = datetime_ist.strftime('%Y-%m-%d %H:%M:%S')
save_data = {
# 'user_id': user_id,
'amount' : amount ,
'payment_status' : status ,
'payment_id' : payuMoneyId,
'updated_at' : dt_string,
}
save_payment_dt = PayumoneyModel().updatepaymentdetail(txnid,save_data)
# return flask.redirect(response_url_str+'?payment_id='+str(payuMoneyId)+'&status='+status+'&email='+email+'&mobile='+mobile+'&name='+firstname+'&amount='+amount+'&unique_id='+udf2)
return flask.redirect(response_url_str+'?payment_id='+str(payuMoneyId)+'&status='+status+'&email='+email+'&mobile='+mobile+'&name='+firstname+'&amount='+amount+'&unique_id='+udf2)
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists