Beispiel #1
1
	/**
	 * Check PayZen response, save order and empty cart (if payment success) when server notification is received from payment platform.
	 *
	 * @param string $return_context session id
	 * @param int    $virtuemart_order_id virtuemart order primary key concerned by payment
	 * @param string $new_status new order status
	 * @return
	 */
	function plgVmOnPaymentNotification () {
		// platform params and payment data
		$data = JRequest::get ('post');

		$this->logInfo ('plgVmOnPaymentNotification START ', 'error');
		if (!array_key_exists ('vads_order_id', $data) || !isset($data['vads_order_id'])) {
			$this->logInfo ('plgVmOnPaymentNotification -- Another method was selected, do nothing : ', 'error');

			return NULL; // Another method was selected, do nothing
		}

		// Retrieve order info from database
		if (!class_exists ('VirtueMartModelOrders')) {
			require(JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php');
		}

		$virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber ($data['vads_order_id']);
		// Order not found
		/*
			  if (!$virtuemart_order_id) {
			  $this->logInfo('plgVmOnPaymentNotification -- payment check attempted on non existing order : ' . $resp->get('order_id'), 'error');

			  $response .= '<span style="display:none">OK-';
			  $response .= $data['vads_hash'];
			  $response .= "=Impossible de retrouver la commande\n";
			  $response .= '</span>';

			  die($response);
			  }
			 */

		// Payment params
		$payment_data = $this->getDataByOrderId ($virtuemart_order_id);
		/*
			  if (!$payment_data || !($payment = $this->getPaymentMethod($payment_data->payment_method_id))) {
			  $this->logInfo('plgVmOnPaymentNotification -- payment data not found: exit ', 'ERROR');

			  $response .= '<span style="display:none">OK-';
			  $response .= $data['vads_hash'];
			  $response .= "=Méthode de paiement introuvable\n";
			  $response .= '</span>';

			  die($response);
			  }
			 */
		$method = $this->getVmPluginMethod ($payment_data->virtuemart_paymentmethod_id);
		if (!$this->selectedThisElement ($method->payment_element)) {
			return FALSE;
		}

		$this->_debug = $method->debug;
		$custom = $this->_name . '_custom';
		$return_context = $payment_data->$custom;

		// Load API
		if (!class_exists ('VadsApi')) {
			require(JPATH_VMPAYMENTPLUGIN . DS . 'payzen' . DS . 'payzen_api.php');
		}

		$api = new VadsApi();
		$resp = $api->getResponse (
			$data, $method->ctx_mode, $method->key_test, $method->key_prod
		);

		if (!$resp->isAuthentified ()) {
			$this->logInfo ('plgVmOnPaymentNotification -- suspect request sent to plgVmOnPaymentNotification, IP : ' . $_SERVER['REMOTE_ADDR'], 'error');

			die($resp->getOutputForGateway ('auth_fail'));
		}

		$order = VirtueMartModelOrders::getOrder ($virtuemart_order_id);
		$order_status_code = $order['items'][0]->order_status;

		// Order not processed yet
		if ($order_status_code == 'P') {
			if ($resp->isAcceptedPayment ()) {
				$currency = $api->findCurrencyByNumCode ($resp->get ('currency'))->alpha3;
				$amount = ($resp->get ('amount') / 100) . ' ' . $currency;

				$new_status = $method->order_success_status;

				$this->logInfo ('plgVmOnPaymentNotification -- payment process OK, ' . $amount . ' paid for order ' . $resp->get ('order_id') . ', new status ' . $new_status, 'message');
				echo ($resp->getOutputForGateway ('payment_ok'));
			}
			else {
				$new_status = $method->order_failure_status;

				$this->logInfo ('plgVmOnPaymentNotification -- payment process error ' . $resp->message . ', new status ' . $new_status, 'ERROR');
				echo ($resp->getOutputForGateway ('payment_ko'));
			}

			// Save platform response
			$this->managePaymentResponse ($virtuemart_order_id, $resp, $new_status, $return_context);
		}
		else {
			// Order already processed
			if ($resp->isAcceptedPayment ()) {
				echo ($resp->getOutputForGateway ('payment_ok_already_done'));
			}
			else {
				echo ($resp->getOutputForGateway ('payment_ko_on_order_ok'));
			}
		}

		die();
	}
 function plgVmOnPaymentResponseReceived(&$html)
 {
     // the payment itself should send the parameter needed.
     $virtuemart_paymentmethod_id = JRequest::getInt('pm', 0);
     $vendorId = 0;
     if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) {
         return null;
         // Another method was selected, do nothing
     }
     if (!$this->selectedThisElement($method->payment_element)) {
         return false;
     }
     if (!class_exists('VirtueMartCart')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
     }
     $payment_data = JRequest::get('post');
     $payment_name = $this->renderPluginName($method);
     $html = $this->_getPaymentResponseHtml($payment_data, $payment_name);
     if (!empty($payment_data)) {
         vmdebug('plgVmOnPaymentResponseReceived', $payment_data);
         $order_number = $payment_data['invoice'];
         $return_context = $payment_data['custom'];
         if (!class_exists('VirtueMartModelOrders')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
         }
         $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number);
         $payment_name = $this->renderPluginName($method);
         $html = $this->_getPaymentResponseHtml($payment_data, $payment_name);
         if ($virtuemart_order_id) {
             // send the email ONLY if payment has been accepted
             if (!class_exists('VirtueMartModelOrders')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
             }
             $modelOrder = new VirtueMartModelOrders();
             $orderitems = $modelOrder->getOrder($virtuemart_order_id);
             $nb_history = count($orderitems['history']);
             //vmdebug('history', $orderitems);
             if (!class_exists('shopFunctionsF')) {
                 require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
             }
             if ($nb_history == 1) {
                 if (!class_exists('shopFunctionsF')) {
                     require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
                 }
                 shopFunctionsF::sentOrderConfirmedEmail($orderitems);
                 $this->logInfo('plgVmOnPaymentResponseReceived, sentOrderConfirmedEmail ' . $order_number, 'message');
                 $order['order_status'] = $orderitems['items'][$nb_history - 1]->order_status;
                 $order['virtuemart_order_id'] = $virtuemart_order_id;
                 $order['customer_notified'] = 0;
                 $order['comments'] = JText::sprintf('VMPAYMENT_PAYPAL_EMAIL_SENT');
                 $modelOrder->updateStatusForOneOrder($virtuemart_order_id, $order, true);
             }
         }
     }
     //We delete the old stuff
     // get the correct cart / session
     $cart = VirtueMartCart::getCart();
     $cart->emptyCart();
     return true;
 }
