
<?php include '../au.com.gateway.client/GatewayClient.php'; ?>
<?php include '../au.com.gateway.client.config/ClientConfig.php'; ?>
<?php include '../au.com.gateway.client.component/RequestHeader.php'; ?>
<?php include '../au.com.gateway.client.component/CreditCard.php'; ?>
<?php include '../au.com.gateway.client.component/TransactionAmount.php'; ?>
<?php include '../au.com.gateway.client.component/Redirect.php'; ?>
<?php include '../au.com.gateway.client.facade/BaseFacade.php'; ?>
<?php include '../au.com.gateway.client.facade/Payment.php'; ?>
<?php include '../au.com.gateway.client.root/PaycorpRequest.php'; ?>
<?php include '../au.com.gateway.client.root/PaycorpResponse.php'; ?>
<?php include '../au.com.gateway.client.payment/PaymentCompleteRequest.php'; ?>
<?php include '../au.com.gateway.client.payment/PaymentCompleteResponse.php'; ?>
<?php include '../au.com.gateway.client.utils/IJsonHelper.php'; ?>
<?php include '../au.com.gateway.client.helpers/PaymentCompleteJsonHelper.php'; ?>
<?php include '../au.com.gateway.client.utils/HmacUtils.php'; ?>
<?php include '../au.com.gateway.client.utils/CommonUtils.php'; ?>
<?php include '../au.com.gateway.client.utils/RestClient.php'; ?>
<?php include '../au.com.gateway.client.enums/TransactionType.php'; ?>
<?php include '../au.com.gateway.client.enums/Version.php'; ?>
<?php include '../au.com.gateway.client.enums/Operation.php'; ?>
<?php include '../au.com.gateway.client.facade/Vault.php'; ?>
<?php include '../au.com.gateway.client.facade/Report.php'; ?>
<?php include '../au.com.gateway.client.facade/AmexWallet.php'; ?>

<?php
date_default_timezone_set('Asia/Colombo');
error_reporting(E_ALL);
ini_set('display_errors', 1);

$servername = "localhost";
$username = "kumbukri_krdbuse";
$password = "Q(T8d76#Abt3";
$dbname = "kumbukri_testkrdb";
//$conn = new mysqli($servername, $username, $password, $dbname);
$conn = mysqli_connect($servername, $username, $password, $dbname);

//if ($conn->connect_error) {
//    die("Connection failed: " . $conn->connect_error);
//} 

//if (mysqli_connect_errno()) {
//  die ("Failed to connect to MySQL: " . mysqli_connect_error());
//}

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$sqlph = "SELECT * FROM reservation WHERE paylink_hash = 1469702942.2403";
//$result = $conn->query($sql);
//$row = $result->fetch_assoc();
$resultph = mysqli_query($conn, $sqlph);
if (mysqli_num_rows($resultph) > 0) {
    $rowph = mysqli_fetch_assoc($resultph);
}


