Sindbad~EG File Manager

Current Path : /home/numerotech/ntecpayapp.urbanedge.co.in/ntecpayapp/core/controller/
Upload File :
Current File : //home/numerotech/ntecpayapp.urbanedge.co.in/ntecpayapp/core/controller/PayumoneyController.py

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