1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
base.php
См. документацию.
1<?
2namespace Sale\Handlers\Delivery\Additional\DeliveryRequests\RusPost\Requests;
3
4use Bitrix\Main\Error;
5use Bitrix\Main\Web\Json;
6use Bitrix\Sale\Delivery;
7use Bitrix\Main\Web\HttpClient;
8use Bitrix\Main\Localization\Loc;
9use Bitrix\Sale\Delivery\Requests;
10use Sale\Handlers\Delivery\AdditionalHandler;
11
12Loc::loadMessages(__FILE__);
13
19abstract class Base
20{
22 protected $httpClient = null;
23 protected $url = "https://otpravka-api.pochta.ru";
24
25 protected $path = "";
26 protected $type = "";
27
29 protected $deliveryService = null;
30
35 public function __construct(Delivery\Services\Base $deliveryService, HttpClient $httpClient)
36 {
37 $this->deliveryService = $deliveryService;
38 $deliveryConfig = $deliveryService->getConfigValues();
39
40 $this->httpClient = $httpClient;
41
42 $this->httpClient->setHeader("Authorization", "AccessToken ".$deliveryConfig['MAIN']['OTPRAVKA_AUTH_TOKEN']);
43 $this->httpClient->setHeader("X-User-Authorization", "Basic ".$deliveryConfig['MAIN']['OTPRAVKA_AUTH_KEY']);
44 $this->httpClient->setHeader("Content-Type", "application/json;charset=UTF-8");
45 }
46
50 protected function getUrl()
51 {
52 return $this->url.$this->path;
53 }
54
60 protected function convertResponse($rawData, $requestData)
61 {
62 $result = new Requests\Result();
63 $result->setData($rawData);
64 return $result;
65 }
66
72 public function process(array $shipmentIds, array $additional = array())
73 {
74 $bodyResult = $this->createBody($shipmentIds, $additional);
75
76 if(!$bodyResult->isSuccess())
77 return $bodyResult;
78
79 $result = $this->send($bodyResult->getData(), $additional);
80 $result->addResults($bodyResult->getResults());
81 return $result;
82 }
83
89 public function createBody(array $shipmentIds, array $additional = array())
90 {
91 return new Requests\Result();
92 }
93
99 public function send(array $requestData = array(), array $additional = array())
100 {
101 $result = new Requests\Result();
102 $jsonData = !empty($requestData) ? Json::encode($requestData) : null;
103 $httpRes = false;
104
105 if(@$this->httpClient->query($this->type, $this->getUrl(), $jsonData))
106 {
107 $httpRes = $this->httpClient->getResult();
108 }
109
110 $errors = $this->httpClient->getError();
111
112 if(!$httpRes && !empty($errors))
113 {
114 foreach($errors as $errorCode => $errMes)
115 {
116 if($errMes == 'Socket connection error.')
117 {
118 $errMes = Loc::getMessage(
119 'SALE_DLVRS_ADD_DREQ_RBASE_SEND_ERROR',
120 array('#URL#' => $this->url)
121 );
122 }
123
124 $result->addError(new Error($errMes, $errorCode));
125 }
126 }
127 else
128 {
129 $response = array();
130
131 try
132 {
133 $response = Json::decode($httpRes);
134 }
135 catch(\Exception $e)
136 {
137 $result->addError(new Error($e->getMessage()));
138 }
139
140 $status = $this->httpClient->getStatus();
141
142 if ($status != 200)
143 {
144 $message = '';
145
146 if($status == 404)
147 {
148 $message = Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASE_01');
149
150 if(!empty($response))
151 if($response['code'] == '1001' && $response['sub-code'] == 'RESOURCE_NOT_FOUND')
152 $message = Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASE_02');
153 }
154 elseif($status == 401)
155 {
156 $message = Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASE_03');;
157 }
158 elseif($status == 500)
159 {
160 $message = Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASE_INTERNAL_ERROR');;
161 }
162
163 if($message == '')
164 $message = $message.' ('.Loc::getMessage('SALE_DLVRS_ADD_DREQ_RBASE_HTTP_STATUS').' '.$status.')';
165
166 $result->addError(new Error($message,'STATUS_'.$status));
167 }
168 else
169 {
170 $convertResult = $this->convertResponse($response, $requestData);
171
172 if(!$convertResult->isSuccess())
173 $result->addErrors($convertResult->getErrors());
174
175 $result->addResults($convertResult->getResults());
176 $result->setData($convertResult->getData());
177 }
178 }
179
180 return $result;
181 }
182
187 public function getFormFields(array $entityIds)
188 {
189 return array();
190 }
191}
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$errors
Определения iblock_catalog_edit.php:74
$status
Определения session.php:10
trait Error
Определения error.php:11
$message
Определения payment.php:8
if( $daysToExpire >=0 &&$daysToExpire< 60 elseif)( $daysToExpire< 0)
Определения prolog_main_admin.php:393
$response
Определения result.php:21