Spade

Mini Shell

Directory:~$ /home/lmsyaran/public_html/joomla4/
Upload File

[Home] [System Details] [Kill Me]
Current File:~$ /home/lmsyaran/public_html/joomla4/servired.zip

PKq�[�#o,,
index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PKq�[6��!�.�.servired.phpnu�[���<?php
/**
 * @package	HikaShop for Joomla!
 * @version	4.4.1
 * @author	hikashop.com
 * @copyright	(C) 2010-2021 HIKARI SOFTWARE. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><?php

defined('_JEXEC') or die('Restricted access');

class plgHikashoppaymentservired extends hikashopPaymentPlugin {

	var $multiple = true;
	var $name = 'servired';

	var $sync_currencies =
array('EUR'=>'978','USD'=>'840');
	var $accepted_currencies = array('EUR','USD');

	var $pluginConfig = array(
		'merchantId' => array('Shop Id',
'input'),
		'terminalId' => array('Terminal ID',
'input'),
		'encriptionKey' => array('Encryption Key',
'input'),
		'testmode' => array('Test mode',
'boolean', '0'),
		'debug' => array('DEBUG',
'boolean','0'),
		'invalid_status' => array('INVALID_STATUS',
'orderstatus'),
		'pending_status' => array('PENDING_STATUS',
'orderstatus'),
		'verified_status' => array('VERIFIED_STATUS',
'orderstatus')
	);

	function onAfterOrderConfirm(&$order,&$methods,$method_id){
		parent::onAfterOrderConfirm($order, $methods, $method_id);

		if (empty ($this->payment_params->merchantId) ) {
			$this->app->enqueueMessage('You have to configure a Merchant
Id for the Servired plugin payment first : check your plugin\'s
parameters, on your website backend','error');
			return false;
		}
		if (empty($this->payment_params->terminalId)) {
			$this->app->enqueueMessage('You have to configure the
Terminal ID for the Servired plugin payment first : check your
plugin\'s parameters, on your website
backend','error');
			return false;
		}
		if (empty($this->payment_params->encriptionKey)) {
			$this->app->enqueueMessage('You have to configure the
Encription Key for the Servired plugin payment first : check your
plugin\'s parameters, on your website
backend','error');
			return false;
		}

		if ($this->payment_params->testmode) {
			$url = 'https://sis-t.redsys.es:25443/sis/realizarPago'; }
		else {
			$url = 'https://sis.redsys.es/sis/realizarPago'; }

		$key = $this->payment_params->encriptionKey;
		$code = $this->payment_params->merchantId;
		$terminal = $this->payment_params->terminalId;

		$url_OK = HIKASHOP_LIVE .
"index.php?option=com_hikashop&ctrl=checkout&task=after_end&order_id="
. $order->order_id.'&lang='.$this->locale;
		$url_KO = HIKASHOP_LIVE .
"index.php?option=com_hikashop&ctrl=order&task=cancel_order&order_id="
. $order->order_id.'&lang='.$this->locale;
		$urlMerchant = HIKASHOP_LIVE .
'index.php?option=com_hikashop&ctrl=checkout&task=notify&notif_payment='.$this->name.'&tmpl=component&lang='.$this->locale
. $this->url_itemid;
		$amount =
round($order->cart->full_total->prices[0]->price_value_with_tax,2)*100;
		$orderServired = $order->order_id;

		if ( (strlen($orderServired ) ) == 3) {
			$orderServired = '0' . $orderServired; }
		if ( (strlen($orderServired ) ) == 2) {
			$orderServired = '00' . $orderServired; }
		if ( (strlen($orderServired ) ) == 1) {
			$orderServired = '000' . $orderServired; }

		if($this->currency->currency_code=='USD') {
			$currency = '840'; }
		else {
			$currency = '978'; }


		$language = '0';
		$lang = JFactory::getLanguage();
		$locale=strtoupper(substr($lang->get('tag'),0,2));

		switch($locale) {
			case 'es':
				$language = '001';
				break;
			case 'en':
				$language = '002';
				break;
			case 'ca':
				$language = '003';
				break;
			case 'fr':
				$language = '004';
				break;
			case 'de':
				$language = '005';
				break;
			case 'nl':
				$language = '006';
				break;
			case 'it':
				$language = '007';
				break;
			case 'sv':
				$language = '008';
				break;
			case 'pt':
				$language = '009';
				break;
			case 'pl':
				$language = '011';
				break;
			case 'gl':
				$language = '013';
				break;
			default: //default to english for other languages
				$language = '002';
				break;
		}

		$params = array(
			"DS_MERCHANT_AMOUNT" =>  (string)$amount ,
			"DS_MERCHANT_ORDER" =>(string)$orderServired ,
			"DS_MERCHANT_MERCHANTCODE" => (string)$code ,
			"DS_MERCHANT_CURRENCY" => (string)$currency ,
			"DS_MERCHANT_TRANSACTIONTYPE" => "0",
			"DS_MERCHANT_TERMINAL" => (string)$terminal ,
			"DS_MERCHANT_MERCHANTURL" => (string)$urlMerchant ,
			"DS_MERCHANT_URLOK" => (string)$url_OK ,
			"DS_MERCHANT_URLKO"=> (string)$url_KO ,
			"DS_MERCHANT_CONSUMERLANGUAGE" => (string)$language
		);

		$json = json_encode($params);

		if($this->payment_params->debug) {
			$this->writeToLog("Data sent to Servired : \n\n\n");
			$this->writeToLog(print_r($params,true));
		}

		$encodedparams = base64_encode($json);

		$signature = $this->createsign($encodedparams, $orderServired, $key);

		$this->payment_params->url = $url;

		$vars = array(
			'Ds_SignatureVersion' => 'HMAC_SHA256_V1',
			'Ds_MerchantParameters' => $encodedparams,
			'Ds_Signature' => $signature,
		);

		if($this->payment_params->debug) {
			$this->writeToLog("complet data sent to Servired :
\n\n\n");
			$this->writeToLog(print_r($vars,true));
		}

		$this->vars = $vars;
		return $this->showPage('end');
	}

	function onPaymentNotification(&$statuses){


		$decodedParmeters = base64_decode
($_POST["Ds_MerchantParameters"]);

		$dataobject = json_decode($decodedParmeters);

		$order_id = $dataobject->Ds_Order;

		if ( substr($order_id, 0, 3) == '000') {
			$order_id = substr($order_id, 3); }
		if ( substr($order_id, 0, 2) == '00') {
			$order_id = substr($order_id, 2); }
		if ( substr($order_id, 0, 1) == '0') {
			$order_id = substr($order_id, 1); }

		$dbOrder = $this->getOrder($order_id);
		$this->loadPaymentParams($dbOrder);
		$this->loadOrderData($dbOrder);

		if(empty($this->payment_params) ) {

			if($this->payment_params->debug)
			{
				$this->writeToLog("Unable to read Servired Response : Unknow
Order! \n\n");
				$this->writeToLog(print_r($order_id,true));
			}
			return false;
		}

		if($this->payment_params->debug) {
			$arraydata = get_object_vars($dataobject);

			$this->writeToLog("Data recieved from Servired :\n\n ");
			$this->writeToLog(print_r($arraydata,true))."\n\n\n";
		}

		$encodedparams = $_POST["Ds_MerchantParameters"];
		$key = $this->payment_params->encriptionKey;

		$notifysign = $this->createsign($encodedparams,
$dataobject->Ds_Order, $key);

		if($this->payment_params->debug) {
			$this->writeToLog("Signature (before corrected!) from Servired
notification :\n\n ");
			$this->writeToLog($_POST["Ds_Signature"]);
		}
		$receivedsign = $_POST["Ds_Signature"];
		if ( (false !== strpos($receivedsign, "-") ) || (false !==
strpos($receivedsign, "_") ) ) {

			$target = array('-', '_');
			$replace = array('+', '/');
			$ServiredSign = str_replace($target, $replace, $receivedsign);
		}
		else {
			$ServiredSign = $receivedsign;
		}
		if($notifysign != $ServiredSign) {
			if($this->payment_params->debug) {

				$this->writeToLog("Signature mismatch :\n\n Signature
(corrected!) from Servired notification :\n\n ");
				$this->writeToLog($ServiredSign);
				$this->writeToLog("From HikaShop processing :\n\n ");
				$this->writeToLog($notifysign);
			}
			return('Invalid Signature !');
		}

		$DS_RESPONSE=(int)$dataobject->Ds_Response;

		$ServiredAmount = (string)$dataobject->Ds_Amount .
$this->currency->currency_code;

		if ( $DS_RESPONSE>=0 && $DS_RESPONSE<100) {

			$history = new stdClass();
			$history->notified=1;
			$history->data = ob_get_clean();
			$history->amount= $ServiredAmount;

			$this->modifyOrder($order_id,
$this->payment_params->verified_status, $history, true);

			echo "FIRMA OK";
			return true;
		}
		else {

			$DS_RESPONSE=(string)$dataobject->Ds_Response;

			$errorarray = array(
				'101' => 'Expired card',
				'102' => 'Card in transitional exception or under
suspected fraud',
				'106' => 'PIN attempts exceeded',
				'125' => 'Ineffective Card',
				'129' => 'Security code (CVV2/CVC2) incorrect',
				'180' => 'Card unrelated to the service',
				'184' => 'Error in cardholder authentication',
				'190' => 'Denial of the issuer without specifying
reason',
				'191' => 'Erroneous expiry date',
				'202' => 'Card in transitional exception or under
suspected fraud with card withdrawal',
				'904' => 'Merchant not registered in FUC',
				'909' => 'System error',
				'913' => 'Repeated order',
				'944' => 'Incorrect Session',
				'950' => 'Refund transaction not permitted',
				'9912' => 'Issuer not available',
				'912' => 'Issuer not available',
				'9064' => 'Incorrect card number of positions',
				'9078' => 'Transaction type not allowed for that
card',
				'9093' => 'Nonexistent card',
				'9094' => 'International servers rejection',
				'9104' => 'Merchant with "insurance holder"
and cardholder without secure purchase key',
				'9218' => 'The merchant does not accept secure
transactions per input/transactions',
				'9253' => 'Card fails check-digit',
				'9256' => 'The merchant cannot perform
preauthorisations',
				'9257' => 'This card does not allow preauthorisation
operations',
				'9261' => 'Transaction retained due to exceeding the
restrictions control in the SIS',
				'9913' => 'Error in the confirmation which the
merchant sends to the Virtual POS (only applicable in the SOAP
synchronisation option)',
				'9914' => '"KO" confirmation of the
merchant (only applicable in the SOAP synchronisation option)',
				'9915' => 'At the request of the user the payment has
been cancelled',
				'9928' => 'Cancellation of deferred authorisation
performed by the SIS (batch process)',
				'9929' => 'Cancellation of deferred authorisation
performed by the merchant',
				'9997' => 'Is being processed in another transaction
in the SIS with the same card',
				'9998' => 'Transaction in application process of the
card data',
				'9999' => 'Transaction has been redirected to the
issuer for authentication'
			);

			foreach($errorarray as $respCode => $msg) {
				if ($DS_RESPONSE == $respCode)
					$match = $msg;
			}

			$details =  (isset($match) ) ? $match : 'HikaShop: Unknown response
code from Servired: ' . $DS_RESPONSE;

			if($this->payment_params->debug) {
				$this->writeToLog("Refused status from Servired :\n\n ");
				$this->writeToLog($details,true)."\n\n\n";
			}

			$history = new stdClass();
			$history->notified=1;
			$history->data = ob_get_clean();
			$history->amount= $ServiredAmount;

			$this->modifyOrder($order_id,
$this->payment_params->invalid_status, $history, false);

			echo "FIRMA KO";
			return false;
		}
	}

	function createsign($encodedparams, $orderServired, $key) {
		$decodekey = base64_decode($key);

		$iv = str_repeat("\x00", 8);

		$message_padded = $orderServired;
		if (strlen($message_padded) % 8) {
		    $message_padded = str_pad($message_padded,
		        strlen($message_padded) + 8 - strlen($message_padded) % 8,
"\0");
		}
		$encryptkey = openssl_encrypt($message_padded, "DES-EDE3-CBC",
$decodekey, OPENSSL_RAW_DATA | OPENSSL_NO_PADDING, $iv);

		$HmacSign = hash_hmac('sha256', $encodedparams, $encryptkey,
true);

		$signature = base64_encode($HmacSign);

		return $signature;
	}

	function getPaymentDefaultValues(&$element) {
		$element->payment_name='SERVIRED';
		$element->payment_description='You can pay by credit card using
this payment method';
		$element->payment_images='MasterCard,VISA,Credit_card,American_Express';
		$element->payment_params->notification= 1;
		$element->payment_params->testmode= 0;
		$element->payment_params->debug = 0;
		$element->payment_params->invalid_status='cancelled';
		$element->payment_params->pending_status='created';
		$element->payment_params->verified_status='confirmed';
	}
}
PKq�[D�����servired.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension type="plugin" version="2.5"
method="upgrade" group="hikashoppayment">
	<name>Hikashop Servired Payment Plugin</name>
	<creationDate>12 février 2021</creationDate>
	<version>4.4.1</version>
	<author>Hikashop</author>
	<authorEmail>dev@hikashop.com</authorEmail>
	<authorUrl>http://www.hikashop.com</authorUrl>
	<copyright>(C) 2010-2021 HIKARI SOFTWARE. All rights
reserved.</copyright>
	<license>http://www.gnu.org/licenses/gpl-2.0.html
GNU/GPL</license>
	<description>This plugin enables you to setup your Servired payment
system</description>
	<files>
		<filename
plugin="servired">servired.php</filename>
		<filename>servired_end.php</filename>
	</files>
	<params addpath="/components/com_hikashop/params">
		<param name="pluginoptions" type="pluginoptions"
default="plugin" label="hikashop"
description="HikaShop options" />
	</params>
	<config>
		<fields name="params"
addfieldpath="/components/com_hikashop/fields">
			<fieldset name="basic">
				<field id="pluginoptions" name="pluginoptions"
type="pluginoptions" label="hikashop"
description="HikaShop options" />
			</fieldset>
		</fields>
	</config>
</extension>
PKq�['?cى�servired_end.phpnu�[���<?php
/**
 * @package	HikaShop for Joomla!
 * @version	4.4.1
 * @author	hikashop.com
 * @copyright	(C) 2010-2021 HIKARI SOFTWARE. All rights reserved.
 * @license	GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
 */
defined('_JEXEC') or die('Restricted access');
?><div class="hikashop_servired_end"
id="hikashop_servired_end">
	<span id="hikashop_servired_message"
class="hikashop_servired_end_message">
		<?php echo
JText::sprintf('PLEASE_WAIT_BEFORE_REDIRECTION_TO_X',
$this->payment_name).'<br/>'.
JText::_('CLICK_ON_BUTTON_IF_NOT_REDIRECTED');?>
	</span>
	<span id="hikashop_servired_end_spinner"
class="hikashop_servired_end_spinner
hikashop_checkout_end_spinner">
	</span>
	<br/>
	<form id="hikashop_servired_form"
name="hikashop_servired_form" action="<?php echo
$this->payment_params->url;?>" method="post">
		<div id="hikashop_servired_end_image"
class="hikashop_servired_end_image">
			<input id="hikashop_servired_button"
type="submit" class="btn btn-primary"
value="<?php echo JText::_('PAY_NOW');?>"
name="" alt="<?php echo
JText::_('PAY_NOW');?>" />
		</div>
		<?php
			foreach($this->vars as $name => $value ) {
				echo '<input type="hidden"
name="'.$name.'" value="'.$value.'"
/>';
			}
			hikaInput::get()->set('noform',1); ?>
	</form>
	<script type="text/javascript">
		<!--
		document.getElementById('hikashop_servired_form').submit();
		//-->
	</script>
</div>
PKq�[�#o,,
index.htmlnu�[���PKq�[6��!�.�.fservired.phpnu�[���PKq�[D�����2/servired.xmlnu�[���PKq�['?cى�4servired_end.phpnu�[���PK2�9