Beispiel #3
0
 function plgVmOnPaymentResponseReceived(&$html)
 {
     //language
     if (!class_exists('VirtueMartCart')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
     }
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $lang = JFactory::getLanguage();
     $filename = 'com_virtuemart';
     $lang->load($filename, JPATH_ADMINISTRATOR);
     $vendorId = 0;
     $payment_data = JRequest::get('request');
     $order_id = substr($payment_data['VK_REF'], 0, -1);
     $pmethod = VirtueMartModelOrders::getOrder($order_id);
     $payment_method = $pmethod['details']['BT']->virtuemart_paymentmethod_id;
     if (!($method = $this->getVmPluginMethod($payment_method))) {
         return null;
         // Another method was selected, do nothing
     }
     if (!$this->selectedThisElement($method->payment_element)) {
         return false;
     }
     $payment_name = $this->renderPluginName($method);
     $vk_array = array();
     foreach ($payment_data as $key => $value) {
         if (substr($key, 0, 3) == "VK_") {
             $vk_array[$key] = $value;
         }
     }
     $sig_result = $this->signature_check($vk_array, $method->pub_key);
     $html = '<table>' . "\n";
     if ($sig_result == 0) {
         $html .= $this->getHtmlRow(SEB_BANK_ERROR, " ");
     }
     $html .= '</table>' . "\n";
     $config =& JFactory::getConfig();
     $dbprefix = $config->getValue('dbprefix');
     $order = new VirtueMartModelOrders();
     $order = $order->getOrder($order_id);
     $cart = VirtueMartCart::getCart();
     if ($_REQUEST['VK_SERVICE'] == 1101 && $sig_result == 1) {
         $html .= $this->_getPaymentResponseHtml($payment_data, $payment_name);
         if (isset($cart->_dataValidated)) {
             if ($order['details']['BT']->order_status != $method->status_success) {
                 $this->update_status($method->status_success, $order_id, "VMPAYMENT_SEB_PAYMENT_CONFIRMED");
             }
             echo JText::_("VMPAYMENT_SEB_SUCCESS_MESSAGE");
         }
     } elseif ($_REQUEST['VK_SERVICE'] == 1901 && $sig_result == 1) {
         // makse on tühistatud
         if ($order['details']['BT']->order_status != $method->status_canceled) {
             $this->update_status($method->status_canceled, $order_id, "VMPAYMENT_SEB_PAYMENT_CANCELED");
         }
         echo JText::_("VMPAYMENT_SEB_FAIL_MESSAGE");
     }
     $cart->emptyCart();
     $url = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=orders');
     echo '<head><meta http-equiv="Refresh" content="5;URL=' . $url . '"></head>';
     return true;
 }
