<?php

/*
	Verwerk de status rapportage/update van de Rabo OmniKassa
	Report URL / automaticResponseUrl
*/
// Laad instellingen & bibliotheek
require_once 'settings.php';
require_once 'omnikassa.cls.5.php';
// Controleer of de benodigde POST-data is ontvangen
if (empty($_POST['Data']) || empty($_POST['Seal'])) {
    $sHtml = '<p>Ongeldige Omnikassa Response.</p>';
} else {
    $oOmniKassa = new OmniKassa();
    $oOmniKassa->setSecurityKey($aSettings['security_key'], $aSettings['security_key_version']);
    $aOmniKassaResponse = $oOmniKassa->validate();
    if ($aOmniKassaResponse && is_array($aOmniKassaResponse)) {
        // De referentiecode die bij het starten van het betaalverzoek is opgegeven, belangrijk om in de
        // database de bijbehorende bestelling op te zoeken.
        $sTransactionReference = $aOmniKassaResponse['transaction_reference'];
        // De huidige status van de betaalverzoek. De ontvangen responseCode wordt door de bibliotheek
        // omgezet in de waarde SUCCESS, PENDING, CANCELLED, EXPIRED of FAILED.
        $sTransactionStatus = $aOmniKassaResponse['transaction_status'];
        // Bij sommige betaalmethoden (zoals iDEAL) wordt deze waarde gevuld met het "authorisationId",
        // dit is de door de iDEAL server toegewezen unieke TransactionID.
        $sTransactionId = $aOmniKassaResponse['transaction_id'];
        // Het orderID (Alleen de karakters [a-zA-Z0-9] en gelimiteerd tot 32 karakters).
        // Door de mutaties die soms plaats vinden in dit orderID is dit doorgaans GEEN goede
        // waarde om de bestelling op te zoeken in de database.
        $sOrderId = $aOmniKassaResponse['order_id'];
        // Houd er rekening mee dat de status mogelijk al is verwerkt door de "Return URL"
    function prepareVariablesIdealOmnikassa()
    {
        //TODO - remove this - this is only to calculate exact amount
        $this->Reservation_Details_EMail = $this->getReservationDetails($this, false);
        $query = " \tSELECT *\r\n\t\t\t\t\t\tFROM #__hotelreservation_paymentprocessors \r\n\t\t\t\t\t\tWHERE is_available = 1 AND paymentprocessor_id = " . $this->payment_processor_sel_id . "\r\n\t\t\t\t\t\tORDER BY paymentprocessor_name\r\n\t\t\t\t\t\t";
        $this->_db->setQuery($query);
        $configuration =& $this->_db->loadObject();
        if ($configuration->paymentprocessor_type == PROCESSOR_IDEAL_OMNIKASSA) {
            $iDeal = new OmniKassa();
            if ($configuration->paymentprocessor_mode == 'test') {
                $iDeal->setPaymentServerUrl($configuration->paymentprocessor_address_devel);
            } else {
                $iDeal->setPaymentServerUrl($configuration->paymentprocessor_address);
            }
            $iDeal->setMerchantId($configuration->paymentprocessor_username);
            $iDeal->setSecretKey($configuration->paymentprocessor_password);
            $iDeal->setKeyVersion(2);
            $iDeal->addPaymentMeanBrand("IDEAL,VISA,MASTERCARD,MAESTRO,MINITIX");
            $iDeal->setCurrencyNumericCode(978);
            $iDeal->setNormalReturnUrl(JURI::base() . "index.php/component/jhotelreservation/omnikassaresponse");
            $iDeal->setAutomaticResponseUrl(JURI::base() . "index.php/component/jhotelreservation/omnikassaautomaticresponse");
            $iDeal->setAmount(my_round($this->total_cost > 0 ? $this->total_cost : $this->total - $this->total_payed, 2));
            $iDeal->setTransactionReference($this->getStringIDConfirmation());
            // $iDeal->setOrderId(1);
            $iDeal->setCustomerLanguage('nl');
            ?>
				<form target='_self' name='form_<?php 
            echo $configuration->paymentprocessor_type;
            ?>
' id= 'form_<?php 
            echo $configuration->paymentprocessor_type;
            ?>
' method='post' action='<?php 
            echo $iDeal->getPaymentServerUrl();
            ?>
'>
				
			
				<div class='div_redirect_paysite'>
					<?php 
            echo JText::_('LNG_WAIT_TO_REDIRECT_PAY_SITE', true);
            ?>
				</div>
				
					<?php 
            echo $iDeal->getHtmlFields();
            ?>
			
				</form>
			<script>
				window.onload = function(){
											//alert(document.forms['form_<?php 
            echo $configuration->paymentprocessor_type;
            ?>
']);
											document.forms['form_<?php 
            echo $configuration->paymentprocessor_type;
            ?>
'].submit();
										};
			</script>
			<?php 
        }
    }
// Bepaal het ordernummer (wordt vermeld in het Dashboard van de Rabo OmniKassa en bij de afschrijving van de klant).
// Normaal wordt dit nummer uit het systeem gehaald, in dit voorbeeld wordt een random nummer gebruikt
$sOrderId = $orderId;
// Bepaal het totaalbedrag dat de klant moet betalen in de Rabo OmniKassa
// Normaal wordt dit bedrag uit het systeem gehaald, in dit voorbeeld wordt een random bedrag gebruikt tussen de 1.00 en de 250.00 EURO
$fOrderAmount = round($totalPrice, 2);
// Als u geen betaalmethode opgeeft, dan ziet de klant in de Rabo OmniKassa een overzicht met alle beschikbare betaalmethoden waarvan hij er 1 kan kiezen.
// Als u 1 betaalmethode instelt, wordt het scherm met de betaalkeuze overgeslagen, en start de betaling gelijk.
// Als u meerdere betaalmethoden instelt, dan ziet de klant in de Rabo OmniKassa alleen de opgegeven betaalmethoden waarvan hij er 1 kan kiezen.
// Note: u kunt alleen betaalmethoden aanbieden die u bij de Rabobank hebt aangevraagd.
// Beschikbare betaalmethoden: IDEAL, MINITIX, VISA, MASTERCARD, MAESTRO, INCASSO, ACCEPTGIRO, REMBOURS.
$aPaymentMethods = array();
// Laat de klant zelf een betaalmethode kiezen op de betaalpagina van de Rabo OmniKassa.
// $aPaymentMethods = array('IDEAL'); // Alleen iDEAL toestaan (keuzescherm wordt overgeslagen)
// $aPaymentMethods = array('IDEAL', 'MINITIX', 'VISA', 'MASTERCARD', 'MAESTRO'); // iDEAL, MiniTix, Visa, Mastercard of Maestro toestaan.
$oOmniKassa = new OmniKassa($aSettings['test_mode']);
$oOmniKassa->setMerchant($aSettings['merchant_id']);
$oOmniKassa->setSecurityKey($aSettings['security_key'], $aSettings['security_key_version']);
// Stel de return URL en report URL in (normalReturnUrl, automaticResponseUrl)
$oOmniKassa->setReportUrl($aSettings['website_url'] . $this->generateUrl('subscriber_frondend_confirmation', array('id' => $item->getId())));
// Mag geen additionele parameters bevatten
$oOmniKassa->setReturnUrl($aSettings['website_url'] . $this->generateUrl('subscriber_frondend_confirmation', array('id' => $item->getId())));
// Mag geen additionele parameters bevatten
// Stel order informatie in
$oOmniKassa->setOrderId($sOrderId);
// Unieke order referentie, tot 32 karakters ([a-zA-Z0-9]+)
$oOmniKassa->setAmount($fOrderAmount);
// Bedrag (in EURO's, tot 2 decimalen, gebruik een punt als scheidingsteken)
// Stel de beschikbare betaalmethode(n) in voor de koper (indien ingesteld).
if (isset($aPaymentMethods) && is_array($aPaymentMethods) && sizeof($aPaymentMethods)) {
    $oOmniKassa->setPaymentMethod($aPaymentMethods);