Spade

Mini Shell

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

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

PK�:�[�#o,,
index.htmlnu�[���<html><body
bgcolor="#FFFFFF"></body></html>PK�:�[���	3	3
paypalpro.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 plgHikashoppaymentPaypalpro extends hikashopPaymentPlugin
{
	var $accepted_currencies = array( 'USD', 'GBP',
'EUR', 'JPY', 'CAD', 'AUD' );
	var $multiple = true;
	var $name = 'paypalpro';
	var $pluginConfig = array(
		'login' => array('HIKA_USERNAME',
'input'),
		'password' => array('HIKA_PASSWORD',
'input'),
		'signature' => array('SIGNATURE',
'input'),
		'environnement' => array('ENVIRONNEMENT',
'list',array(
			'production' => 'HIKA_PRODUCTION',
			'sandbox' => 'HIKA_SANDBOX',
			'beta-sandbox' => 'Beta-Sandbox'
		)),
		'instant_capture' => array('Instant Capture',
'boolean','0'),
		'ask_ccv' => array('Ask CCV',
'boolean','1'),
		'details' => array('SEND_DETAILS_OF_ORDER',
'boolean','1'),
		'send_order_id' => array('Send order id',
'boolean','0'),
		'send_notification' => array('ORDER_NOTIFICATION',
'boolean','0'),
		'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;
		if( $method->payment_params->ask_ccv ) {
			$method->ask_ccv = true;
		}
		return true;
	}

	function onBeforeOrderCreate(&$order, &$do) {
		if(parent::onBeforeOrderCreate($order, $do) === true)
			return true;

		$this->ccLoad();

		$amount =
round($order->cart->full_total->prices[0]->price_value_with_tax,(int)$this->currency->currency_locale['int_frac_digits']);

		$vars = array(
			'USER' => $this->payment_params->login,
			'PWD' => $this->payment_params->password,
			'SIGNATURE' => $this->payment_params->signature,
			'VERSION' => '51.0',
			'METHOD' => 'DoDirectPayment',
			'PAYMENTACTION' =>
$this->payment_params->instant_capture?'Sale':'Authorization',
			'AMT' => $amount,
			'ACCT' => $this->cc_number,
			'EXPDATE' =>
$this->cc_month.'20'.$this->cc_year,
			'FIRSTNAME' =>
$order->cart->billing_address->address_firstname,
			'LASTNAME' =>
$order->cart->billing_address->address_lastname,
			'CURRENCYCODE' => $this->currency->currency_code,
			'EMAIL' => $this->user->user_email,
			'STREET' =>
@$order->cart->billing_address->address_street,
			'STREET2' =>
@$order->cart->billing_address->address_street2,
			'CITY' =>
@$order->cart->billing_address->address_city,
			'STATE' =>
@$order->cart->billing_address->address_state->zone_name,
			'COUNTRYCODE' =>
@$order->cart->billing_address->address_country->zone_code_2,
			'ZIP' =>
@$order->cart->billing_address->address_post_code,
			'BUTTONSOURCE' => 'HikariSoftware_Cart_DP'
		);

		if(@$this->payment_params->send_order_id){
			$database = JFactory::getDBO();
			$database->setQuery('SELECT MAX(order_id) FROM
#__hikashop_order;');
			$max = (int)$database->loadResult();
			$vars['INVNUM'] = $max+1;
		}

		if(!empty($order->cart->billing_address->address_street2)){
			$vars['STREET2'] =
substr($order->cart->billing_address->address_street2,0,99);
		}

		if(!empty($order->cart->shipping_address)){
			$vars['SHIPTONAME'] =
@$order->cart->shipping_address->address_firstname.'
'.@$order->cart->shipping_address->address_lastname;
			$vars['SHIPTOSTREET'] =
@$order->cart->shipping_address->address_street;
			$vars['SHIPTOSTREET2'] =
@$order->cart->shipping_address->address_street2;
			$vars['SHIPTOCITY'] =
@$order->cart->shipping_address->address_city;
			if(in_array(@$order->cart->shipping_address->address_country->zone_code_2,
array('US'))){
				$vars['SHIPTOSTATE'] =
@$order->cart->shipping_address->address_state->zone_code_3;
			}else{
				$vars['SHIPTOSTATE'] =
@$order->cart->shipping_address->address_state->zone_name;
			}
			$vars['SHIPTOCOUNTRY'] =
@$order->cart->shipping_address->address_country->zone_code_2;
			$vars['SHIPTOZIP'] =
@$order->cart->shipping_address->address_post_code;
			$vars['SHIPTOPHONENUM'] =
@$order->cart->shipping_address->address_phone;
		}

		if(!isset($this->payment_params->details))
$this->payment_params->details = 1;

		if(!empty($this->payment_params->details)){
			$vars_without_details = $vars;
			$i = 1;
			$tax = 0;
			$config =& hikashop_config();
			$group = $config->get('group_options',0);
			foreach($order->cart->products as $product){
				if($group && $product->order_product_option_parent_id)
continue;
				if($product->order_product_quantity<1) continue;
				$vars["L_NAME".$i] =
substr(strip_tags($product->order_product_name),0,127);
				$vars["L_NUMBER".$i] = $product->order_product_code;
				$vars["L_AMT".$i] =
round($product->order_product_price,(int)$this->currency->currency_locale['int_frac_digits']);
				$vars["L_QTY".$i] = $product->order_product_quantity;
				$vars["L_TAXAMT".$i] =
round($product->order_product_tax,(int)$this->currency->currency_locale['int_frac_digits']);
				$tax +=
round($product->order_product_tax,(int)$this->currency->currency_locale['int_frac_digits'])*$product->order_product_quantity;
				$i++;
			}
			if(bccomp($tax,0,5)){
				$vars['TAXAMT'] = round($tax + @$order->order_shipping_tax
+ @$order->order_payment_tax - $order->order_discount_tax,
(int)$this->currency->currency_locale['int_frac_digits']);
			}
			if(!empty($order->cart->coupon)){
				$discount = -
round($order->order_discount_price,(int)$this->currency->currency_locale['int_frac_digits']);
				$vars["L_NAME".$i] = JText::_('HIKASHOP_COUPON');
				$vars["L_NUMBER".$i] = 'coupon';
				$vars["L_AMT".$i] = $discount;
				$vars["L_QTY".$i] = 1;
				$vars["L_TAXAMT".$i] = 0;
				$i++;
			}

			if(!empty($order->order_payment_price) &&
bccomp($order->order_payment_price, 0, 5)) {
				$vars["L_NAME".$i] = JText::_('HIKASHOP_PAYMENT');
				$vars["L_NUMBER".$i] = 'payment';
				$vars["L_AMT".$i] = round($order->order_payment_price -
@$order->order_payment_tax,
(int)$this->currency->currency_locale['int_frac_digits']);
				$vars["L_QTY".$i] = 1;
				$vars["L_TAXAMT".$i] = round(@$order->order_payment_tax,
(int)$this->currency->currency_locale['int_frac_digits']);
				$i++;
			}

			if(!empty($order->order_shipping_price) &&
bccomp($order->order_shipping_price,0,5)){
				$vars['SHIPPINGAMT'] = round($order->order_shipping_price,
(int)$this->currency->currency_locale['int_frac_digits']);
			}
			$vars['ITEMAMT']=$vars['AMT']-(@$vars['TAXAMT']+@$vars['SHIPPINGAMT']);
			if($vars['ITEMAMT']==0){
				$vars = $vars_without_details;
			}
		}

		if( $this->payment_params->ask_ccv ) {
			$vars['CVV2'] = $this->cc_CCV;
		}

		if( $this->payment_params->debug ) {
			echo print_r($vars, true) . "\n\n\n";
		}

		$session = curl_init();
		curl_setopt($session, CURLOPT_SSL_VERIFYPEER, false);
		curl_setopt($session, CURLOPT_SSL_VERIFYHOST, false);
		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_SSLVERSION, 6);
		curl_setopt($session, CURLOPT_FAILONERROR,    true);

		$httpsHikashop = str_replace('http://','https://',
HIKASHOP_LIVE);
		$url = 'api-3t.paypal.com/nvp';
		if( $this->payment_params->environnement != 'production'
) {
			$url =
'api-3t.'.$this->payment_params->environnement.'.paypal.com/nvp';
		}

		if( $this->payment_params->debug ) {
			echo print_r($url, true) . "\n\n\n";
		}

		$tmp = array();
		foreach($vars as $k => $v) {
			$tmp[] = $k . '=' . urlencode(trim($v));
		}
		$tmp = implode('&', $tmp);

		curl_setopt($session, CURLOPT_URL, 'https://' . $url);
		curl_setopt($session, CURLOPT_REFERER, $httpsHikashop);
		curl_setopt($session, CURLOPT_POSTFIELDS, $tmp);

		$ret = curl_exec($session);
		$error = curl_errno($session);

		if( !$error ) {

			$params = explode('&', $ret);
			$ret = array();
			foreach($params as $p) {
				$t = explode('=', $p);
				$ret[strtoupper($t[0])] = $t[1];
			}

			if( $this->payment_params->debug ) {
				echo print_r($ret, true) . "\n\n\n";
			}

			$responseCode = null;
			if( isset($ret['ACK']) ) {
				$responseCode = strtoupper($ret['ACK']);
			}

			if( isset($responseCode) ) {

				if( $responseCode == 'SUCCESS' || $responseCode ==
'SUCCESSWITHWARNING' ) {
					$history = array(
						'notified' =>
(int)@$this->payment_params->send_notification,
						'data' => 'PayPal transaction id: '
.$ret['TRANSACTIONID'],
					);
					$this->modifyOrder($order,
$this->payment_params->verified_status, $history, false);
					$this->transaction_id = $ret['TRANSACTIONID'];
				} else {
					$message = 'Error';
					if(!empty($ret['ERRORCODE'])){
						$message.=' '.$ret['ERRORCODE'];
					}elseif(!empty($ret['L_ERRORCODE0'])){
						$message.=' '.$ret['L_ERRORCODE0'];
					}
					if(!empty($ret['LONGMESSAGE'])){
						$message.=': '.urldecode($ret['LONGMESSAGE']);
					}elseif(!empty($ret['L_LONGMESSAGE0'])){
						$message.=':
'.urldecode($ret['L_LONGMESSAGE0']);
					}

					$this->app->enqueueMessage($message);
					$do = false;
				}
			} else {
				$this->app->enqueueMessage('An error occurred. No response
code in PayPal Pro server\'s response');
				$do = false;
			}
		} else {
			$this->app->enqueueMessage('An error occurred. The connection
to the PayPal Pro server could not be established:
'.curl_error($session));
			$do = false;
		}
		curl_close($session);

		$this->ccClear();

		return true;
	}

	function onAfterOrderCreate(&$order, &$do) {
	 	$this->loadOrderData($order);
		$this->loadPaymentParams($order);
		if(hikashop_isClient('administrator'))
			return true;
		if(empty($order->order_payment_method) ||
$order->order_payment_method != $this->name)
			return true;
		if(empty($this->payment_params))
			return false;

		if(!empty($this->transaction_id)){
			$email = new stdClass();
			$email->subject =
JText::sprintf('PAYMENT_NOTIFICATION_FOR_ORDER','PayPal
Pro','SUCCESS',$order->order_number);
			$url =
HIKASHOP_LIVE.'administrator/index.php?option=com_hikashop&ctrl=order&task=listing';
			$order_text =
"\r\n".JText::sprintf('NOTIFICATION_OF_ORDER_ON_WEBSITE',$order->order_number,HIKASHOP_LIVE);
			$order_text .=
"\r\n".str_replace('<br/>',"\r\n",JText::sprintf('ACCESS_ORDER_WITH_LINK',$url));
			$body =
str_replace('<br/>',"\r\n",JText::sprintf('PAYMENT_NOTIFICATION_STATUS','PayPal
Pro','SUCCESS')).'
'.JText::sprintf('ORDER_STATUS_CHANGED',$order->order_status)."\r\n\r\n".$order_text;
			$email->body = $body;

			$this->modifyOrder($order,$order->order_status,false,$email);

			$cartClass = hikashop_get('class.cart');
			$cartClass->cleanCartFromSession(false);
		}
	 }

	function onAfterOrderConfirm(&$order, &$methods,$method_id) {
		parent::onAfterOrderConfirm($order, $methods,$method_id);
		return $this->showPage('thanks');
	}

	function onPaymentConfiguration(&$element){
		parent::onPaymentConfiguration($element);
		$obj = $element;
		$field = '';
		if(empty($obj->payment_params->login)) {
			$field = JText::_('USERNAME');
		} elseif(empty($obj->payment_params->password)) {
			$field = JText::_('PASSWORD');
		} elseif(empty($obj->payment_params->signature)) {
			$field = JText::_('SIGNATURE');
		}
		if(!empty($field)) {
			$app = JFactory::getApplication();
			$lang = JFactory::getLanguage();
			$locale=strtolower(substr($lang->get('tag'), 0, 2));
			$app->enqueueMessage(JText::sprintf('ENTER_INFO_REGISTER_IF_NEEDED','PayPal
Pro',$field,'PayPal
Pro','https://www.paypal.com/'.$locale.'/mrb/pal=SXL9FKNKGAEM8'));
		}

		if(!empty($element->payment_params->details)){
			$config = hikashop_config();
			$round_calculations = $config->get('round_calculations');
			if(empty($round_calculations)){
				$app = JFactory::getApplication();
				$app->enqueueMessage('When you activate the "Send details
of the order" setting, PayPal calculate itself the total amount and
round prices during calculations. So you need to have option "Round
prices during calculations" turned on in the HikaShop configuration in
order for HikaShop to calculate the total in the same way. Otherwise, you
might get payments with an amount different than the total amount of the
orders and it will create an error.');
			}
		}
	}


	function getPaymentDefaultValues(&$element) {
		$element->payment_name='PayPal Pro';
		$element->payment_description='You can pay by credit card using
this payment method';
		$element->payment_images='MasterCard,VISA,Credit_card,Discover';

		$element->payment_params->login='';
		$element->payment_params->password='';
		$element->payment_params->ask_ccv = true;
		$element->payment_params->pending_status='created';
		$element->payment_params->verified_status='confirmed';
	}
}
PK�:�[�y�;��
paypalpro.xmlnu�[���<?xml
version="1.0" encoding="utf-8"?>
<extension type="plugin" version="2.5"
method="upgrade" group="hikashoppayment">
	<name>Hikashop Paypal Pro 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 Paypal Pro
payment system</description>
	<files>
		<filename
plugin="paypalpro">paypalpro.php</filename>
		<filename>paypalpro_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�:�[i�||paypalpro_thanks.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_paypalpro_thankyou"
id="hikashop_paypalpro_thankyou">
	<span id="hikashop_paypalpro_thankyou_message"
class="hikashop_paypalpro_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�:�[���	3	3
fpaypalpro.phpnu�[���PK�:�[�y�;��
�3paypalpro.xmlnu�[���PK�:�[i�||�8paypalpro_thanks.phpnu�[���PK8a<