Beispiel #4
0
 function plgVmOnPaymentResponseReceived(&$html)
 {
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $paymentParams = JRequest::get('request');
     foreach ((array) $paymentParams as $f => $v) {
         if ($f == 'json') {
             $macFields = $v;
         }
     }
     if (!$macFields) {
         return NULL;
     }
     $paymentMessage = @json_decode($macFields, true);
     if (!$paymentMessage) {
         $paymentMessage = @json_decode(htmlspecialchars_decode($paymentMessage), true);
     }
     if (!$paymentMessage || !isset($paymentMessage['signature']) || !$paymentMessage['signature']) {
         return NULL;
     }
     $virtuemart_order_id = $paymentMessage['paymentId'];
     $order = VirtueMartModelOrders::getOrder($virtuemart_order_id);
     if (!($method = $this->getVmPluginMethod($order['details']['BT']->virtuemart_paymentmethod_id))) {
         return null;
         // Another method was selected, do nothing
     }
     if (!$this->selectedThisElement($method->payment_element)) {
         return false;
     }
     $this->_initConfigVariables($method);
     $paymentValidationResult = $this->validateBanklinkPayment($paymentParams);
     if ($paymentValidationResult['status'] == 'success') {
         if ($order['details']['BT']->order_status != $method->status_success) {
             $this->update_status($method->status_success, $virtuemart_order_id, "MAKSEKESKUS_PAYMENT_CONFIRMED");
         }
         echo JText::_("MAKSEKESKUS_SUCCESS_MESSAGE");
         if (!class_exists('VirtueMartCart')) {
             require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
         }
         $cart = VirtueMartCart::getCart();
         $cart->emptyCart();
         $url = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=orders');
     } else {
         if ($paymentValidationResult['status'] == 'cancelled') {
             if ($order['details']['BT']->order_status != $method->status_canceled) {
                 $this->update_status($method->status_canceled, $virtuemart_order_id, "MAKSEKESKUS_PAYMENT_CANCELED");
             }
             echo JText::_("MAKSEKESKUS_FAIL_MESSAGE");
             $url = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=cart');
             $this->handlePaymentUserCancel($virtuemart_order_id);
         } else {
             if ($paymentValidationResult['status'] == 'received') {
                 $url = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart');
             } else {
                 //total failure
                 echo JText::_("MAKSEKESKUS_FAIL_MESSAGE");
                 $url = JROUTE::_(JURI::root() . 'index.php');
             }
         }
     }
     echo '<head><meta http-equiv="Refresh" content="5;URL=' . $url . '"></head>';
     return true;
 }
 function plgVmOnPaymentResponseReceived(&$html)
 {
     // the payment itself should send the parameter needed.
     $virtuemart_paymentmethod_id = JRequest::getInt('pm', 0);
     $vendorId = 0;
     if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) {
         return null;
         // Another method was selected, do nothing
     }
     if (!$this->selectedThisElement($method->payment_element)) {
         return false;
     }
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $order_number = JRequest::getVar('on');
     if (!$order_number) {
         return false;
     }
     $db = JFactory::getDBO();
     $query = 'SELECT ' . $this->_tablename . '.`virtuemart_order_id` FROM ' . $this->_tablename . " WHERE  `order_number`= '" . $order_number . "'";
     $db->setQuery($query);
     $virtuemart_order_id = $db->loadResult();
     if (!$virtuemart_order_id) {
         return null;
     }
     if ($virtuemart_order_id) {
         if (!class_exists('VirtueMartCart')) {
             require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
         }
         // get the correct cart / session
         $cart = VirtueMartCart::getCart();
         // send the email ONLY if payment has been accepted
         if (!class_exists('VirtueMartModelOrders')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
         }
         $order = new VirtueMartModelOrders();
         $orderitems = $order->getOrder($virtuemart_order_id);
         //$cart->sentOrderConfirmedEmail($orderitems);
         $cart->emptyCart();
     }
     return true;
 }
    function plgVmOnShowOrderBEPayment($virtuemart_order_id, $payment_method_id)
    {
        $order = new VirtueMartModelOrders();
        $my_order = $order->getOrder($virtuemart_order_id);
        $html = '';
        $htmlStatus = '';
        $gettpstatus = vRequest::getString('gettpstatus', 0);
        if ($gettpstatus == 1) {
            $method = $this->getVmPluginMethod($payment_method_id);
            require_once 'cs/TPConnector.php';
            $tpconnector = new TPConnector();
            $connector_data = $tpconnector->createTPConnector($method);
            $connector = $connector_data['connector'];
            $security_code = $connector_data['security'];
            $merchant = $connector_data['merchant'];
            $optionsGS = array('MERCHANT' => $merchant, 'OPERATIONID' => $my_order['details']['BT']->order_number);
            $status = $connector->getStatus($optionsGS);
            if (isset($status['Operations'])) {
                if (is_array($status['Operations'])) {
                    foreach ($status['Operations'] as $index => $value) {
                        $htmlStatus .= '<tr>';
                        $htmlStatus .= '<td>';
                        $htmlStatus .= '' . $index . ': ';
                        $htmlStatus .= '</td>';
                        $htmlStatus .= '<td>';
                        $htmlStatus .= '' . $value . '';
                        $htmlStatus .= '</td>';
                        $htmlStatus .= '</tr>';
                    }
                }
            }
        }
        $html = '<table class="adminlist table ">' . "\n";
        $html .= '<thead>' . "\n";
        $html .= '<tr>' . "\n";
        $html .= '<th colspan="2">' . "\n";
        $html .= 'TodoPago Status' . "\n";
        $html .= '</th>' . "\n";
        $html .= '</tr>' . "\n";
        $html .= '</thead>' . "\n";
        $html .= '<tr>' . "\n";
        $html .= '<td colspan="2">' . "\n";
        $html .= '<input onclick="getTPStatus()" style="cursor:pointer;width: 300px; margin-left: auto; display: block; margin-right: auto; height: 50px;" id="updateTPStatus" type="button" value="Get TodoPago Status">' . "\n";
        $html .= '</td>' . "\n";
        $html .= '</tr>' . "\n";
        $html .= $htmlStatus;
        $html .= '</table>' . "\n";
        $js = '<script type="text/javascript">

	function getTPStatus(){

		window.location.href =  window.location.href+"&gettpstatus=1";

	}

	</script>';
        $html .= $js;
        return $html;
    }
 function plgVmOnPaymentNotification()
 {
     if (!JRequest::getInt('pro', 0)) {
         return NULL;
     }
     $format = JRequest::getWord('format', '');
     $robologin = JRequest::getVar('robologin', '');
     if ($robologin && $format == 'json') {
         // список доступных платежных методов на робокассе
         $current = JRequest::getVar('current', '0');
         $data = JFactory::getXML("http://merchant.roboxchange.com/WebService/Service.asmx/GetCurrencies?MerchantLogin="******"&Language=ru");
         $result = $data->Result->Code;
         $json = new stdClass();
         if ($result != 0) {
             $json->html = htmlspecialchars($data->Result->Description);
             die(json_encode($json));
         }
         $html = '<select id="paramspaymethod" name="params[paymethod]">';
         $html .= '<option value="0">' . JText::_('VMPAYMENT_STT_ROBOKASSA_PRO_PAYMETHODS_ALL') . '</option>';
         foreach ($data->Groups->Group as $element) {
             $html .= '<optgroup label="' . htmlspecialchars($element->getAttribute('Description')) . '">';
             foreach ($element->Items->Currency as $field) {
                 $label = $field->getAttribute('Label');
                 $name = $field->getAttribute('Name');
                 $s = '';
                 if ($label == $current) {
                     $s = ' selected="selected"';
                 }
                 $html .= '<option value="' . htmlspecialchars($label) . '"' . $s . '>' . htmlspecialchars($name) . '</option>';
             }
             $html .= '</optgroup>';
         }
         $html .= '</select>';
         $json->html = $html;
         die(json_encode($json));
     }
     //Изменение статуса заказа на Confirmed после оплаты счета
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $robokassa_data = JRequest::get('post');
     $virtuemart_order_id = $robokassa_data['InvId'];
     if (!array_key_exists('InvId', $robokassa_data) || !isset($robokassa_data['InvId'])) {
         return NULL;
         // Another method was selected, do nothing
     }
     if (!$virtuemart_order_id) {
         return;
     }
     $sum = $robokassa_data['OutSum'];
     $notify_signature = $robokassa_data['SignatureValue'];
     $payment = $this->getDataByOrderId($virtuemart_order_id);
     $method = $this->getVmPluginMethod($payment->virtuemart_paymentmethod_id);
     if (!isset($method->payment_currency) || !$method->payment_currency) {
         $this->getPaymentCurrency($method);
     }
     if (!class_exists('CurrencyDisplay')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'helpers' . DS . 'currencydisplay.php';
     }
     $paymentCurrency = CurrencyDisplay::getInstance($method->payment_currency);
     $order_model = new VirtueMartModelOrders();
     $order_info = $order_model->getOrder($virtuemart_order_id);
     $totalInPaymentCurrency = round($paymentCurrency->convertCurrencyTo($method->payment_currency, $order_info['details']['BT']->order_total, false), 2);
     $mrh_pass2 = $method->mrh_pass2;
     $sig = strtoupper(md5("{$sum}:{$virtuemart_order_id}:{$mrh_pass2}"));
     if ($sig == $notify_signature && $sum == $totalInPaymentCurrency) {
         $new_status = $method->status_success;
         $modelOrder = VmModel::getModel('orders');
         $order = array();
         $order['order_status'] = $new_status;
         $order['customer_notified'] = 1;
         $order['comments'] = 'robokassaPro';
         $modelOrder->updateStatusForOneOrder($virtuemart_order_id, $order, true);
         die('OK' . $virtuemart_order_id);
     } else {
         die('error signature or sum');
     }
     return true;
 }
 function plgVmOnPaymentResponseReceived(&$html)
 {
     // the payment itself should send the parameter needed;
     $virtuemart_paymentmethod_id = JRequest::getInt('pm', 0);
     $vendorId = 0;
     if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) {
         return null;
         // Another method was selected, do nothing
     }
     if (!$this->selectedThisElement($method->payment_element)) {
         return false;
     }
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $order_number = JRequest::getVar('on');
     $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number);
     $payment_name = $this->renderPluginName($method);
     $html = '<table>' . "\n";
     $html .= $this->getHtmlRow('PAYKEEPER_PAYMENT_NAME', $payment_name);
     $html .= $this->getHtmlRow('PAYKEEPER_ORDER_NUMBER', $virtuemart_order_id);
     $html .= $this->getHtmlRow('PAYKEEPER_STATUS', JText::_('VMPAYMENT_PAYKEEPER_STATUS_SUCCESS'));
     $html .= '</table>' . "\n";
     if ($virtuemart_order_id) {
         if (!class_exists('VirtueMartCart')) {
             require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
         }
         // get the correct cart / session
         $cart = VirtueMartCart::getCart();
         // send the email ONLY if payment has been accepted
         if (!class_exists('VirtueMartModelOrders')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
         }
         $order = new VirtueMartModelOrders();
         $orderitems = $order->getOrder($virtuemart_order_id);
         $cart->sentOrderConfirmedEmail($orderitems);
         $cart->emptyCart();
     }
     return true;
 }
 function plgVmOnPaymentResponseReceived(&$html)
 {
     // the payment itself should send the parameter needed.
     $virtuemart_paymentmethod_id = JRequest::getInt('pm', 0);
     $vendorId = 0;
     if (!($method = $this->getVmPluginMethod($virtuemart_paymentmethod_id))) {
         return null;
         // Another method was selected, do nothing
     }
     if (!$this->selectedThisElement($method->payment_element)) {
         return false;
     }
     $payment_data = JRequest::get('post');
     vmdebug('plgVmOnPaymentResponseReceived', $payment_data);
     $order_number = $payment_data['invoice'];
     $return_context = $payment_data['custom'];
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number);
     $payment_name = $this->renderPluginName($method);
     $html = $this->_getPaymentResponseHtml($payment_data, $payment_name);
     if ($virtuemart_order_id) {
         if (!class_exists('VirtueMartCart')) {
             require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
         }
         // get the correct cart / session
         $cart = VirtueMartCart::getCart();
         // send the email ONLY if payment has been accepted
         if (!class_exists('VirtueMartModelOrders')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
         }
         $order = new VirtueMartModelOrders();
         $orderitems = $order->getOrder($virtuemart_order_id);
         //vmdebug('PaymentResponseReceived CART', $orderitems);
         $cart->sentOrderConfirmedEmail($orderitems);
         //We delete the old stuff
         $cart->emptyCart();
     }
     return true;
 }
