Spade
Mini Shell
| Directory:~$ /home/lmsyaran/public_html/joomla4/ |
| [Home] [System Details] [Kill Me] |
PK��[�#o,,
index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK��[��<�<migsvpc.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
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;
}
$postdata = array();
foreach($vars as $k => $v) {
$postdata[] = urlencode($k).'='.urlencode($v);
}
$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'];
}
if( $result > 0 ) {
if( $result == 2 ) {
$do = true;
$dbg .= ob_get_clean();
if( !empty($dbg) ) $dbg .= "\r\n";
ob_start();
$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 {
$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��[�(A\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>12 février 2021</creationDate>
<version>4.4.1</version>
<author>Obsidev</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 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��[�� ssmigsvpc_thankyou.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_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��[�#o,,
index.htmlnu�[���PK��[��<�<fmigsvpc.phpnu�[���PK��[�(A\s=migsvpc.xmlnu�[���PK��[��
ss�Bmigsvpc_thankyou.phpnu�[���PK4F