if($rowph['status'] == 2 || $rowph['status'] == 5){
    if($_GET['clientRef'] == '4udrJwNzTWqb428I'){
        $authToken = '41543216-9d01-427d-9403-9224fa2edaa4';
        $clientId = 14000048;
    }else{

    }

/*------------------------------------------------------------------------------
STEP1: Build ClientConfig object
------------------------------------------------------------------------------*/
$clientConfig = new ClientConfig();
$clientConfig->setServiceEndpoint("https://combank.paycorp.com.au/rest/service/proxy");
//$clientConfig->setAuthToken("41543216-9d01-427d-9403-9224fa2edaa4");
$clientConfig->setAuthToken($authToken);
//$clientConfig->setHmacSecret("4udrJwNzTWqb428I");
$clientConfig->setHmacSecret($_GET['clientRef']);
$clientConfig->setValidateOnly(FALSE);
/*------------------------------------------------------------------------------
STEP2: Build Client object
------------------------------------------------------------------------------*/
$client = new GatewayClient($clientConfig);
/*------------------------------------------------------------------------------
STEP3: Build PaymentCompleteRequest object
------------------------------------------------------------------------------*/
$completeRequest = new PaymentCompleteRequest();
//$completeRequest->setClientId(14000048);
$completeRequest->setClientId($clientId);
//$completeRequest->setClientId('11000010');
$completeRequest->setReqid($_GET['reqid']);

/******************$redirect = new Redirect();
$redirect->setReturnUrl("http://sandbox.kumbukriver.com/payment/receiptPage");
$redirect->setReturnMethod("POST");
$completeRequest->setRedirect($redirect);****************/

/*------------------------------------------------------------------------------
STEP4: Process PaymentCompleteRequest object
------------------------------------------------------------------------------*/
$completeResponse = $client->payment()->complete($completeRequest);
/*------------------------------------------------------------------------------
STEP5: Process PaymentCompleteResponse object
------------------------------------------------------------------------------*/

    if($completeResponse){
//        echo '<pre>';
//        var_dump($completeResponse);
//        die('hhy');
        
        //if($completeResponse->getResponseCode() == 00){
            $x = $completeResponse->getextraData();
            $reservationid = (explode("-",$x[0]['ADD-KEY-2']));
            
            $sqlres = "SELECT reservation_id,title,name,address,contact,email,arrive_date,book_date,departure_date,nights,adults,children,baby,room_id,nationality,adult_rate,child_rate,baby_rate,additional_rate,status,paylink_hash,reason,user,is_agent,agent_presentage FROM reservation WHERE reservation_id =".$reservationid[0];
            //$result = $conn->query($sql);
            //$row = $result->fetch_assoc();
            
            $resultres = mysqli_query($conn, $sqlres);
            if (mysqli_num_rows($resultres) > 0) {
                $rowres = mysqli_fetch_assoc($resultres);
            }
            
            $inv = create_invoice($rowres['adults'], $rowres['adult_rate'], $rowres['children'], $rowres['child_rate'], $rowres['baby'], $rowres['baby_rate'], $rowres['additional_rate'], $rowres['nights']);
            
            if($rowres['is_agent'] != NULL){
                $discount = $inv['grand_total']/100*$rowres['agent_presentage'];
                $invoice_amount = $inv['grand_total']-$discount;
            }else{
                $invoice_amount = $inv['grand_total'];
            }
            
            
            //
            
            $date = date('Y/m/d');
            $authCode = ($completeResponse->getauthCode() != '')? $completeResponse->getauthCode() : '';
            $cardExpiryMM = '';
            $cardExpiryYYYY = '';
            $card = $completeResponse->getcreditCard();
            $cardHolderName = ($card->getholderName() != '')? $card->getholderName() : '';
            $cardNo = ($card->getnumber() != '')? $card->getnumber() : '';
            $cardType = ($card->gettype() != '')? $card->gettype() : '';
            $expiry = ($card->getexpiry() != '')? $card->getexpiry() : '';
            $transaction = $completeResponse->gettransactionAmount();
            $metaData1 = ($transaction->getcurrency() != '')? $transaction->getcurrency() : '';
            $metaData2 = ($x[0]['ADD-KEY-2'] != '')? $x[0]['ADD-KEY-2'] : '';
            $paymentAmount = ($transaction->getpaymentAmount() != '')? $transaction->getpaymentAmount()/100 : '';
            $qc = '';
            $reqid = ($_GET['reqid'] != '')? $_GET['reqid'] : '';
            $responseCode = ($completeResponse->getresponseCode() != '')? $completeResponse->getresponseCode() : '';
            $responseText = ($completeResponse->getresponseText() != '')? $completeResponse->getresponseText() : '';
            $settlementDate = ($completeResponse->getsettlementDate() != '')? $completeResponse->getsettlementDate() : '';
            $token = ($completeResponse->gettoken() != '')? $completeResponse->gettoken() : '';
            $tokenReference = ($completeResponse->gettokenAuthTxnReference() != '')? $completeResponse->gettokenAuthTxnReference() : '';
            $tokenResponseText = ($completeResponse->gettokenAuthResponseText() != '')? $completeResponse->gettokenAuthResponseText() : '';
            $tokenized = ($completeResponse->gettokenized() != '')? $completeResponse->gettokenized() : '';
            $txnReference = ($completeResponse->gettxnReference() != '')? $completeResponse->gettxnReference() : '';
            $validationMessages = '';
            $reservation_id = ($reservationid[0] != '')? $reservationid[0] : '';
            $invoice_amount = $invoice_amount;
            $clientId = ($completeResponse->getclientId() != '')? $completeResponse->getclientId() : '';
            $clientIdHash = ($completeResponse->getclientIdHash() != '')? $completeResponse->getclientIdHash() : '';
            $transactionType = ($completeResponse->gettransactionType() != '')? $completeResponse->gettransactionType() : '';
            $clientRef = ($completeResponse->getclientRef() != '')? $completeResponse->getclientRef() : '';
            $cvcResponse = ($completeResponse->getcvcResponse() != '')? $completeResponse->getcvcResponse() : '';
            $addKey1 = ($x[0]['ADD-KEY-1'] != '')? $x[0]['ADD-KEY-1'] : '';
                                
//            echo $date."<br>".$authCode."<br>".$cardHolderName."<br>".$cardNo."<br>".$cardType."<br>".$expiry."<br>".$metaData1."<br>".$metaData2."<br>".$paymentAmount."<br>".$reqid."<br>".$responseCode."<br>".$responseText."<br>".$settlementDate."<br>".$token."<br>".$tokenReference."<br>".$tokenResponseText."<br>".$tokenized."<br>".$txnReference."<br>".$reservation_id."<br>".$invoice_amount."<br>".$clientId."<br>".$clientIdHash."<br>".$transactionType."<br>".$clientRef."<br>".$cvcResponse."<br>".$addKey1;
//            echo "<pre>";
//            var_dump($card->getholderName());
//            die('l123');
            
            //$sqliid = "INSERT INTO transactions (date, authCode, cardExpiryMM, cardExpiryYYYY, cardHolderName, cardNo, cardType, expiry, metaData1, metaData2, paymentAmount, qc, reqid, responseCode, responseText, settlementDate, token, tokenReference, tokenResponseText, tokenized, txnReference, validationMessages, reservation_id, invoice_amount, clientId, clientIdHash, transactionType, clientRef, cvcResponse, addKey1) VALUES 
            //(".mysqli_real_escape_string($conn, $date).", ".mysqli_real_escape_string($conn, $authCode).", ".mysqli_real_escape_string($conn, $cardExpiryMM).",".mysqli_real_escape_string($conn, $cardExpiryYYYY).",".mysqli_real_escape_string($conn, $cardHolderName).",".mysqli_real_escape_string($conn, $cardNo).",".mysqli_real_escape_string($conn, $cardType).",".mysqli_real_escape_string($conn, $expiry).",".mysqli_real_escape_string($conn, $metaData1).",".mysqli_real_escape_string($conn, $metaData2).",".mysqli_real_escape_string($conn, $paymentAmount).",".mysqli_real_escape_string($conn, $qc).",".mysqli_real_escape_string($conn, $reqid).",".mysqli_real_escape_string($conn, $responseCode).",".mysqli_real_escape_string($conn, $responseText).",".mysqli_real_escape_string($conn, $settlementDate).",".mysqli_real_escape_string($conn, $token).",".mysqli_real_escape_string($conn, $tokenReference).",".mysqli_real_escape_string($conn, $tokenResponseText).",".mysqli_real_escape_string($conn, $tokenized).",".mysqli_real_escape_string($conn, $txnReference).",".mysqli_real_escape_string($conn, $validationMessages).",".mysqli_real_escape_string($conn, $reservation_id).",".mysqli_real_escape_string($conn, $invoice_amount).",".mysqli_real_escape_string($conn, $clientId).",".mysqli_real_escape_string($conn, $clientIdHash).",".mysqli_real_escape_string($conn, $transactionType).",".mysqli_real_escape_string($conn, $clientRef).",".mysqli_real_escape_string($conn, $cvcResponse).",".mysqli_real_escape_string($conn, $addKey1).")";
            $sqliid = "INSERT INTO transactions (date, authCode, cardHolderName, cardNo, cardType, expiry, metaData1, metaData2, paymentAmount, qc, reqid, responseCode, responseText, settlementDate, token, tokenReference, tokenResponseText, tokenized, txnReference, validationMessages, reservation_id, invoice_amount, clientId, clientIdHash, transactionType, clientRef, cvcResponse, addKey1) VALUES ('".mysqli_real_escape_string($conn, $date)."', '".mysqli_real_escape_string($conn, $authCode)."','".mysqli_real_escape_string($conn, $cardHolderName)."','".mysqli_real_escape_string($conn, $cardNo)."','".mysqli_real_escape_string($conn, $cardType)."','".mysqli_real_escape_string($conn, $expiry)."','".mysqli_real_escape_string($conn, $metaData1)."','".mysqli_real_escape_string($conn, $metaData2)."','".mysqli_real_escape_string($conn, $paymentAmount)."','".mysqli_real_escape_string($conn, $qc)."','".mysqli_real_escape_string($conn, $reqid)."','".mysqli_real_escape_string($conn, $responseCode)."','".mysqli_real_escape_string($conn, $responseText)."','".mysqli_real_escape_string($conn, $settlementDate)."','".mysqli_real_escape_string($conn, $token)."','".mysqli_real_escape_string($conn, $tokenReference)."','".mysqli_real_escape_string($conn, $tokenResponseText)."','".mysqli_real_escape_string($conn, $tokenized)."','".mysqli_real_escape_string($conn, $txnReference)."','".mysqli_real_escape_string($conn, $validationMessages)."','".mysqli_real_escape_string($conn, $reservation_id)."','".mysqli_real_escape_string($conn, $invoice_amount)."','".mysqli_real_escape_string($conn, $clientId)."','".mysqli_real_escape_string($conn, $clientIdHash)."','".mysqli_real_escape_string($conn, $transactionType)."','".mysqli_real_escape_string($conn, $clientRef)."','".mysqli_real_escape_string($conn, $cvcResponse)."','".mysqli_real_escape_string($conn, $addKey1)."')";
            
//            if ($conn->query($sqliid) === TRUE) {
//                $last_id = $conn->insert_id;
//                echo "New record created successfully. Last inserted ID is: " . $last_id;
//            }else{
//                die('NOooo');
//            }
            
            if (mysqli_query($conn, $sqliid)) {
                $transaction_id = mysqli_insert_id($conn);
                //echo "New record created successfully. Last inserted ID is: " . $last_id;
            } 
            
            if($transaction_id){
                if($completeResponse->getResponseCode() == 00){
                    $reservationid = $reservation_id;
                    $payment_type = 3;
                    $amount = $paymentAmount;
                    $currency = $metaData1;
                    $transactionsid = $transaction_id;
                    
                    $sqlpay = "INSERT INTO payment (reservation_id, payment_type, date, amount, currency, transactions_id) VALUES ('".mysqli_real_escape_string($conn, $reservationid)."', '".mysqli_real_escape_string($conn, $payment_type)."', '".mysqli_real_escape_string($conn, $date)."', '".mysqli_real_escape_string($conn, $amount)."', '".mysqli_real_escape_string($conn, $currency)."', '".mysqli_real_escape_string($conn, $transactionsid)."')";
                    
                    if(mysqli_query($conn, $sqlpay)){
                        $status = 3;
                        //$sql = "UPDATE reservation SET status = '".mysqli_real_escape_string($conn, $status)."' WHERE reservation_id = '".$rowres['reservation_id']."'";
                        $sqlresup = "UPDATE reservation SET status = 3 WHERE reservation_id = '".$reservation_id."'";
                        
                        if(mysqli_query($conn, $sqlresup)){
                            die('ssssswwwwwwww...');
                        }

                        die('zzzzzzzlalalalal...');
                        
                    }
                    
                    die('lalalalal...');

//                    $payment['reservation_id'] = $reservation[0]['reservation_id'];
//                    $payment['payment_type'] = 3;
//                    $payment['amount'] = $paymentAmount;
//                    $payment['currency'] = $msg['metaData1'];
//                    $payment['transactions_id'] = $transaction_id;
                    
                    
                }else{
                    die($responseText);
                }
            }
            //else {
                //echo "Error: " . $sqliid . "<br>" . mysqli_error($conn);
            //}
            die('aasw123');
            
            
            
            
            
            //echo "<pre>";
            //var_dump($completeResponse);
            //die('l123');

            //$sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')";
            //if($conn->query($sql) === TRUE){
                //echo "New record created successfully";
            //}else{
                //echo "Error: " . $sql . "<br>" . $conn->error;
            //}

            $conn->close();

        //}else{
            //die('Payment Fail...');
        //}
    }
}else{
    die('NO');
}