Beispiel #10
0
 function plgVmOnPaymentNotification()
 {
     if (empty($_POST)) {
         $fap = json_decode(file_get_contents("php://input"));
         $_POST = array();
         foreach ($fap as $key => $val) {
             $_POST[$key] = $val;
         }
     }
     $_SERVER['REQUEST_URI'] = '';
     $_SERVER['SCRIPT_NAME'] = '';
     $_SERVER['QUERY_STRING'] = '';
     define('_JEXEC', 1);
     define('DS', DIRECTORY_SEPARATOR);
     $option = 'com_virtuemart';
     $my_path = dirname(__FILE__);
     $my_path = explode(DS . 'plugins', $my_path);
     $my_path = $my_path[0];
     if (file_exists($my_path . '/defines.php')) {
         include_once $my_path . '/defines.php';
     }
     if (!defined('_JDEFINES')) {
         define('JPATH_BASE', $my_path);
         require_once JPATH_BASE . '/includes/defines.php';
     }
     define('JPATH_COMPONENT', JPATH_BASE . '/components/' . $option);
     define('JPATH_COMPONENT_SITE', JPATH_SITE . '/components/' . $option);
     define('JPATH_COMPONENT_ADMINISTRATOR', JPATH_ADMINISTRATOR . '/components/' . $option);
     require_once JPATH_BASE . '/includes/framework.php';
     $app = JFactory::getApplication('site');
     $app->initialise();
     if (!class_exists('VmConfig')) {
         require JPATH_ADMINISTRATOR . DS . 'components' . DS . 'com_virtuemart' . DS . 'helpers' . DS . 'config.php';
     }
     VmConfig::loadConfig();
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.fphp';
     }
     if (!class_exists('plgVmPaymentFondy')) {
         require dirname(__FILE__) . DS . 'fondy.php';
     }
     require dirname(__FILE__) . DS . 'Fondy.cls.php';
     //print_r ($_POST);die;
     list($order_id, ) = explode(Fondy::ORDER_SEPARATOR, $_POST['order_id']);
     $order = new VirtueMartModelOrders();
     $method = new plgVmPaymentFondy();
     $order_s_id = $order->getOrderIdByOrderNumber($order_id);
     $orderitems = $order->getOrder($order_s_id);
     $methoditems = $method->__getVmPluginMethod($orderitems['details']['BT']->virtuemart_paymentmethod_id);
     $option = array('merchant_id' => $methoditems->FONDY_MERCHANT, 'secret_key' => $methoditems->FONDY_SECRET_KEY);
     $response = Fondy::isPaymentValid($option, $_POST);
     if ($response === true) {
         $red = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=pluginresponse&task=pluginresponsereceived&pm=' . $paymentMethodID);
         header('Location:' . $red);
         $datetime = date("YmdHis");
         echo "OK";
     } else {
         echo "<!-- {$response} -->";
     }
     $orderitems['order_status'] = $methoditems->status_success;
     $orderitems['customer_notified'] = 0;
     $orderitems['virtuemart_order_id'] = $order_s_id;
     $orderitems['comments'] = 'Fondy ID: ' . $order_id . " Ref ID : " . $_POST['payment_id'];
     $order->updateStatusForOneOrder($order_s_id, $orderitems, true);
 }
 public function plgVmOnPaymentNotification()
 {
     if (JRequest::getVar('pelement') != 'kaznachey') {
         return null;
     }
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $order_id = JRequest::getVar('order_number');
     $order = VirtueMartModelOrders::getOrder($order_id);
     $error = false;
     $method = $this->getVmPluginMethod($order['details']['BT']->virtuemart_paymentmethod_id);
     if ($method) {
         $request_json = file_get_contents('php://input');
         $request = json_decode($request_json, true);
         $request_sign = md5($request["ErrorCode"] . $request["OrderId"] . $request["MerchantInternalPaymentId"] . $request["MerchantInternalUserId"] . number_format($request["OrderSum"], 2, ".", "") . number_format($request["Sum"], 2, ".", "") . strtoupper($request["Currency"]) . $request["CustomMerchantInfo"] . strtoupper($method->secret_key));
         if ($request['SignatureEx'] == $request_sign) {
             $order['order_status'] = $method->status_success;
             $order['virtuemart_order_id'] = "{$order_id}";
             $order['customer_notified'] = 0;
             $order['comments'] = JTExt::sprintf('VMPAYMENT_kaznachey_PAYMENT_CONFIRMED', $order_id);
             if (!class_exists('VirtueMartModelOrders')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
             }
             $modelOrder = new VirtueMartModelOrders();
             ob_start();
             $modelOrder->updateStatusForOneOrder($order_id, $order, true);
             ob_end_clean();
         } else {
             $error = "WRONG_SIGNATURE";
         }
         if ($error) {
             $order['order_status'] = $method->status_canceled;
             $order['virtuemart_order_id'] = "{$order_id}";
             $order['customer_notified'] = 0;
             $order['comments'] = JTExt::sprintf("VMPAYMENT_kaznachey_PAYMENT_ERROR: {$error}", $order_id);
             if (!class_exists('VirtueMartModelOrders')) {
                 require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
             }
             $modelOrder = new VirtueMartModelOrders();
             ob_start();
             $modelOrder->updateStatusForOneOrder($order_id, $order, true);
             ob_end_clean();
         }
     }
     exit;
     return null;
 }
