Done !
| Server IP : 46.105.57.169 / Your IP : 216.73.216.67 Web Server : Apache System : Linux webm002.cluster120.gra.hosting.ovh.net 6.18.42-ovh-vps-grsec-zfs+ #1 SMP PREEMPT_DYNAMIC Wed Aug 5 15:59:48 CEST 2026 x86_64 User : verseaumee ( 152031) PHP Version : 8.5.7 Disable Function : _dyuweyrj4,_dyuweyrj4r,dl MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/verseaumee/123click/assets/ |
Upload File : |
PK ! x���s s ipaydna/ipaydna_thanks.phpnu �[��� <?php
/**
* @package HikaShop for Joomla!
* @version 4.5.1
* @author hikashop.com
* @copyright (C) 2010-2022 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_ipaydna_thankyou" id="hikashop_ipaydna_thankyou">
<span id="hikashop_ipaydna_thankyou_message" class="hikashop_ipaydna_thankyou_message">
<?php echo JText::_('THANK_YOU_FOR_PURCHASE');
if(!empty($this->payment_params->return_url)){
echo '<br/><a href="'.$this->payment_params->return_url.'">'.JText::_('GO_BACK_TO_SHOP').'</a>';
}?>
</span>
</div>
<?php
if(!empty($this->payment_params->return_url)){
$doc = JFactory::getDocument();
$doc->addScriptDeclaration("window.hikashop.ready( function() {window.location='".$this->payment_params->return_url."'});");
}
PK ! |���;) ;) ipaydna/ipaydna.phpnu �[��� <?php
/**
* @package HikaShop for Joomla!
* @version 4.5.1
* @author hikashop.com
* @copyright (C) 2010-2022 HIKARI SOFTWARE. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
?><?php
class plgHikashoppaymentIpaydna extends hikashopPaymentPlugin
{
var $accepted_currencies = array( 'USD', 'EUR', 'GBP', 'JPY', 'MYR', 'AUD', 'CAD', 'SGD', 'DKK', 'SEK', 'NOK', 'HKD', 'KRW' );
var $multiple = true;
var $name = 'ipaydna';
var $pluginConfig = array(
'tid' => array('Store ID', 'input'),
'url' => array('iPayDNA url', 'input'),
'currency' => array('Account Currency', 'list',array(
'' => 'ALL',
'USD' => 'USD',
'EUR' => 'EUR',
'GBP' => 'GBP',
'JPY' => 'JPY',
'MYR' => 'MYR',
'AUD' => 'AUD',
'CAD' => 'CAD',
'SGD' => 'SGD',
'DKK' => 'DKK',
'SEK' => 'SEK',
'NOK' => 'NOK',
'HKD' => 'HKD',
'KRW' => 'KRW'
)),
'ask_cctype' => array('CARD_TYPE', 'big-textarea'),
'debug' => array('DEBUG', 'boolean','0'),
'cancel_url' => array('CANCEL_URL', 'input'),
'return_url' => array('RETURN_URL', 'input'),
'verified_status' => array('VERIFIED_STATUS', 'orderstatus')
);
function needCC(&$method) {
$method->ask_cc = true;
$method->ask_owner = true;
if(!empty($method->payment_params->ask_cctype)){
$cctypes = explode("\n",str_replace(array("\r\n","\r"),array("\n","\n"),$method->payment_params->ask_cctype));
$method->ask_cctype = array();
foreach($cctypes as $cctype){
$row = explode('=',$cctype,2);
$method->ask_cctype[trim($row[0])] = trim($row[1]);
}
}else{
$method->ask_cctype = array('VISA' => 'VISA', 'MASTERCARD' => 'MasterCard', 'AMEX' => 'American Express', 'DISCOVER' => 'Discover', 'JCB' => 'JCB', 'AQUARIUS' => 'Aquarius' );
}
if( $method->payment_params->ask_ccv ) {
$method->ask_ccv = true;
}
return true;
}
function onBeforeOrderCreate(&$order, &$do) {
if(parent::onBeforeOrderCreate($order, $do) === true)
return true;
if( !in_array($this->currency->currency_code, $this->accepted_currencies) ) {
$app->enqueueMessage('The iPayDNA payment plugin doest not support your currency: "'.htmlentities($this->currency->currency_code).'"','error');
return false;
}
$this->ccLoad();
$amount = number_format($order->cart->full_total->prices[0]->price_value_with_tax,2,'.','');
if( !empty($this->payment_params->currency) ) {
$db = JFactory::getDBO();
$db->setQuery("SELECT currency_id as `id` FROM #__hikashop_currency WHERE currency_code='".$this->payment_params->currency."';");
$dstCurrency = $db->loadObjectList();
if( isset($dstCurrency) && @$dstCurrency[0]->id > 0 ) {
if( $dstCurrency[0]->id != $order->order_currency_id ) {
$currencyClass = hikashop_get('class.currency');
$price = $currencyClass->convertUniquePrice($order->cart->full_total->prices[0]->price_value_with_tax, $order->order_currency_id, $dstCurrency[0]->id);
$dstCurrencies = null;
$dstCurrencies = $currencyClass->getCurrencies($dstCurrency[0]->id,$dstCurrencies);
$tmpCurrency = $dstCurrencies[$dstCurrency[0]->id];
$amount = number_format($price,2,'.','');
$currency = $tmpCurrency;
} else {
$amount = number_format($order->cart->full_total->prices[0]->price_value_with_tax,2,'.','');
}
}
}
$vars = '<'.'?xml version="1.0" encoding="UTF-8"?'.'>' . "\r\n" .
'<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" '.
'xmlns:ns1="http://acquirer.process.training.aquarius" xmlns:xsd="http://www.w3.org/2001/XMLSchema" '.
'xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" '.
'SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">';
if( isset($order->order_id) )
$uuid = $order->order_id;
else
$uuid = uniqid('');
$state = '';
$state2 = '';
$vars .='<SOAP-ENV:Body><ns1:payment>'.
'<customerpaymentpagetext xsi:type="xsd:string">'. $this->payment_params->tid . '</customerpaymentpagetext>'.
'<orderdescription xsi:type="xsd:string">'. $uuid . '</orderdescription>'.
'<orderDetail xsi:type="xsd:string">HikaShop order ' . $this->user->user_id . '</orderDetail>'.
'<currencytext xsi:type="xsd:string">'.$this->currency->currency_code.'</currencytext>'.
'<purchaseamount xsi:type="xsd:string">'. $amount . '</purchaseamount>'.
'<taxamount xsi:type="xsd:string">0.00</taxamount>'.
'<shippingamount xsi:type="xsd:string">0.00</shippingamount>'.
'<dutyamount xsi:type="xsd:string">0.00</dutyamount>'.
'<cardholdername xsi:type="xsd:string">'. $this->cc_owner . '</cardholdername>'.
'<cardno xsi:type="xsd:string">'. $this->cc_number . '</cardno>'.
'<cardtypetext xsi:type="xsd:string">'. $this->cc_type . '</cardtypetext>'.
'<securitycode xsi:type="xsd:string">'. $this->cc_CCV . '</securitycode>'.
'<cardexpiremonth xsi:type="xsd:string">'. $this->cc_month . '</cardexpiremonth>'.
'<cardexpireyear xsi:type="xsd:string">20'. $this->cc_year . '</cardexpireyear>'.
'<cardissuemonth xsi:type="xsd:string">0</cardissuemonth>'.
'<cardissueyear xsi:type="xsd:string">0</cardissueyear>'.
'<issuername xsi:type="xsd:string"></issuername>'.
'<firstname xsi:type="xsd:string">'. substr( @$order->cart->billing_address->address_firstname, 0, 100) . '</firstname>'.
'<lastname xsi:type="xsd:string">'. substr( @$order->cart->billing_address->address_lastname, 0, 100) . '</lastname>'.
'<company xsi:type="xsd:string"></company>'.
'<address xsi:type="xsd:string">'. substr($order->cart->billing_address->address_street,0,250) . '</address>'.
'<city xsi:type="xsd:string">'. substr(@$order->cart->billing_address->address_city, 0, 50) . '</city>'.
'<state xsi:type="xsd:string">'. $state . '</state>'.
'<zip xsi:type="xsd:string">'. substr(@$order->cart->billing_address->address_post_code, 0, 50) . '</zip>'.
'<country xsi:type="xsd:string">'. @$order->cart->billing_address->address_country->zone_code_2 . '</country>'.
'<email xsi:type="xsd:string">'. substr($this->user->user_email, 0, 250) . '</email>'.
'<phone xsi:type="xsd:string">0</phone>'.
'<shipfirstname xsi:type="xsd:string">'. substr( @$order->cart->shipping_address->address_firstname, 0, 100) . '</shipfirstname>'.
'<shiplastname xsi:type="xsd:string">'. substr( @$order->cart->shipping_address->address_lastname, 0, 100) . '</shiplastname>'.
'<shipaddress xsi:type="xsd:string">'. substr($order->cart->shipping_address->address_street,0,250) . '</shipaddress>'.
'<shipcity xsi:type="xsd:string">'. substr(@$order->cart->shipping_address->address_city, 0, 50) . '</shipcity>'.
'<shipstate xsi:type="xsd:string">'. $state2 . '</shipstate>'.
'<shipzip xsi:type="xsd:string">'. substr(@$order->cart->shipping_address->address_post_code, 0, 50) . '</shipzip>'.
'<shipcountry xsi:type="xsd:string">'. @$order->cart->shipping_address->address_country->zone_code_2 . '</shipcountry>'.
'<cardHolderIP xsi:type="xsd:string">127.0.0.1</cardHolderIP>'.
'</ns1:payment></SOAP-ENV:Body></SOAP-ENV:Envelope>';
$url = $this->payment_params->url;
$header = array(
'Content-type: text/xml; charset=utf-8',
'Accept: text/xml',
'Cache-Control: no-cache',
'Pragma: no-cache',
'SOAPAction: ""',
'Content-length: '.strlen($vars),
);
$session = curl_init('https://' . $url);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($session, CURLOPT_VERBOSE, 1);
curl_setopt($session, CURLOPT_POST, 1);
curl_setopt($session, CURLOPT_HTTPHEADER, $header);
curl_setopt($session, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($session, CURLOPT_POSTFIELDS, $vars);
curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($session);
$error = curl_errno($session);
$err_msg = curl_error($session);
curl_close($session);
if( !empty($ret) ) {
if( $this->payment_params->debug ) {
echo print_r($ret, true) . "\n\n\n";
}
$result = array();
if( strpos($ret, 'TRANSACTIONSTATUSTEXT') !== false ) {
if( preg_match_all('#<var name=\'(.+)\'><[a-zA-Z]+>(.*)</[a-zA-Z]+></var>#iU', $ret, $res, PREG_SET_ORDER) ) {
foreach($res as $r) {
$result[ $r[1] ] = $r[2];
}
}
}
if( isset($result['TRANSACTIONSTATUSTEXT']) && $result['TRANSACTIONSTATUSTEXT'] == 'SUCCESSFUL' ) {
$do = true;
$dbg .= ob_get_clean();
if( !empty($dbg) ) $dbg .= "\r\n";
ob_start();
$history = new stdClass();
$history->notified = 0;
$history->amount = $amount . $this->accepted_currencies[0];
$history->data = $dbg . 'Authorization Code: ' . @$result['AUTHORIZATIONCODE'] . "\r\n" . 'Order Reference: ' . @$result['ORDERREFERENCE'] . "\r\n" . 'Unique ID: ' . $uuid;
$this->modifyOrder($order, $order->order_status, $history, true);
} else {
$errMsg = 'An error occurred.';
if( !empty($result['ERRORMESSAGE']) ) {
$errMsg = 'An error occurred: [' . @$result['ERRORCODE'] . '] ' . $result['ERRORMESSAGE'];
}
$this->app->enqueueMessage($errMsg);
$do = false;
}
} else {
$do = false;
}
if( $error != 0 ) {
$this->app->enqueueMessage('There was an error during the connection with the iPayDNA payment gateway');
if( $this->payment_params->debug ) {
echo 'Curl Err [' . $error . '] : ' . $err_msg . "\n\n\n";
}
}
$this->writeToLog(null);
if( $error == 0 ) {
$this->ccClear();
}
return true;
}
function onAfterOrderConfirm(&$order,&$methods,$method_id){
$this->showPage('thanks');
}
function getPaymentDefaultValues(&$element) {
$element->payment_name='IPAYDNA';
$element->payment_description='You can pay by credit card using this payment method';
$element->payment_images='MasterCard,VISA,Credit_card,American_Express,Discover';
$element->payment_params->login='';
$element->payment_params->password='';
$element->payment_params->ask_ccv = true;
$element->payment_params->cert = false;
$element->payment_params->pending_status='created';
$element->payment_params->verified_status='confirmed';
$element->payment_params->ask_cctype = "VISA=VISA\nMASTERCARD=MasterCard\nAMEX=American Express\nDISCOVER=Discover\nJCB=JCB\nAQUARIUS=Aquarius";
}
}
PK ! �?�� � ipaydna/ipaydna.xmlnu �[��� <?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="2.5" method="upgrade" group="hikashoppayment">
<name>Hikashop iPayDNA Payment Plugin</name>
<creationDate>29 avril 2022</creationDate>
<version>4.5.1</version>
<author>Obsidev</author>
<authorEmail>dev@hikashop.com</authorEmail>
<authorUrl>http://www.hikashop.com</authorUrl>
<copyright>(C) 2010-2022 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 iPayDNA payment system</description>
<files>
<filename plugin="ipaydna">ipaydna.php</filename>
<filename>ipaydna_thanks.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>
PK ! �#o, , ipaydna/index.htmlnu �[��� <html><body bgcolor="#FFFFFF"></body></html>PK ! 1�~� migsvpc/migsvpc.xmlnu �[��� <?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="2.5" method="upgrade" group="hikashoppayment">
<name>Hikashop MasterCard Internet Gateway System (Australian) Payment Plugin</name>
<creationDate>29 avril 2022</creationDate>
<version>4.5.1</version>
<author>Obsidev</author>
<authorEmail>dev@hikashop.com</authorEmail>
<authorUrl>http://www.hikashop.com</authorUrl>
<copyright>(C) 2010-2022 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 Australian MIGS (MasterCard, ANZ eGate, ACB - Australian Commonwealth Bank) payment system</description>
<files>
<filename plugin="migsvpc">migsvpc.php</filename>
<filename>migsvpc_thankyou.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>
PK ! ��\�= �= migsvpc/migsvpc.phpnu �[��� <?php
/**
* @package HikaShop for Joomla!
* @version 4.5.1
* @author hikashop.com
* @copyright (C) 2010-2022 HIKARI SOFTWARE. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
?><?php
class plgHikashoppaymentMigsvpc extends hikashopPaymentPlugin
{
var $multiple = true;
var $name = 'migsvpc';
var $pluginConfig = array(
'url' => array('URL', 'input'),
'vpc_mode' => array('VPC Mode', 'list',array(
'dps' => 'HIKA_HOSTED',
'pay' => 'HIKA_REDIRECT'
)),
'merchant_id' => array('MERCHANT_ID', 'input'),
'locale' => array('Locale', 'input'),
'access_code' => array('ACCESS_CODE', 'input'),
'secure_secret' => array('SECURE_SECRET', 'input'),
'ticket_info' => array('Display payment information in Redirect mode', 'boolean','0'),
'ask_ccv' => array('Ask CCV', 'boolean','0'),
'debug' => array('DEBUG', 'boolean','0'),
'cancel_url' => array('CANCEL_URL', 'input'),
'return_url' => array('RETURN_URL', 'input'),
'invalid_status' => array('INVALID_STATUS', 'orderstatus'),
'verified_status' => array('VERIFIED_STATUS', 'orderstatus')
);
function needCC(&$method) {
if(empty($method->payment_params->vpc_mode) || $method->payment_params->vpc_mode == 'dps') {
$method->ask_cc = true;
$method->ask_owner = false;
if( $method->payment_params->ask_ccv || (!empty($method->payment_params->security) && !empty($method->payment_params->security_cvv)) ) {
$method->ask_ccv = true;
}
}
}
function onBeforeOrderCreate(&$order, &$do) {
if(parent::onBeforeOrderCreate($order, $do) === true)
return true;
if(!empty($this->payment_params->vpc_mode) && $this->payment_params->vpc_mode != 'dps')
return true;
if(!function_exists('curl_init')){
$this->app->enqueueMessage('The MIGS payment plugin needs the CURL library installed but it seems that it is not available on your server. Please contact your web hosting to set it up.','error');
return false;
}
$this->ccLoad();
ob_start();
$dbg = '';
$amount = round($order->cart->full_total->prices[0]->price_value_with_tax * 100);
$order_id = uniqid('');
$uuid = $order_id.'-1';
$vars = array(
'vpc_Version' => '1',
'vpc_Command' => 'pay',
'vpc_AccessCode' => $this->payment_params->access_code,
'vpc_MerchTxnRef' => $uuid,
'vpc_Merchant' => $this->payment_params->merchant_id,
'vpc_OrderInfo' => $order_id,
'vpc_Amount' => $amount,
'vpc_CardNum' => $this->cc_number,
'vpc_CardExp' => $this->cc_year.$this->cc_month,
'vpc_SecureHashType' => 'SHA256'
);
if($this->payment_params->ask_ccv) {
$vars['vpc_CardSecurityCode'] = $this->cc_CCV;
}
$vars['vpc_SecureHash'] = $this->getHash($vars, $this->payment_params->secure_secret);
$postdata = array();
foreach($vars as $k => $v) {
$postdata[] = urlencode($k).'='.urlencode($v);
}
if( $this->payment_params->debug ) {
echo print_r($postdata, true) . "\n\n\n";
}
$postdata = implode('&', $postdata);
$httpsHikashop = str_replace('http://','https://', HIKASHOP_LIVE);
$url = 'https://migs.mastercard.com.au/vpcdps';
if(!empty($this->payment_params->url)){
$url = rtrim($this->payment_params->url, '/');
if(strpos($url,'http')===false)
$url='https://'.$url;
}
$session = curl_init($url);
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($session, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($session, CURLOPT_VERBOSE, 1);
curl_setopt($session, CURLOPT_POST, 1);
curl_setopt($session, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
$ret = curl_exec($session);
$error = curl_errno($session);
$err_msg = curl_error($session);
curl_close($session);
if( !empty($ret) ) {
if( $this->payment_params->debug ) {
echo print_r($ret, true) . "\n\n\n";
}
$result = 0;
if( strpos($ret, '&') !== false ) {
$res = explode('&', $ret);
$ret = array();
foreach($res as $r) {
list($k,$v) = explode('=',$r,2);
$ret[urldecode($k)] = urldecode($v);
}
$result = 1;
$errorMsg = '';
if( $ret['vpc_TxnResponseCode'] == 0 || $ret['vpc_TxnResponseCode'] == '0' ) {
$result = 2;
} else {
$errorMsg = $this->getResponseMessage($ret['vpc_TxnResponseCode']);
}
$transactionId = @$ret['vpc_TransactionNo'];
$approvalCode = @$ret['vpc_AuthorizeId'];
$responseMsg = $ret['vpc_Message'];
}
$dbg .= ob_get_clean();
if( !empty($dbg) ) $dbg .= "\r\n";
if( $result > 0 ) {
if( $result == 2 ) {
$do = true;
$history = new stdClass();
$email = new stdClass();
$history->notified = 0;
$history->amount = number_format($order->cart->full_total->prices[0]->price_value_with_tax,2,'.','') . $this->accepted_currencies[0];
$history->data = $dbg . 'Authorization Code: ' . @$approvalCode . "\r\n" . 'Transaction ID: ' . @$transactionId;
$order_status = $this->payment_params->verified_status;
$url = HIKASHOP_LIVE.'administrator/index.php?option=com_hikashop&ctrl=order&task=listing';
$order_text = "\r\n".JText::sprintf('NOTIFICATION_OF_ORDER_ON_WEBSITE','',HIKASHOP_LIVE);
$order_text .= "\r\n".str_replace('<br/>',"\r\n",JText::sprintf('ACCESS_ORDER_WITH_LINK',$url));
$email->subject = JText::sprintf('PAYMENT_NOTIFICATION','MIGS','Accepted');
$email->body = str_replace('<br/>',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','MIGS','Accepted')).' '.JText::sprintf('ORDER_STATUS_CHANGED', hikashop_orderStatus($order_status))."\r\n\r\n".$order_text;
$this->modifyOrder($order,$order_status,$history,$email);
} else {
if( !empty($responseMsg) ) {
$this->app->enqueueMessage($responseMsg);
} else {
$this->app->enqueueMessage('Error');
}
if( !empty($errorMsg) ) {
$this->app->enqueueMessage($errorMsg);
}
$do = false;
}
} else {
$this->app->enqueueMessage('An error occurred.');
$do = false;
}
} else {
$dbg .= ob_get_clean();
$do = false;
}
if( $error != 0 ) {
$this->app->enqueueMessage('There was an error during the connection with the MIGS payment gateway');
if( $this->payment_params->debug ) {
echo 'Curl Err [' . $error . '] : ' . $err_msg . "\n\n\n";
}
}
if(!empty($dbg))
$this->writeToLog($dbg);
if( $error != 0 )
return true;
$this->ccClear();
return true;
}
function onAfterOrderConfirm(&$order,&$methods,$method_id){
parent::onAfterOrderConfirm($order, $methods, $method_id);
if(!empty($this->payment_params->vpc_mode) && $this->payment_params->vpc_mode == 'pay') {
return $this->onAfterOrderConfirm_VPCPAY($order, $methods, $method_id);
}
$this->removeCart = true;
return $this->showPage('thankyou');
}
function onAfterOrderConfirm_VPCPAY(&$order,&$methods,$method_id){
$amount = round($order->cart->full_total->prices[0]->price_value_with_tax * 100);
$uuid = $order->order_id.'-'.uniqid('');
$return_url = HIKASHOP_LIVE.'migsvpc_return.php';
if(empty($this->payment_params->locale))
$this->payment_params->locale = 'en';
$this->vars = array(
'vpc_Version' => '1',
'vpc_Command' => 'pay',
'vpc_MerchTxnRef' => $uuid,
'vpc_AccessCode' => $this->payment_params->access_code,
'vpc_Merchant' => $this->payment_params->merchant_id,
'vpc_OrderInfo' => $order->order_id,
'vpc_Locale' => $this->payment_params->locale,
'vpc_Amount' => $amount,
'vpc_ReturnURL' => $return_url,
'vpc_SecureHashType' => 'SHA256'
);
ksort($this->vars);
$this->vars['vpc_SecureHash'] = $this->getHash($this->vars, $this->payment_params->secure_secret);
foreach($this->vars as $key => &$var) {
$var = $key . '=' . urlencode($var);
}
unset($var);
if(empty($this->payment_params->url))
$this->payment_params->url = 'https://migs.mastercard.com.au/vpcpay';
$this->app->redirect($this->payment_params->url . '?' . implode('&', $this->vars));
}
function getHash($data, $secret){
ksort($data);
$hash = null;
foreach ($data as $k => $v) {
if (in_array($k, array('vpc_SecureHash', 'vpc_SecureHashType'))) {
continue;
}
if ((strlen($v) > 0) && ((substr($k, 0, 4)=="vpc_") || (substr($k, 0, 5) =="user_"))) {
$hash .= $k . "=" . $v . "&";
}
}
$hash = rtrim($hash, "&");
return strtoupper(hash_hmac('SHA256', $hash, pack('H*', $secret)));
}
function onPaymentNotification(&$statuses){
$vars = array();
$filter = JFilterInput::getInstance();
foreach($_REQUEST as $key => $value) {
$key = $filter->clean($key);
if(substr($key, 0, 4) == 'vpc_') {
$value = hikaInput::get()->getString($key);
$vars[$key] = $value;
}
}
$return_hash = $vars['vpc_SecureHash'];
unset($vars['vpc_SecureHash']);
$order_id = (int)$vars['vpc_OrderInfo'];
$dbOrder = $this->getOrder($order_id);
if(empty($dbOrder)) {
echo 'Could not load any order for your notification '.$order_id;
return false;
}
$this->loadPaymentParams($dbOrder);
if(empty($this->payment_params))
return false;
$this->loadOrderData($dbOrder);
if($this->payment_params->debug){
echo print_r($vars,true)."\n\n\n";
echo print_r($dbOrder,true)."\n\n\n";
}
if(empty($this->payment_params->vpc_mode) || $this->payment_params->vpc_mode != 'pay') {
return false;
}
if($return_hash != $this->getHash($vars,$this->payment_params->secure_secret)) {
echo 'Invalid hash';
return false;
}
$return_url = hikashop_completeLink('checkout&task=after_end&order_id='.$order_id.$this->url_itemid);
$cancel_url = hikashop_completeLink('order&task=cancel_order&order_id='.$order_id.$this->url_itemid);
$url = HIKASHOP_LIVE.'administrator/index.php?option=com_hikashop&ctrl=order&task=edit&order_id='.$order_id.$this->url_itemid;
$order_text = "\r\n".JText::sprintf('NOTIFICATION_OF_ORDER_ON_WEBSITE',$dbOrder->order_number,HIKASHOP_LIVE);
$order_text .= "\r\n".str_replace('<br/>',"\r\n",JText::sprintf('ACCESS_ORDER_WITH_LINK',$url));
$history = new stdClass();
$email = new stdClass();
$history->notified = 0;
$history->amount = $vars['vpc_Amount'];
$history->data = $vars['vpc_TransactionNo'] . "\r\n\r\n" . ob_get_clean();
$orderPrice = round($dbOrder->order_full_price * 100);
$orderstatus = '';
if($orderPrice != $vars['vpc_Amount']) {
$order_status = $this->payment_params->invalid_status;
$email->subject = JText::sprintf('NOTIFICATION_REFUSED_FOR_THE_ORDER','MIGS').JText::_('INVALID_AMOUNT');
$email->body = str_replace('<br/>',"\r\n",JText::sprintf('AMOUNT_RECEIVED_DIFFERENT_FROM_ORDER','MIGS', $history->amount, $orderPrice . $this->currency->currency_code))."\r\n\r\n".$order_text;
$this->modifyOrder($order_id,$order_status,$history,$email);
$this->app->enqueueMessage(JText::sprintf('NOTIFICATION_REFUSED_FOR_THE_ORDER','MIGS').JText::_('INVALID_AMOUNT'));
$this->app->redirect($cancel_url);
}
$completed = ($vars['vpc_TxnResponseCode'] == '0');
$payment_status = '';
$redirect_to = $return_url;
if($completed) {
$order_status = $this->payment_params->verified_status;
$history->notified = 1;
$payment_status = 'confirmed';
} else {
$order_status = $this->payment_params->invalid_status;
$payment_status = 'cancelled';
$this->app->enqueueMessage(JText::sprintf('NOTIFICATION_REFUSED_FOR_THE_ORDER','MIGS'));
$redirect_to = $cancel_url;
}
$mail_status = $statuses[$order->order_status];
$email->subject = JText::sprintf('PAYMENT_NOTIFICATION_FOR_ORDER', 'MIGS', $payment_status, $dbOrder->order_number);
$email->body = str_replace('<br/>',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','MIGS',$payment_status)).' '.JText::sprintf('ORDER_STATUS_CHANGED',$mail_status)."\r\n\r\n".$order_text;
$this->modifyOrder($order_id,$order_status,$history,$email);
if(@$this->element->payment_params->ticket_info){
$key = 'TICKET_INFO';
$currencyClass = hikashop_get('class.currency');
if(JText::_($key) != $key) {
$text = JText::sprintf($key, $vars['vpc_AuthorizeId'], $currencyClass->format($dbOrder->order_full_price,$dbOrder->order_currency_id));
}else{
$text = sprintf('Your authorization number is %s for the payment of %s.', $vars['vpc_AuthorizeId'], $currencyClass->format($dbOrder->order_full_price,$dbOrder->order_currency_id));
}
$this->app->enqueueMessage($text);
}
$this->app->redirect($redirect_to);
}
function getPaymentDefaultValues(&$element) {
$element->payment_name='MIGS';
$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->merchant_id = '';
$element->payment_params->access_code = '';
$element->payment_params->ask_ccv = true;
$element->payment_params->pending_status='created';
$element->payment_params->verified_status='confirmed';
}
function onPaymentConfigurationSave(&$element){
$app = JFactory::getApplication();
jimport('joomla.filesystem.file');
jimport('joomla.filesystem.path');
$lang = JFactory::getLanguage();
$locale = strtolower(substr($lang->get('tag'),0,2));
$migsvpc_file='<?php
$_GET[\'option\']=\'com_hikashop\';
$_GET[\'tmpl\']=\'component\';
$_GET[\'ctrl\']=\'checkout\';
$_GET[\'task\']=\'notify\';
$_GET[\'notif_payment\']=\'migsvpc\';
$_GET[\'format\']=\'html\';
$_GET[\'lang\']=\''.$locale.'\';
$_REQUEST[\'option\']=\'com_hikashop\';
$_REQUEST[\'tmpl\']=\'component\';
$_REQUEST[\'ctrl\']=\'checkout\';
$_REQUEST[\'task\']=\'notify\';
$_REQUEST[\'notif_payment\']=\'migsvpc\';
$_REQUEST[\'format\']=\'html\';
$_REQUEST[\'lang\']=\''.$locale.'\';
include(\'index.php\');
';
JFile::write(JPATH_ROOT.DS.'migsvpc_return.php', $migsvpc_file);
return true;
}
function getResponseMessage($code) {
switch ($code) {
case '0': return 'Transaction Successful';
case '?': return 'Transaction status is unknown';
case '1': return 'Unknown Error';
case '2': return 'Bank Declined Transaction';
case '3': return 'No Reply from Bank';
case '4': return 'Expired Card';
case '5': return 'Insufficient funds';
case '6': return 'Error Communicating with Bank';
case '7': return 'Payment Server System Error';
case '8': return 'Transaction Type Not Supported';
case '9': return 'Bank declined transaction (Do not contact Bank)';
case 'A': return 'Transaction Aborted';
case 'C': return 'Transaction Cancelled';
case 'D': return 'Deferred transaction has been received and is awaiting processing';
case 'F': return '3D Secure Authentication failed';
case 'I': return 'Card Security Code verification failed';
case 'L': return 'Shopping Transaction Locked (Please try the transaction again later)';
case 'N': return 'Cardholder is not enrolled in Authentication scheme';
case 'P': return 'Transaction has been received by the Payment Adaptor and is being processed';
case 'R': return 'Transaction was not processed - Reached limit of retry attempts allowed';
case 'S': return 'Duplicate SessionID (OrderInfo)';
case 'T': return 'Address Verification Failed';
case 'U': return 'Card Security Code Failed';
case 'V': return 'Address Verification and Card Security Code Failed';
}
return 'Unable to be determined';
}
}
PK ! �#o, , migsvpc/index.htmlnu �[��� <html><body bgcolor="#FFFFFF"></body></html>PK ! �\��s s migsvpc/migsvpc_thankyou.phpnu �[��� <?php
/**
* @package HikaShop for Joomla!
* @version 4.5.1
* @author hikashop.com
* @copyright (C) 2010-2022 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_migsvpc_thankyou" id="hikashop_migsvpc_thankyou">
<span id="hikashop_migsvpc_thankyou_message" class="hikashop_migsvpc_thankyou_message">
<?php echo JText::_('THANK_YOU_FOR_PURCHASE');
if(!empty($this->payment_params->return_url)){
echo '<br/><a href="'.$this->payment_params->return_url.'">'.JText::_('GO_BACK_TO_SHOP').'</a>';
}?>
</span>
</div>
<?php
if(!empty($this->payment_params->return_url)){
$doc = JFactory::getDocument();
$doc->addScriptDeclaration("window.hikashop.ready( function() {window.location='".$this->payment_params->return_url."'});");
}
PK ! ����< < * virtualmerchant/virtualmerchant_thanks.phpnu �[��� <?php
/**
* @package HikaShop for Joomla!
* @version 4.5.1
* @author hikashop.com
* @copyright (C) 2010-2022 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_virtualmerchant_thankyou" id="hikashop_virtualmerchant_thankyou">
<span id="hikashop_virtualmerchant_thankyou_message" class="hikashop_virtualmerchant_thankyou_message">
<?php echo JText::_('THANK_YOU_FOR_PURCHASE');
if(!empty($return_url)){
echo '<br/><a href="'.$return_url.'">'.JText::_('GO_BACK_TO_SHOP').'</a>';
}?>
</span>
</div>
<?php
if(!empty($return_url)){
$doc =& JFactory::getDocument();
$doc->addScriptDeclaration("window.hikashop.ready( function() {window.location='".$return_url."'});");
}
PK ! �#o, , virtualmerchant/index.htmlnu �[��� <html><body bgcolor="#FFFFFF"></body></html>PK ! v$.`�% �% # virtualmerchant/virtualmerchant.phpnu �[��� <?php
/**
* @package HikaShop for Joomla!
* @version 4.5.1
* @author hikashop.com
* @copyright (C) 2010-2022 HIKARI SOFTWARE. All rights reserved.
* @license GNU/GPLv3 http://www.gnu.org/licenses/gpl-3.0.html
*/
defined('_JEXEC') or die('Restricted access');
?><?php
class plgHikashoppaymentVirtualmerchant extends hikashopPaymentPlugin
{
var $multiple = true;
var $name = 'virtualmerchant';
var $pluginConfig = array(
'merchant_id' => array('ATOS_MERCHANT_ID', 'input'),
'user_id' => array('HKASHOP_USER_ID', 'input'),
'pin' => array('PIN', 'input'),
'currency' => array('CURRENCY', 'list',array(
'AED','KZT','ANG','LBP','ARS','LKR','AUS','LTL','AWG','LVL',
'AZN','LYD','BBD','MAD','BDT','MKD','BGN','MUR','BHD','MWK',
'BMD','MXN','BRL','MYR','BSD','NAD','BWP','NGN','CAD','NOK',
'CDF','NPR','CHF','NZD','CLP','OMR','CNY','PEN','COP','PHP',
'CRC','PKR','CZK','PLN','DKK','QAR','DOP','RON','DZD','RSD',
'EEK','RUB','EGP','SAR','ETB','SEK','EUR','SGD','FJD','SYP',
'GBP','THB','GTQ','TND','HKD','TRY','HRK','TTD','HTG','TWD',
'HUF','UAH','IDR','USD','ILS','VEF','INR','VND','IRR','XAF',
'ISK','XCD','JMD','XOF','JOD','XPF','JPY','ZAR','KES','ZMK',
'KRW','ZWL','KWD','ZMW')
),
'ask_ccv' => array('CARD_VALIDATION_CODE', 'boolean','0'),
'use_avs' => array('Add AVS information', 'boolean','0'),
'debug' => array('DEBUG', 'boolean','0'),
'sandbox' => array('SANDBOX', 'boolean','0'),
'test_mode' => array('TEST_MODE', 'boolean','0'),
'multi_currency' => array('Multi-currency support', 'boolean','0'),
'cancel_url' => array('CANCEL_URL', 'input'),
'return_url' => array('RETURN_URL', 'input'),
'invalid_status' => array('INVALID_STATUS', 'orderstatus'),
'verified_status' => array('VERIFIED_STATUS', 'orderstatus')
);
function needCC(&$method) {
$method->ask_cc = true;
if( $method->payment_params->ask_ccv ) {
$method->ask_ccv = true;
}
return true;
}
function onBeforeOrderCreate(&$order, &$do) {
if(parent::onBeforeOrderCreate($order, $do) === true)
return true;
if(!function_exists('curl_init')){
$this->app->enqueueMessage('The Virtual Merchant payment plugin needs the CURL library installed but it seems that it is not available on your server. Please contact your web hosting to set it up.','error');
return false;
}
$this->ccLoad();
$amount = number_format($order->cart->full_total->prices[0]->price_value_with_tax,2,'.','');
$vars = '<txn>'.
'<ssl_merchant_id>'.$this->payment_params->merchant_id.'</ssl_merchant_id>'.
'<ssl_user_id>'.$this->payment_params->user_id.'</ssl_user_id>'.
'<ssl_pin>'.$this->payment_params->pin.'</ssl_pin>'.
'<ssl_test_mode>'.((@$this->payment_params->test_mode)?'True':'False').'</ssl_test_mode>'.
'<ssl_transaction_type>CCSALE</ssl_transaction_type>'.
'<ssl_show_form >False</ssl_show_form >'.
'<ssl_card_number>'.str_replace(array('<','>'),array('<','>'),$this->cc_number).'</ssl_card_number>'.
'<ssl_exp_date>'.$this->cc_month.$this->cc_year.'</ssl_exp_date>'.
'<ssl_amount>'.$amount.'</ssl_amount>'.
'<ssl_salestax>0.00</ssl_salestax>'.
'<ssl_cvv2cvc2_indicator>'.(($this->payment_params->ask_ccv)?'1':'0').'</ssl_cvv2cvc2_indicator>'.
'<ssl_cvv2cvc2>'.str_replace(array('<','>'),array('<','>'),$this->cc_CCV).'</ssl_cvv2cvc2>'.
'<ssl_customer_code>'.$this->user->user_id.'</ssl_customer_code>'.
'<ssl_first_name>'.str_replace(array('<','>'),array('<','>'),$order->cart->billing_address->address_firstname).'</ssl_first_name>'.
'<ssl_last_name>'.str_replace(array('<','>'),array('<','>'),$order->cart->billing_address->address_lastname).'</ssl_last_name>';
if(!empty($this->payment_params->multi_currency))
$vars .= '<ssl_transaction_currency>'.$this->currency->currency_code.'</ssl_transaction_currency>';
if(!empty($order->order_ip))
$vars .= '<ssl_cardholder_ip>'.$order->order_ip.'</ssl_cardholder_ip>';
if($this->payment_params->use_avs) {
$addr1 = @$order->cart->billing_address->address_street;
if(strlen(urlencode($addr1)) > 20) {
$vars .= '<ssl_avs_address>'.substr(str_replace(array('<','>'),array('<','>'),$addr1),0,20).'</ssl_avs_address>'.
'<ssl_address2>'.substr(str_replace(array('<','>'),array('<','>'),$addr1),20,30).'</ssl_address2>';
} else {
$vars .= '<ssl_avs_address>'.str_replace(array('<','>'),array('<','>'),$addr1).'</ssl_avs_address>';
}
$vars .= '<ssl_city>'.str_replace(array('<','>'),array('<','>'),@$order->cart->billing_address->address_city).'</ssl_city>'.
'<ssl_state>'.str_replace(array('<','>'),array('<','>'),@$order->cart->billing_address->address_state->zone_name).'</ssl_state>'.
'<ssl_avs_zip>'.str_replace(array('<','>'),array('<','>'),@$order->cart->billing_address->address_post_code).'</ssl_avs_zip>'.
'<ssl_country>'.str_replace(array('<','>'),array('<','>'),@$order->cart->billing_address->address_country->zone_name_english).'</ssl_country>';
}
$vars .= '<ssl_email>'.str_replace(array('<','>'),array('<','>'),$this->user->user_email).'</ssl_email>'.
'</txn>';
if( $this->payment_params->debug ) {
echo htmlentities(str_replace(
array($this->cc_number, $this->cc_CCV),
array('**************', '***'),
$vars)) . "\n\n\n";
}
$session = curl_init();
curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($session, CURLOPT_SSL_VERIFYHOST, false);
defined('CURL_SSLVERSION_TLSv1_2') || define('CURL_SSLVERSION_TLSv1_2', 6);
curl_setopt($session, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_2);
curl_setopt($session, CURLOPT_POST, 1);
curl_setopt($session, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($session, CURLOPT_VERBOSE, 1);
curl_setopt($session, CURLOPT_FOLLOWLOCATION, 0);
curl_setopt($session, CURLOPT_FAILONERROR, true);
$httpsHikashop = str_replace('http://','https://', HIKASHOP_LIVE);
if($this->payment_params->sandbox) {
$url = 'api.demo.convergepay.com/VirtualMerchantDemo/processxml.do';
} else {
$url = 'api.convergepay.com/VirtualMerchant/processxml.do';
}
curl_setopt($session, CURLOPT_URL, 'https://' . $url);
curl_setopt($session, CURLOPT_REFERER, $httpsHikashop);
curl_setopt($session, CURLOPT_POSTFIELDS, 'xmldata=' . urlencode($vars) );
$ret = curl_exec($session);
$error = curl_errno($session);
curl_close($session);
if( !$error ) {
$p0 = strpos($ret,'<txn>');
if($p0 !== false ) { $ret = substr($ret, $p0); }
$data = str_replace(array('<txn>','</txn>'), '', trim($ret));
$ret = array();
while ($data) {
$p0 = strpos($data, '<');
$p1 = strpos($data, '>');
if($p0 === false || $p1 === false) {
break;
}
$key = substr($data, $p0+1, $p1-1);
$data = substr($data, $p0+1);
if(substr($key,-1) == '/') {
$ret[$key] = '';
} else {
$l = strlen($key);
$p1 = strpos($data, '</'.$key.'>');
if($p1 !== false) {
$ret[$key] = substr($data, $l+1, $p1-$l-1);
$data = substr($data, $p1+$l+3);
}
}
}
if( $this->payment_params->debug ) {
echo print_r($ret, true)."\n\n\n";
}
if( isset($ret['ssl_result']) ) {
if( $ret['ssl_result'] == '0' ) {
$dbg = ob_get_clean();
if( !empty($dbg) ) $dbg .= "\r\n";
ob_start();
$history = new stdClass();
$email = new stdClass();
$history->notified = 0;
$history->amount = $amount . $this->payment_params->currency;
$history->data = $dbg . 'Authorization Code: ' . $ret['ssl_approval_code'] . "\r\n" . 'Transaction ID: ' . $ret['ssl_txn_id'];
$order_status = $this->payment_params->verified_status;
$url = HIKASHOP_LIVE.'administrator/index.php?option=com_hikashop&ctrl=order&task=listing';
$order_text = "\r\n".JText::sprintf('NOTIFICATION_OF_ORDER_ON_WEBSITE','',HIKASHOP_LIVE);
$order_text .= "\r\n".str_replace('<br/>',"\r\n",JText::sprintf('ACCESS_ORDER_WITH_LINK',$url));
$email->subject = JText::sprintf('PAYMENT_NOTIFICATION','VirtualMerchant','Accepted');
$email->body = str_replace('<br/>',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','VirtualMerchant','Accepted')).' '.JText::sprintf('ORDER_STATUS_CHANGED', hikashop_orderStatus($order_status))."\r\n\r\n".$order_text;
$this->modifyOrder($order,$order_status,$history,$email);
} else {
if(empty($ret['errorMessage'])){
$ret['errorMessage'] = 'An error occurred with the payment';
}
$this->app->enqueueMessage('Error Code #' . $ret['errorCode'] . ': ' . $ret['errorMessage']);
$do = false;
}
} else {
$this->app->enqueueMessage('An error occurred.');
$do = false;
}
$this->ccClear();
} else {
$this->app->enqueueMessage('An error occurred. '. $error);
$do = false;
}
return true;
}
function onAfterOrderConfirm(&$order,&$methods,$method_id){
parent::onAfterOrderConfirm($order, $methods, $method_id);
$this->removeCart = true;
return $this->showPage('thanks');
}
function getPaymentDefaultValues(&$element) {
$element->payment_name='VirtualMerchant (Elavon)';
$element->payment_description='You can pay by credit card using this payment method';
$element->payment_images='MasterCard,VISA,Credit_card,American_Express,Discover';
$element->payment_params->invalid_status='cancelled';
$element->payment_params->pending_status='created';
$element->payment_params->verified_status='confirmed';
}
}
PK ! 5k�� � # virtualmerchant/virtualmerchant.xmlnu �[��� <?xml version="1.0" encoding="utf-8"?>
<extension type="plugin" version="2.5" method="upgrade" group="hikashoppayment">
<name>Hikashop Virtual Merchant (Elavon) Payment Plugin</name>
<creationDate>29 avril 2022</creationDate>
<version>4.5.1</version>
<author>Obsidev</author>
<authorEmail>dev@hikashop.com</authorEmail>
<authorUrl>http://www.hikashop.com</authorUrl>
<copyright>(C) 2010-2022 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 virtualmerchant payment system</description>
<files>
<filename plugin="virtualmerchant">virtualmerchant.php</filename>
<filename>virtualmerchant_thanks.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>
PK ! �'���"