Current File : /home/inlingua/public_html/icentex/inlingua_payment/payment/handlePaymentResponse.php
<?php
ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(E_ALL);
date_default_timezone_set('Asia/Calcutta');
include_once("../dbConnection.php");
//mysql_connect($SERVER,$USERNAME, $PASSWORD);
//mysql_select_db($DATABASE);
ob_start();
include_once("../../class.phpmailer.php");
use PaymentHandler\APIException;
require_once("PaymentHandler.php");
use PaymentHandler\PaymentHandler;
// block:start:order-status-function
function getOrder($params) {
   try {
        $paymentHandler = new PaymentHandler("resources/config.json");
        if ($params["status"] != "NEW" && $paymentHandler->validateHMAC_SHA256($params) === false) {
            throw new APIException(-1, false, "Signature verification failed", "Signature verification failed");
        } else {
            $order = $paymentHandler->orderStatus($params["order_id"]);
            return $order;
        }
   } catch (APIException $e ) {
        http_response_code(500);
        $error = json_encode(["message" => $e->getErrorMessage(), "error_code" => $e->getErrorCode(), "http_response_code" => $e->getHttpResponseCode()]);
        echo "<p> Payment server threw a non-2xx error. Error message: {$error} </p>";
        exit;
     } catch (Exception $e) {
        http_response_code(500);
        echo "<p> Unexpected error occurred, Error message:  {$e->getMessage()} </p>";
        exit;
    }

}
// block:end:order-status-function
function getStatusMessage($order) {
    $message = "Your order with order_id " . $order["order_id"] . " and amount " . $order["amount"] . " has the following status: ";
    $status = $order["status"];

    switch ($status) {
        case "CHARGED":
		
		//$message = $message . "order payment done successfully";
            break;
        case "PENDING":
        case "PENDING_VBV":
            $message = $message ."order payment pending";
            break;
        case "AUTHORIZATION_FAILED":
            $message = $message ."order payment authorization failed";
            break;
        case "AUTHENTICATION_FAILED":
            $message = $message . "order payment authentication failed";
            break;
        default:
            $message = $message ."order status " . $status;
            break;
    }
    return $message;
}
 
 // POST ROUTE
 // block:start:construct-params
 if (isset($_POST["order_id"])) {
        $params = $_POST;
// block:end:construct-params
        $order = getOrder($params);
        //$message = getStatusMessage($order);
		
		$date=date("Y-m-d H:i:s");
		
		$ResTrackID=$order["order_id"];
		$ResPaymentId=$order["txn_id"];
		$ResAmount=$order["amount"];
		$ResResult=$order["status"];
		$txn_uuid=$order["txn_uuid"];
		$ResRef=$order["id"];
		
		
		$query="update ingl_payment_gateway set modifyDate='".$date."', pay_transaction='".$ResPaymentId."',pay_amount='".$ResAmount."',pay_date='".$date."',payment_status='".$ResResult."',payment_referance='".$ResRef."'  where recNo='". $ResTrackID."' ";
		$result=$conn->query($query) or die();

		$query1="select * from ingl_payment_gateway  where recNo='".$ResTrackID."'  ";
		$result1=$conn->query($query1);
		$num1=$result1->fetch_assoc();

				if($num1['payment_status']=="CHARGED" || $num1['payment_status']=="CAPTURED" || $num1['payment_status']=="APPROVED"  || $num1['payment_status']=="SUCCESS")
						{

						$message="Dear Student,<br>We have received your payment successfully.<br>
						Transaction Status :Successfull  (".$num1['payment_status'].")<br>
						Amount :Rs. ".$num1['pay_amount']."<br>
						Payment No: ". $num1['recNo']."<br>
						Name: ". $num1['Name']."<br>
						Transaction Reference No: ". $num1['payment_referance']."<br>
						Transaction ID: ". $num1['pay_transaction']."<br>
						";
						$message .="<br><br>Regards,<br>inlingua New Delhi";
			
						$fromEmail= "icentex@inlinguanewdelhi.in";
						$fromName="inlingua Payment Details";

						$tomail_array=array();
						$to=$num1['email'];
						//$to1="vikasumrao@sify.com";
						$to2="accounts@inlinguanewdelhi.com";
						
						$to=$_REQUEST['email'];
//print_r($to);
array_push($tomail_array,$to);
array_push($tomail_array,$to2);
						
		$subject="inlingua - Payment Received";
		$domain = "inlinguanewdelhi.in";
 		$smtpHost = "mail.$domain";
		$smtpUser = "admin@$domain";
		$smtpPassword = "5B&vp7pgm7flABvi";
	   $mail_type="S";
       $mail = new PHPMailer();
       
       if($mail_type=="S")
        {
	    
	$mail->IsSMTP();              // set mailer to use SMTP
        
        }
	
        if($mail_type=="N")
        {
	$mail->IsMail();
        }
        
        if($mail_type=="S")
        {
	$mail->Host = $smtpHost;  // specify main and backup server
	$mail->SMTPAuth = true;     // turn on SMTP authentication
	$mail->Username = $smtpUser;  // SMTP username
	$mail->Password = $smtpPassword; // SMTP password
        }

$mail->From = $fromEmail;
$mail->FromName = $fromName;
foreach ($tomail_array as $toAddress) 
{
	 //echo $toAddress;
	$mail->AddAddress($toAddress, "");
}


$mail->IsHTML(true);               // set email format to HTML
 

$mail->Subject = $subject;
$mail->Body    = $message;
//$mail->AddReplyTo("umraovikas@gmail.com","");
//$mail->AddAttachment($path);
	
if(!$mail->Send())
{
    echo "Message could not be sent on mailid: <font color='red'>'".$to."'</font><br>";
	echo "Please check the emailId.<br>";
    echo "Mailer Error: " . $mail->ErrorInfo;
    //exit;
}			
$url='https://inlinguanewdelhi.in/icentex/inlingua_payment/pay_receipt.php?ResResult='.$ResResult.'&ResTrackId='.$ResTrackID;
    header('Location: '.$url);
	die();
	

						
						
								  
					
			}
			else
			{

				/*
				IMPORTANT NOTE - MERCHANT SHOULD UPDATE 
				TRANACTION PAYMENT STATUS IN MERCHANT DATABASE AT THIS POSITION 
				AND THEN REDIRECT CUSTOMER ON RESULT PAGE
				*/


				$date=date("Y-m-d H:i:s");
				$query="update ingl_payment_gateway set modifyDate='".$date."', pay_transaction='".$ResTranId."',pay_amount='".$ResAmount."',pay_date='".$date."',payment_status='".$ResResult."',payment_referance='".$ResRef."'  where recNo='".$ResTrackID."' ";

				$result=$conn->query($query) or die("Error");

				$query1="select * from ingl_payment_gateway  where recNo='".$ResTrackID."'  ";

				$result1=$conn->query($query1);
				$num1=$result1->fetch_assoc();


		$url='https://inlinguanewdelhi.in/icentex/inlingua_payment/pay_receipt.php?ResResult='.$ResResult.'&ResTrackId='.$ResTrackID;
    header('Location: '.$url);
	die();
										
			}
					

	

} else if (isset($_GET["order_id"])) { // GET ROUTE
    $params = $_GET;
    $order = getOrder($params);
        
		$date=date("Y-m-d H:i:s");
		
		$ResTrackID=$order["order_id"];
		$ResPaymentId=$order["txn_id"];
		$ResAmount=$order["amount"];
		$ResResult=$order["status"];
		//$ResRef=$order["txn_uuid"];
		$ResRef=$order["id"];
		
		
		$query="update ingl_payment_gateway set modifyDate='".$date."', pay_transaction='".$ResPaymentId."',pay_amount='".$ResAmount."',pay_date='".$date."',payment_status='".$ResResult."',payment_referance='".$ResRef."'  where recNo='". $ResTrackID."' ";
		$result=$conn->query($query) or die();
 } else {
	 
	 $params = $_GET;
    $order = getOrder($params);
        
		$date=date("Y-m-d H:i:s");
		
		$ResTrackID=$order["order_id"];
		$ResPaymentId=$order["txn_id"];
		$ResAmount=$order["amount"];
		$ResResult=$order["status"];
		//$ResRef=$order["txn_uuid"];
		$ResRef=$order["id"];
		
		
		$query="update ingl_payment_gateway set modifyDate='".$date."',pay_transaction='".$ResPaymentId."',pay_amount='".$ResAmount."',pay_date='".$date."',payment_status='".$ResResult."',payment_referance='".$ResRef."'  where recNo='". $ResTrackID."' ";
		$result=$conn->query($query) or die();
	 
     http_response_code(400);
     echo "<p>Required Parameter Order Id is missing</p>";
     exit;
 }
?>