Beispiel #12
0
 function plgVmOnPaymentResponseReceived(&$html)
 {
     //language
     if (!class_exists('VirtueMartCart')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
     }
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $lang = JFactory::getLanguage();
     $filename = 'com_virtuemart';
     $lang->load($filename, JPATH_ADMINISTRATOR);
     $vendorId = 0;
     $payment_data = JRequest::get('request');
     $order_id = substr($payment_data['SOLOPMT_RETURN_REF'], 0, -1);
     $pmethod = VirtueMartModelOrders::getOrder($order_id);
     $payment_method = $pmethod['details']['BT']->virtuemart_paymentmethod_id;
     if (!($method = $this->getVmPluginMethod($payment_method))) {
         return null;
         // Another method was selected, do nothing
     }
     if (!$this->selectedThisElement($method->payment_element)) {
         return false;
     }
     $payment_name = $this->renderPluginName($method);
     $vk_array = array();
     foreach ($payment_data as $key => $value) {
         if (substr($key, 0, 8) == "SOLOPMT_") {
             $vk_array[$key] = $value;
         }
     }
     $sig_result = $this->checkReturnMac($vk_array, $method->priv_key, $method->keyvar);
     $config =& JFactory::getConfig();
     $dbprefix = $config->getValue('dbprefix');
     $order = new VirtueMartModelOrders();
     $order = $order->getOrder($order_id);
     $cart = VirtueMartCart::getCart();
     //Currency
     $db = JFactory::getDBO();
     $q = 'SELECT * FROM `' . $this->_tablename . '` ' . 'WHERE `virtuemart_order_id` = ' . $order_id;
     $db->setQuery($q);
     if (!($paymentTable = $db->loadObject())) {
         // JError::raiseWarning(500, $db->getErrorMsg());
         return '';
     }
     $this->getPaymentCurrency($paymentTable);
     $q = 'SELECT `currency_code_3` FROM `#__virtuemart_currencies` WHERE `virtuemart_currency_id`="' . $paymentTable->payment_currency . '" ';
     $db =& JFactory::getDBO();
     $db->setQuery($q);
     $currency_code_3 = $db->loadResult();
     //currency
     if ($sig_result == true) {
         $html .= $this->_getPaymentResponseHtml($payment_data, $payment_name, round($order['details']['BT']->order_total, 2), $currency_code_3);
         if ($order['details']['BT']->order_status != $method->status_success) {
             $this->update_status($method->status_success, $order_id, "VMPAYMENT_NORDEA_PAYMENT_CONFIRMED");
         }
         echo JText::_("VMPAYMENT_NORDEA_SUCCESS_MESSAGE");
         echo $html;
     } elseif ($sig_result == false) {
         // makse on tühistatud
         if ($order['details']['BT']->order_status != $method->status_canceled) {
             $this->update_status($method->status_canceled, $order_id, "VMPAYMENT_NORDEA_PAYMENT_CANCELED");
         }
         echo JText::_("VMPAYMENT_NORDEA_FAIL_MESSAGE");
     }
     $cart->emptyCart();
     $url = JROUTE::_(JURI::root() . 'index.php?option=com_virtuemart&view=orders');
     echo '<head><meta http-equiv="Refresh" content="5;URL=' . $url . '"></head>';
     return true;
 }
