Sindbad~EG File Manager

Current Path : /home/numerotech/paymentapi.numerotech.com/paymentapi/core/controller/
Upload File :
Current File : //home/numerotech/paymentapi.numerotech.com/paymentapi/core/controller/InstamojoController.py

from flask import Flask, request, Blueprint, jsonify, redirect, url_for,flash, render_template,session
from core.model.UserModel import UserModel
from core.model.InstamojoModel import InstamojoModel
from core.model.PayumoneyModel import PayumoneyModel
from random import randint

import datetime
from datetime import timedelta,date,datetime
import requests, json
# from .. import Cryptography
from flask import session, app
from instamojo_wrapper import Instamojo
import flask
import base64


app = Flask(__name__,static_folder = "static", static_url_path='')
api = Instamojo(api_key="test_32f394ce65aeb0d25bb6e87891b",auth_token="test_fc42693c28f966396c78c0a362c",endpoint='https://test.instamojo.com/api/1.1/')



app = Blueprint('instamojo', __name__)

@app.route('/payment_instamojo/<gateway_id>', methods = ["POST"])
def Payment_instamojo(gateway_id):
	print("<< Inside payment istamojo controller port  5001 >>")
	base64_bytes   = gateway_id.encode("ascii") 

	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")
	name         = request.values.get('name')
	email        = request.values.get('email')
	mobile       = request.values.get('mobile')
	amount       = request.values.get('amount')
	# last_insert_id_f  = request.args.get('last_insert_id')
	res_url      = request.values.get("res_url",None)
		
		
	unique_id    = request.values.get("unique_id",None)   # This is added on feb 23 2020 like order id
	key          = request.values.get("key",None)         # This is added on sep 24 2020 for merchant ref id
	key_unique_id    =  key+"_"+str(unique_id)
	is_test      = request.values.get("is_test",None)
	gateway_name = "Instamojo"
	currency     = "INR"
	
	if int(is_test) == 1 :
		api_key_1     = gateway_data.test_key
		auth_token_1  = gateway_data.test_auth_token
		pay_link_1    = gateway_data.pay_test_link
		api = Instamojo(api_key=api_key_1,auth_token=auth_token_1,endpoint='https://test.instamojo.com/api/1.1/')
	else :
		api_key_1     = gateway_data.live_key
		auth_token_1  = gateway_data.live_auth_token
		pay_link_1    = gateway_data.pay_live_link
		api = Instamojo(api_key=api_key_1,auth_token=auth_token_1,endpoint='https://instamojo.com/api/1.1/')

	data = {
		'name'   : name,
		'email'  : email,
		'mobile' : mobile,
		'amount' : amount,
		'gateway_name' :[gateway_name],
		'is_test' : [is_test],
		'key_val' :[key],
		'created_at'   :[dt_string],
		'currency'     :[currency],
		'unique_id'    :unique_id,
		'key_unique_id' : key_unique_id
	}
	delg_save =UserModel().insert_delegates(data,unique_id)
	last_insert_id = delg_save


	p_id = last_insert_id
	p_id_ =str(last_insert_id)

	
	response = api.payment_request_create(amount=amount, buyer_name= name,phone = mobile,purpose= "Delegate Registration fee" ,send_email=False,email=email,
	redirect_url="https://ntecpayapp.urbanedge.co.in/payment_api/payment_instamojo_response/"+p_id_+"?res_url="+res_url
	)
	# redirect_url="http://127.0.0.1:5000/payment_instamojo_response/"+p_id_
	pay_request_id = response['payment_request']['id']
	payment_request_id = pay_request_id
	last_insert_id = p_id
	# status = response['payment_request']['status']
	method = response['payment_request']['instrument_type']
	print("payment method in instamojo controller")
	print(method)
	# print (response['payment_request']['status'])    # Get the current status

	print (pay_request_id)  # List of payments
	now = datetime.now()
	dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
	update_pay_req_id = InstamojoModel().updatePayReqIdInstamojo(p_id,pay_request_id,status,dt_string)
	# def updatePayStatusInstamojo(self,p_id,payment_id,payment_status,payment_request_id,dt_string):

	# return   redirect(url_for('https://www.instamojo.com/@ganesanja/'))


	return render_template('instamojo/instamojo_payment_screen.html',data= data,payment_request_id=pay_request_id,last_insert_id =p_id,pay_link_1= pay_link_1)


@app.route('/payment_instamojo_response/<p_id>', methods = ["GET", "POST"])
def Payment_instamojo_response(p_id):
	
	print(request)
	print("Instamojo payment response")
	print(json.dumps(request,default =str))
	res_url         = request.values.get('res_url')
	payment_id      = request.values.get('payment_id')
	payment_status  = request.values.get('payment_status')
	payment_request_id  = request.values.get('payment_request_id')

	now = datetime.now()
	dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
	print("--- Payment_instamojo_response  -----")
	if payment_status == "Credit" :
	    print("instamojo success block")
	    payment_status = "success"
	else :
	    print("instamojo fail block")
	    payment_status = "fail"
 
	delegates  = InstamojoModel().updatePayStatusInstamojo(p_id,payment_id,payment_status,payment_request_id,dt_string)

	payment_id     = delegates.payment_request_id
	payment_status = delegates.payment_status
	email          = delegates.email
	mobile         = delegates.mobile
	unique_id      = delegates.unique_id
	amt            = delegates.amount

	amount        = str(amt) 

	return flask.redirect(res_url+'?payment_id='+payment_id+'&status='+payment_status+'&email='+email+'&mobile='+mobile+'&unique_id='+unique_id+'&amount='+amount)
	

	# -----------  ----------  ------------
	# now = datetime.now()
	# dt_string = now.strftime("%Y-%m-%d %H:%M:%S")
	# update_pay_status = InstamojoModel().update_pay_status(p_id,payment_id,payment_status,payment_request_id,dt_string)
	# if update_pay_status :
	# 	email   = update_pay_status.email
	# 	mobile  = update_pay_status.mobile
	# 	if payment_status == "Credit":
	# 		flash("Payment status  success " )
	# 		return flask.redirect('http://127.0.0.1:5000/payment_instamojo_response?payment_id='+payment_id+'&status='+payment_status+'&email='+email+'&mobile='+mobile+'&payment_request_id='+payment_request_id)
	# 	else:
	# 		flash("Payment status  Failed " )
	# 		return flask.redirect('http://127.0.0.1:5000/payment_instamojo_response?payment_id='+payment_id+'&status='+payment_status+'&email='+email+'&mobile='+mobile+'&payment_request_id='+payment_request_id)




	


Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists