Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla4/ |
| [Home] [System Details] [Kill Me] |
index.html000064400000000054151160740010006533 0ustar00<html><body
bgcolor="#FFFFFF"></body></html>servired.php000064400000027220151160740010007076
0ustar00<?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¬if_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';
}
}
servired.xml000064400000002257151160740010007112 0ustar00<?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>
servired_end.php000064400000002611151160740010007721 0ustar00<?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>