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.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