//echo '<pre>';
//var_dump($x[0]['ADD-KEY-2']);
//die('l123');



//        $servername = "localhost";
    //        $username = "kumbukri_krdbuse";
    //        $password = "Q(T8d76#Abt3";
    //        $dbname = "kumbukri_testkrdb";
    //        $conn = new mysqli($servername, $username, $password, $dbname);
    //
    //        if ($conn->connect_error) {
    //            die("Connection failed: " . $conn->connect_error);
    //        } 


            //$reservationid = (explode("-",$completeResponse->extraData('ADD-KEY-2')));




//        $sql = "SELECT * FROM reservation WHERE paylink_hash = 1469702942.2403";
//        $result = $conn->query($sql);
//        $row = $result->fetch_assoc();
        
//        echo '<pre>';
//        var_dump($completeResponse->responseCode);


//    die($completeResponse->getResponseCode());
    
    //header('Location: http://sandbox.kumbukriver.com/payment/receiptPage');
//    echo '<pre>';
//    var_dump($completeResponse);
    
//    echo '
//    <form action="http://sandbox.kumbukriver.com/payment/receiptPage" method="POST" name="sendresponce" id="sendresponce">
//        <input type="hidden" name="metaData1" value="aaaaaaa"/>
//        <input type="hidden" name="metaData2" value="ssssssssss"/>
//        <input type="hidden" name="paymentAmount" value="ddddddddddd"/>
//        <input type="hidden" name="currency" value="ffffffffffffff"/>
//        <input type="submit">
//    </form>
//    ';



