1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
ebay.php
См. документацию.
1<?php
2
3namespace Bitrix\Sale\TradingPlatform\Ebay;
4
5use Bitrix\Main\Application;
6use Bitrix\Main\Localization\Loc;
7use Bitrix\Sale\TradingPlatform\Logger;
8use Bitrix\Sale\TradingPlatform\Platform;
9
10Loc::loadMessages(__FILE__);
11
12class Ebay extends Platform
13{
14 //todo: check if token for sftp is expired
15
16 const TRADING_PLATFORM_CODE = "ebay";
17 const API_URL = "https://api.ebay.com/ws/api.dll";
18
23 public static function getInstance()
24 {
25 return parent::getInstanceByCode(self::TRADING_PLATFORM_CODE);
26 }
27
28 public static function getSftpTokenUrl($accountName)
29 {
30 return "https://".self::getServiceHost()."/ebay/".
31 "?action=OAUTH_AUTH".
32 "&LICENCE_HASH=".self::getLicenseHash().
33 "&ACCOUNT_NAME=".htmlspecialcharsbx($accountName).
34 "&BACK_URL=".urlencode((\CMain::IsHTTPS() ? "https://" : "http://").$_SERVER['HTTP_HOST']);
35 }
36
37 public static function getApiTokenUrl()
38 {
39 return "https://".self::getServiceHost()."/ebay/".
40 "?action=GET_AUTH_URL&LICENCE_HASH=".self::getLicenseHash().
41 "&BACK_URL=".urlencode((\CMain::IsHTTPS() ? "https://" : "http://").$_SERVER['HTTP_HOST']);
42 }
43
44 protected static function getLicenseHash()
45 {
46 return md5(defined("LICENSE_KEY") ? LICENSE_KEY : "DEMO");
47 }
48
49 protected static function getServiceHost()
50 {
51 if (defined('SALE_EBAY_SERVICE_HOST'))
52 {
53 return SALE_EBAY_SERVICE_HOST;
54 }
55
56 $region = Application::getInstance()->getLicense()->getRegion();
57 if ($region === 'ru' || $region === 'by' || $region === 'kz')
58 {
59 return 'util.1c-bitrix.ru';
60 }
61 else
62 {
63 return 'util.bitrixsoft.com';
64 }
65 }
66
72 public function setActive()
73 {
74 if($this->isActive())
75 return true;
76
77 RegisterModuleDependences("sale", "OnSaleDeductOrder", "sale", '\Bitrix\Sale\TradingPlatform\Ebay\Helper', "onSaleDeductOrder", 100);
78 return parent::setActive();
79 }
80
85 public function unsetActive()
86 {
87 if(!$this->isActive())
88 return true;
89
90 UnRegisterModuleDependences("sale", "OnSaleDeductOrder", "sale", '\Bitrix\Sale\TradingPlatform\Ebay\Helper', "onSaleDeductOrder", 100);
91 return parent::unsetActive();
92 }
93
98 public function install()
99 {
100 RegisterModuleDependences('main', 'OnEventLogGetAuditTypes', 'sale', '\Bitrix\Sale\TradingPlatform\Ebay\Helper', 'OnEventLogGetAuditTypes');
101
102 $tptAddRes = \Bitrix\Sale\TradingPlatformTable::add(array(
103 "CODE" => $this->getCode(),
104 "ACTIVE" => "N",
105 "NAME" => Loc::getMessage("SALE_EBAY_NAME"),
106 "DESCRIPTION" => Loc::getMessage("SALE_EBAY_DESCRIPTION"),
107 "CATALOG_SECTION_TAB_CLASS_NAME" => '\Bitrix\Sale\TradingPlatform\Ebay\CatalogSectionTabHandler',
108 "CLASS" => '\Bitrix\Sale\TradingPlatform\Ebay\Ebay'
109 ));
110
111 $ebay = Ebay::getInstance();
112 $catMapEntRes = \Bitrix\Sale\TradingPlatform\MapEntityTable::add(array(
113 "TRADING_PLATFORM_ID" => $ebay->getId(),
114 "CODE" => "CATEGORY"
115 ));
116
117 $eventRes = Helper::installEvents();
118 $fsRes = Helper::createFeedFileStructure();
119
120 return $tptAddRes->isSuccess()
121 && $catMapEntRes->isSuccess()
122 && $eventRes
123 && $fsRes;
124 }
125
133 public function sendErrorMail($type, $details, $siteId)
134 {
135 if(!isset($this->settings[$siteId]["EMAIL_ERRORS"]) || $this->settings[$siteId]["EMAIL_ERRORS"] == '')
136 return false;
137
138 $loggerTypes = Helper::OnEventLogGetAuditTypes();
139 $errorType = isset($loggerTypes[$type]) ? $loggerTypes[$type] : $type;
140
141 $fields = array(
142 "EMAIL_TO" => $this->settings[$siteId]["EMAIL_ERRORS"],
143 "ERROR_TYPE" => $errorType,
144 "ERROR_DETAILS" => $details
145 );
146
147 $event = new \CEvent;
148
149 return $event->Send("SALE_EBAY_ERROR", $siteId, $fields, "N");
150 }
151
161 public static function log($level, $type, $itemId, $description, $siteId)
162 {
163 static $ebay = null;
164
165 if($ebay === null)
166 {
167 $ebay = self::getInstance();
168 $settings = $ebay->getSettings();
169
170 if(isset($settings[$siteId]["LOG_LEVEL"]))
171 {
172 $logLevel = $settings[$siteId]["LOG_LEVEL"];
173 $ebay->logger->setLevel($logLevel);
174 }
175 }
176
177 if($level == Logger::LOG_LEVEL_ERROR)
178 $ebay->sendErrorMail($type, $description, $siteId);
179
180 return $ebay->addLogRecord($level, $type, $itemId, $description);
181 }
182
183 public static function onAfterUpdateShipment(\Bitrix\Main\Event $event, array $additional)
184 {
185 $data = array();
186 $ebay = self::getInstance();
187 $settings = $ebay->getSettings();
188 $deliveryName = "Other";
189
190 if(
191 !empty($settings[$additional["SITE_ID"]]["MAPS"]["SHIPMENT"])
192 && is_array($settings[$additional["SITE_ID"]]["MAPS"]["SHIPMENT"])
193 )
194 {
195 $map = array_flip($settings[$additional["SITE_ID"]]["MAPS"]["SHIPMENT"]);
196
197 if(isset($map[$additional['DELIVERY_ID']]))
198 {
199 $deliveryName = $map[$additional['DELIVERY_ID']];
200
201 if(mb_substr($deliveryName, 0, 3) == "RU_")
202 $deliveryName = mb_substr($deliveryName, 3);
203 }
204 }
205
206 if(
207 !empty($additional["PARAMS"]["ORDER_LINES"])
208 && is_array($additional["PARAMS"]["ORDER_LINES"])
209 && !empty($additional["PARAMS"]["ORDER_ID"])
210 )
211 {
212 foreach($additional["PARAMS"]["ORDER_LINES"] as $lineId)
213 {
214 $data[] = array(
215 "ORDER_ID" => $additional["PARAMS"]["ORDER_ID"],
216 "ORDER_LINE_ITEM_ID" => $lineId,
217 "DELIVERY_NAME" => $deliveryName,
218 "TRACKING_NUMBER" => $additional['TRACKING_NUMBER']
219 );
220 }
221 }
222
223 if(!empty($data))
224 {
225 $ebayFeed = \Bitrix\Sale\TradingPlatform\Ebay\Feed\Manager::createFeed("SHIPMENT", $additional["SITE_ID"]);
226 $ebayFeed->setSourceData(array($data));
227 $ebayFeed->processData();
228 \Bitrix\Sale\TradingPlatform\Ebay\Agent::add('SHIPMENT', $additional["SITE_ID"], 1, true);
229 }
230 }
231
232 public static function getApiUrl()
233 {
234 return static::API_URL;
235 }
236}
$type
Определения options.php:106
static add($feedType, $siteId, $interval, $once=false)
Определения agent.php:82
static onAfterUpdateShipment(\Bitrix\Main\Event $event, array $additional)
Определения ebay.php:183
static getLicenseHash()
Определения ebay.php:44
static getServiceHost()
Определения ebay.php:49
sendErrorMail($type, $details, $siteId)
Определения ebay.php:133
const TRADING_PLATFORM_CODE
Определения ebay.php:16
static getApiTokenUrl()
Определения ebay.php:37
static getSftpTokenUrl($accountName)
Определения ebay.php:28
static getApiUrl()
Определения ebay.php:232
static getInstance()
Определения ebay.php:23
static log($level, $type, $itemId, $description, $siteId)
Определения ebay.php:161
static createFeed($feedType, $siteId, $timeLimit=0)
Определения manager.php:65
const LOG_LEVEL_ERROR
Определения logger.php:15
$data['IS_AVAILABLE']
Определения .description.php:13
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
if(Loader::includeModule( 'bitrix24')) elseif(Loader::includeModule('intranet') &&CIntranetUtils::getPortalZone() !=='ru') $description
Определения .description.php:24
$region
Определения .description.php:13
$_SERVER["DOCUMENT_ROOT"]
Определения cron_frame.php:9
$siteId
Определения ajax.php:8
const LICENSE_KEY($show_sql_stat=='Y')
Определения start.php:84
RegisterModuleDependences($FROM_MODULE_ID, $MESSAGE_ID, $TO_MODULE_ID, $TO_CLASS="", $TO_METHOD="", $SORT=100, $TO_PATH="", $TO_METHOD_ARG=[])
Определения tools.php:5295
UnRegisterModuleDependences($FROM_MODULE_ID, $MESSAGE_ID, $TO_MODULE_ID, $TO_CLASS="", $TO_METHOD="", $TO_PATH="", $TO_METHOD_ARG=[])
Определения tools.php:5289
$map
Определения config.php:5
Определения buffer.php:3
$event
Определения prolog_after.php:141