Beispiel #13
0
 function plgVmOnShowOrderBEPayment($virtuemart_order_id, $payment_method_id)
 {
     $order = new VirtueMartModelOrders();
     $my_order = $order->getOrder($virtuemart_order_id);
     $method = $this->getVmPluginMethod($payment_method_id);
     require_once 'cs/TPConnector.php';
     $tpconnector = new TPConnector();
     $connector_data = $tpconnector->createTPConnector($method);
     $connector = $connector_data['connector'];
     $security_code = $connector_data['security'];
     $merchant = $connector_data['merchant'];
     $optionsGS = array('MERCHANT' => $merchant, 'OPERATIONID' => $my_order['details']['BT']->order_number);
     if ($merchant == "") {
     } else {
         $status = $connector->getStatus($optionsGS);
         include_once "views/get_status_view.php";
         echo "<hr />";
         include_once "views/get_devoluciones_view.php";
         // Get a db connection.
         $db = JFactory::getDbo();
         // Create a new query object.
         $query = $db->getQuery(true);
         // Select all records from the user profile table where key begins with "custom.".
         // Order it by the ordering field.
         $query->select($db->quoteName(array('tp_security_code_prod')));
         $query->from($db->quoteName('#__virtuemart_payment_plg_todopago'));
         $query->where($db->quoteName("virtuemart_order_id") . "=" . $db->quote($_GET['virtuemart_order_id']));
         // Reset the query using our newly populated query object.
         $db->setQuery($query);
         // Load the results as a list of stdClass objects (see later for more options on retrieving data).
         $payment_element = $db->loadObjectList();
         $_requestKey = $payment_element[0]->tp_security_code_prod;
         /////devoluciones
         if ($_POST["dev_params"] == "dev_params") {
             if ($method->tp_ambiente == "test") {
                 $security = $method->tp_security_code_test;
                 $merchant = $method->tp_id_site_test;
                 $rest_end_point = "https://developers.todopago.com.ar/t/1.1/api/Authorize";
             } else {
                 $security = $method->tp_security_code_prod;
                 $merchant = $method->tp_id_site_prod;
                 $rest_end_point = "https://api.todopago.com.ar/t/1.1/api/Authorize";
             }
             $data = array("RequestType" => "ReturnRequest", "Security" => $security, "RequestKey" => $_requestKey, "Merchant" => $merchant, "Amount" => $_POST["ReturnRequestAmount"]);
             $data_string = json_encode($data);
             $ch = curl_init($rest_end_point);
             curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
             curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
             curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
             curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', "Authorization: {$method->tp_auth_http}"));
             $result = curl_exec($ch);
             $rta = json_decode($result);
             echo "<h4>" . $rta->ReturnResponse->StatusMessage . "</h4>";
             if ($rta->ReturnResponse->StatusCode == 2011) {
                 echo '<h4 style="color:red">' . "DEVOLUCION OK!" . '</h4>';
                 echo '<script>alert("Su devolucion se ha realizado con exito")</script>';
             } else {
                 echo '<h4 style="color:red">' . "NO SE PUDO REALIZAR DEVOLUCION INTENTE MAS TARDE!" . '</h4>';
             }
         }
     }
     ////devoluciones
 }