/*echo '<br><br>PCW Payment-Complete Respopnse: ----------------------------------';
echo '<br>Txn Reference : ' . $completeResponse->getTxnReference();
echo '<br>Response Code : ' . $completeResponse->getResponseCode();
echo '<br>Response Text : ' . $completeResponse->getResponseText();
echo '<br>Settlement Date : ' . $completeResponse->getSettlementDate();
echo '<br>Auth Code : ' . $completeResponse->getAuthCode();
echo '<br>Token : ' . $completeResponse->getToken();
echo '<br>Token Response Text: ' . $completeResponse->getTokenResponseText();
echo '<br>----------------------------------------------------------------------';*/
?>

<!--    <script type="text/javascript">
        document.getElementById('sendresponce').submit(); // SUBMIT FORM
    </script>-->


<?php
function create_invoice($adults, $adult_rate, $children, $child_rate, $baby, $baby_rate, $additional_rate, $nights){
        $additional_persons = '0';
        $additional_persons_total = 0;

        if($adults>2){//check any aditional persons
            $additional_persons = $adults - 2;//number of aditional persons
            $additional_persons_total = $additional_rate * $additional_persons;//aditional persons totle price
            $adultsno = 2;//number of adults
            $adults_total = $adult_rate * $adultsno;//adults totle price
        }else{
            //elseif($adults <= 2){//check only adults
            $adults = 2;
            $adults_total = $adult_rate * $adults;//adults totle price
            $adultsno = $adults;//number of adults
            //}
        }

        $children_total = $child_rate * $children;//children totle price
        $baby_total = $baby_rate * $baby;//baby totle price
        $total = $adults_total + $children_total + $baby_total + $additional_persons_total;//total 
        $grand_total = $total * $nights;//full amount
        
        $return['adultsno'] = $adultsno;
        $return['adults_total'] = $adults_total;
        $return['additional_persons'] = $additional_persons;
        $return['additional_persons_total'] = $additional_persons_total;
        $return['children_total'] = $children_total;
        $return['baby_total'] = $baby_total;
        $return['total'] = $total;
        $return['grand_total'] = $grand_total;
        return $return;
    }
?>