Beispiel #14
0
 /**
    * Save updated order data to the method specific table
    *
    * @param array $_formData Form data
    * @return mixed, True on success, false on failures (the rest of the save-process will be
    * skipped!), or null when this method is not actived.
    * @author Oscar van Eijk
    *
     public function plgVmOnUpdateOrderPayment(  $_formData) {
     return null;
     }
 
     /**
    * Save updated orderline data to the method specific table
    *
    * @param array $_formData Form data
    * @return mixed, True on success, false on failures (the rest of the save-process will be
    * skipped!), or null when this method is not actived.
    * @author Oscar van Eijk
    *
     public function plgVmOnUpdateOrderLine(  $_formData) {
     return null;
     }
 
     /**
    * plgVmOnEditOrderLineBE
    * This method is fired when editing the order line details in the backend.
    * It can be used to add line specific package codes
    *
    * @param integer $_orderId The order ID
    * @param integer $_lineId
    * @return mixed Null for method that aren't active, text (HTML) otherwise
    * @author Oscar van Eijk
    *
     public function plgVmOnEditOrderLineBEPayment(  $_orderId, $_lineId) {
     return null;
     }
 
     /**
    * This method is fired when showing the order details in the frontend, for every orderline.
    * It can be used to display line specific package codes, e.g. with a link to external tracking and
    * tracing systems
    *
    * @param integer $_orderId The order ID
    * @param integer $_lineId
    * @return mixed Null for method that aren't active, text (HTML) otherwise
    * @author Oscar van Eijk
    *
     public function plgVmOnShowOrderLineFE(  $_orderId, $_lineId) {
     return null;
     }
 
     /**
    * This event is fired when the  method notifies you when an event occurs that affects the order.
    * Typically,  the events  represents for payment authorizations, Fraud Management Filter actions and other actions,
    * such as refunds, disputes, and chargebacks.
    *
    * NOTE for Plugin developers:
    *  If the plugin is NOT actually executed (not the selected payment method), this method must return NULL
    *
    * @param $return_context: it was given and sent in the payment form. The notification should return it back.
    * Used to know which cart should be emptied, in case it is still in the session.
    * @param int $virtuemart_order_id : payment  order id
    * @param char $new_status : new_status for this order id.
    * @return mixed Null when this method was not selected, otherwise the true or false
    *
    * @author Valerie Isaksen
    *
    *
     public function plgVmOnPaymentNotification() {
     return null;
     }
 */
 function plgVmOnPaymentNotification()
 {
     if (!class_exists('VirtueMartCart')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'cart.php';
     }
     if (!class_exists('shopFunctionsF')) {
         require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
     }
     if (!class_exists('VirtueMartModelOrders')) {
         require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
     }
     $moip = JRequest::getVar('moip');
     if (!isset($moip)) {
         return;
     }
     // trata os retorno no Virtuemart ( atualizando status )
     $this->order_id = $order_number = JRequest::getVar('order_id');
     $pm = JRequest::getVar('pm');
     $virtuemart_order_id = VirtueMartModelOrders::getOrderIdByOrderNumber($order_number);
     $this->logInfo('plgVmOnPaymentNotification: virtuemart_order_id  found ' . $virtuemart_order_id, 'message');
     if (!$virtuemart_order_id) {
         return;
     }
     $vendorId = 0;
     $payment = $this->getDataByOrderId($virtuemart_order_id);
     if ($payment->payment_name == '') {
         return false;
     }
     // recupera as informações do método de pagamento
     $method = $this->getVmPluginMethod($pm);
     if (!$this->selectedThisElement($method->payment_element)) {
         return false;
     }
     if (!$payment) {
         $this->logInfo('getDataByOrderId payment not found: exit ', 'ERROR');
         return null;
     }
     $status_pagamento = JRequest::getVar('StatusPagamento');
     $mensagem = JRequest::getVar('Mensagem');
     $status = JRequest::getVar('Status');
     $total_pago = JRequest::getVar('TotalPago');
     $forma_pagamento = JRequest::getVar('FormaPagamento');
     $tipo_pagamento = JRequest::getVar('TipoPagamento');
     $url_redirecionar = JRequest::getVar('Url');
     $timestamp = date('Y-m-d') . 'T' . date('H:i:s');
     // recupera as informações do pagamento
     $db = JFactory::getDBO();
     $query = 'SELECT payment_name, payment_order_total, payment_currency, virtuemart_paymentmethod_id
    FROM `' . $this->_tablename . '`
    WHERE order_number = "' . $this->order_id . '"';
     $db->setQuery($query);
     $pagamento = $db->loadObjectList();
     //if ($status_pagamento=='Sucesso') {
     $this->codigo_moip = $codigo_moip = JRequest::getVar('CodigoMoIP', 0);
     if ($codigo_moip == 'undefined') {
         $this->codigo_moip = $codigo_moip = '';
     }
     $log = $timestamp . '|' . $this->codigo_moip . '|' . $mensagem . '|' . $tipo_pagamento . '|' . $forma_pagamento . '|' . $pagamento[0]->payment_order_total;
     if ($status == 'Autorizado') {
         $novo_status = '1';
     } else {
         $novo_status = '0';
     }
     $arr_status = array("EmAnalise" => "Pagamento em análise de risco", "Autorizado" => "Pagamento autorizado.", "Iniciado" => "Pagamento foi iniciado, porem sem confirmação de finalização até o momento", "Cancelado" => "Pagamento foi cancelado");
     $response_fields['payment_currency'] = $pagamento[0]->payment_currency;
     $response_fields['payment_order_total'] = $pagamento[0]->payment_order_total;
     //$response_fields['virtuemart_paymentmethod_id']     = $pagamento[0]->virtuemart_paymentmethod_id;
     $response_fields['status'] = $novo_status;
     $response_fields['msg_status'] = $arr_status[$status];
     $response_fields['virtuemart_paymentmethod_id'] = $pm;
     $response_fields['payment_name'] = $payment->payment_name;
     $response_fields['order_number'] = $order_number;
     $response_fields['virtuemart_order_id'] = $virtuemart_order_id;
     $response_fields['type_transaction'] = $forma_pagamento . ' - ' . $tipo_pagamento;
     $response_fields['log'] = $log;
     if (!empty($codigo_moip)) {
         $response_fields['codigo_moip'] = $codigo_moip;
     }
     if (!empty($url_redirecionar)) {
         $response_fields['url_redirecionar'] = $url_redirecionar;
     }
     $this->storePSPluginInternalData($response_fields, 'virtuemart_order_id', true);
     // notificação do pagamento realizado
     $notificacao = "<b>" . JText::_('VMPAYMENT_MOIP_NOTIFY_TRANSACTION') . " - " . $forma_pagamento . "</b>\n";
     $notificacao .= JText::_('VMPAYMENT_MOIP_NOTIFY_CODIGO_MOIP') . " " . $codigo_moip . "\n";
     $notificacao .= JText::_('VMPAYMENT_MOIP_NOTIFY_PEDIDO') . " " . $order_number . "\n";
     $notificacao .= "<hr />";
     $notificacao .= JText::_('VMPAYMENT_MOIP_NOTIFY_STATUS') . " <b>" . ($status == 1 ? JText::_('VMPAYMENT_MOIP_NOTIFY_PAID') : JText::_('VMPAYMENT_MOIP_NOTIFY_NOTPAID')) . "</b>\n";
     $notificacao .= JText::_('VMPAYMENT_MOIP_NOTIFY_TYPE_TRANSACTION') . " <b>" . $response_fields['type_transaction'] . "</b>\n";
     $notificacao .= JText::_('VMPAYMENT_MOIP_NOTIFY_TYPE_MESSAGE') . " <b>" . $mensagem . " </b>\n";
     $notificacao .= JText::_('VMPAYMENT_MOIP_NOTIFY_ORDER_TOTAL') . " <b>R\$ " . number_format($this->valor, 2, ',', '.') . "</b> \n";
     $notificacao .= "\n\n";
     $notificacao .= JText::_('VMPAYMENT_MOIP_NOTIFY_AUTHENTICATE') . "<a href='http://www.moip.com.br'>Moip</a>";
     if ($virtuemart_order_id) {
         // send the email only if payment has been accepted
         if (!class_exists('VirtueMartModelOrders')) {
             require JPATH_VM_ADMINISTRATOR . DS . 'models' . DS . 'orders.php';
         }
         $modelOrder = new VirtueMartModelOrders();
         $orderitems = $modelOrder->getOrder($virtuemart_order_id);
         $nb_history = count($orderitems['history']);
         $order = array();
         $order['order_status'] = $this->_getPaymentStatus($method, $status);
         $order['virtuemart_order_id'] = $virtuemart_order_id;
         $order['comments'] = $notificacao;
         $order['customer_notified'] = 1;
         $modelOrder->updateStatusForOneOrder($virtuemart_order_id, $order, true);
         if ($nb_history == 1) {
             if (!class_exists('shopFunctionsF')) {
                 require JPATH_VM_SITE . DS . 'helpers' . DS . 'shopfunctionsf.php';
             }
             $this->logInfo('Notification, sentOrderConfirmedEmail ' . $order_number . ' ' . $order['order_status'], 'message');
         }
     }
     $cart = VirtueMartCart::getCart();
     $cart->emptyCart();
     //}
     return true;
 }