diff --git a/connector-miravia/README.md b/connector-miravia/README.md index 966bb50..48596b5 100644 --- a/connector-miravia/README.md +++ b/connector-miravia/README.md @@ -1,32 +1,126 @@ -=== Woo for Miravia === -Contributors: wecommsolutions -Tags: miravia, woocommerce miravia, alibaba, aliexpress -Requires at least: 5.0 -Tested up to: 6.3 -Requires PHP: 5.0 -Stable tag: 1.0.0 -License: GPLv2 -License URI: https://www.gnu.org/licenses/gpl-2.0.html +# Miravia Feed API Connector -== Description == +Official WordPress/WooCommerce plugin for Miravia marketplace integration using the native Feed API. -Connect your store with Miravia, upload your products to Miravia and Download orders. +## Overview -== Installation == +This plugin provides seamless integration between WooCommerce and Miravia marketplace, allowing merchants to: +- Upload products using Miravia's official Feed API +- Manage product synchronization with job queue monitoring +- Download and process orders from Miravia +- Handle multiple Miravia accounts and profiles -* Upload the add-in folder to the "/ wp-content / plugins /" directory or install the add-in directly from the WordPress add-ons screen. -* Activate the plugin from the «Add-ons» screen in WordPress -* Enjoy! - -== FAQ == +## Key Features -Visit wecomm.es - -== Changelog == +### ✅ Feed API Integration +- **Official API**: Uses Miravia's native Feed API (no third-party proxies) +- **Asynchronous Processing**: Jobs are processed in background with real-time status monitoring +- **Bulk Operations**: Submit multiple products simultaneously +- **Error Handling**: Comprehensive error tracking and retry functionality -= 1.0.0 = -* Initial version +### ✅ Product Management +- **Direct Upload**: Submit individual products or bulk selections +- **Status Monitoring**: Real-time job status tracking in admin interface +- **Auto-sync**: Automatic product updates when WooCommerce data changes +- **Image Support**: Proper image handling for Miravia's requirements -== Localization == +### ✅ Order Management +- **Order Import**: Download orders from Miravia to WooCommerce +- **Status Sync**: Bidirectional order status synchronization +- **Shipping Labels**: Generate and manage shipping labels +- **Multi-account**: Support for multiple Miravia seller accounts -English (US). +## Requirements + +- **WordPress**: 5.0 or higher +- **WooCommerce**: 3.0 or higher +- **PHP**: 7.4 or higher +- **Miravia Account**: Active seller account with API credentials + +## Installation + +1. Upload the plugin files to `/wp-content/plugins/miravia-feed-connector/` +2. Activate the plugin through WordPress admin +3. Go to **Miravia > Configuration** and enter your API credentials +4. Enable "Use Feed API Only" option +5. Test your API connection + +## Configuration + +### API Credentials + +Navigate to **Miravia > Configuration** and provide: + +- **App Key**: Your Miravia/AliExpress App Key +- **Secret Key**: Your Miravia/AliExpress Secret Key +- **Access Token**: Your personal seller access token + +### Feed API Settings + +Enable "Use Feed API Only" to use the official Miravia Feed API (recommended for all seller accounts). + +## Usage + +### Product Upload + +1. Go to **Miravia > Products** +2. Select products using checkboxes +3. Click "Submit Selected to Feed API" +4. Monitor progress in **Miravia > Jobs** + +### Job Monitoring + +The Jobs Queue provides: +- Real-time status updates +- Filtering by status (Pending, Processing, Completed, Failed) +- Error details and retry functionality +- Processing time tracking + +### Order Management + +Orders are automatically downloaded from Miravia and created as WooCommerce orders with proper status mapping. + +## Development + +### Architecture + +- **Feed Manager**: Core job handling (`MiraviaFeedManager`) +- **SDK Integration**: Direct API client (`MiraviaSdk`, `SimpleIopClient`) +- **Database**: Custom tables for jobs and sync data +- **AJAX Interface**: WordPress-native AJAX endpoints + +### Database Tables + +- `wp_miravia_feed_jobs`: Feed API job tracking +- `wp_miravia_accounts`: Seller account credentials +- `wp_miravia_profiles`: Product upload profiles +- `wp_miravia_products`: Product sync status + +## Support + +For issues, feature requests, or development questions: + +- **Repository**: https://github.com/CloudHost/miravia-woocommerce-connector +- **Issues**: https://github.com/CloudHost/miravia-woocommerce-connector/issues +- **Developer**: CloudHost Solutions + +## Changelog + +### Version 2.0.0 +- Complete rebuild using official Feed API +- Removed WeComm proxy dependencies +- Added job queue system with real-time monitoring +- Enhanced error handling and retry functionality +- Updated branding to CloudHost Solutions +- Improved WordPress admin integration + +### Version 1.x +- Legacy WeComm proxy integration (deprecated) + +## License + +GPL v3 or later. See [LICENSE](https://www.gnu.org/licenses/gpl-3.0.html) for details. + +--- + +**CloudHost Solutions** | https://cloudhost.es \ No newline at end of file diff --git a/connector-miravia/classes/Sdk/AeSdk/Iop/Constants.php b/connector-miravia/classes/Sdk/AeSdk/Iop/Constants.php deleted file mode 100644 index c935aaf..0000000 --- a/connector-miravia/classes/Sdk/AeSdk/Iop/Constants.php +++ /dev/null @@ -1,12 +0,0 @@ -appkey; - } - - public function __construct($url = "", $appkey = "", $secretKey = "") - { - $length = strlen($url); - if ($length == 0) { - throw new \InvalidArgumentException("url is empty", 0); - } - $this->gatewayUrl = $url; - $this->appkey = $appkey; - $this->secretKey = $secretKey; - $this->logLevel = Constants::$log_level_error; - } - - protected function generateSign($apiName, $params): string - { - ksort($params); - - $stringToBeSigned = ''; - if (str_contains($apiName, '/')) {//rest服务协议 - $stringToBeSigned .= $apiName; - } - foreach ($params as $k => $v) { - $stringToBeSigned .= "$k$v"; - } - unset($k, $v); - - return strtoupper($this->hmac_sha256($stringToBeSigned, $this->secretKey)); - } - - public function hmac_sha256($data, $key): string - { - return hash_hmac('sha256', $data, $key); - } - - public function curl_get($url, $apiFields = null, $headerFields = null) - { - $ch = curl_init(); - - foreach ($apiFields as $key => $value) { - $url .= "&" . "$key=" . urlencode($value); - } - - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_FAILONERROR, false); - curl_setopt($ch, CURLOPT_HEADER, false); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); - - if ($headerFields) { - $headers = []; - foreach ($headerFields as $key => $value) { - $headers[] = "$key: $value"; - } - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - unset($headers); - } - - if ($this->readTimeout) { - curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout); - } - - if ($this->connectTimeout) { - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout); - } - - curl_setopt($ch, CURLOPT_USERAGENT, $this->sdkVersion); - - //https ignore ssl check ? - if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) === "https") { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - } - - $output = curl_exec($ch); - - $errno = curl_errno($ch); - - if ($errno) { - curl_close($ch); - throw new \RuntimeException($errno, 0); - } - - $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - curl_close($ch); - if (200 !== $httpStatusCode) { - throw new \RuntimeException($output, $httpStatusCode); - } - - return $output; - } - - public function curl_post($url, $postFields = null, $fileFields = null, $headerFields = null) - { - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_FAILONERROR, false); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - if ($this->readTimeout) { - curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout); - } - - if ($this->connectTimeout) { - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout); - } - - if ($headerFields) { - $headers = []; - foreach ($headerFields as $key => $value) { - $headers[] = "$key: $value"; - } - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - unset($headers); - } - - curl_setopt($ch, CURLOPT_USERAGENT, $this->sdkVersion); - - //https ignore ssl check ? - if (strlen($url) > 5 && strtolower(substr($url, 0, 5)) === "https") { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - } - - $delimiter = '-------------' . uniqid(); - $data = ''; - if ($postFields != null) { - foreach ($postFields as $name => $content) { - $data .= "--" . $delimiter . "\r\n"; - $data .= 'Content-Disposition: form-data; name="' . $name . '"'; - $data .= "\r\n\r\n" . $content . "\r\n"; - } - unset($name, $content); - } - - if ($fileFields != null) { - foreach ($fileFields as $name => $file) { - $data .= "--" . $delimiter . "\r\n"; - $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n"; - $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n"; - $data .= $file['content'] . "\r\n"; - } - unset($name, $file); - } - $data .= "--" . $delimiter . "--"; - - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, - [ - 'Content-Type: multipart/form-data; boundary=' . $delimiter, - 'Content-Length: ' . strlen($data) - ] - ); - - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, $data); - - $response = curl_exec($ch); - unset($data); - - $errno = curl_errno($ch); - if ($errno) { - curl_close($ch); - throw new \RuntimeException($errno, 0); - } - - $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - curl_close($ch); - if (200 !== $httpStatusCode) { - throw new \RuntimeException($response, $httpStatusCode); - } - - return $response; - } - - public function execute(IopRequest $request, $accessToken = null) - { - $sysParams["app_key"] = $this->appkey; - $sysParams["sign_method"] = $this->signMethod; - $sysParams["timestamp"] = $this->msectime(); - $sysParams["method"] = $request->apiName; - $sysParams["partner_id"] = $this->sdkVersion; - $sysParams["simplify"] = $request->simplify; - $sysParams["format"] = $request->format; - - if (null !== $accessToken) { - $sysParams["session"] = $accessToken; - } - - $apiParams = $request->udfParams; - - $requestUrl = $this->gatewayUrl; - - if ($this->endWith($requestUrl, "/")) { - $requestUrl = substr($requestUrl, 0, -1); - } - - // $requestUrl .= $request->apiName; - $requestUrl .= '?'; - - if ($this->logLevel === Constants::$log_level_debug) { - $sysParams["debug"] = 'true'; - } - $sysParams["sign"] = $this->generateSign($request->apiName, array_merge($apiParams, $sysParams)); - - foreach ($sysParams as $sysParamKey => $sysParamValue) { - $requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&"; - } - - $requestUrl = substr($requestUrl, 0, -1); - - $resp = ''; - - try { - if ($request->httpMethod === 'POST') { - $resp = $this->curl_post($requestUrl, $apiParams, $request->fileParams, $request->headerParams); - } else { - $resp = $this->curl_get($requestUrl, $apiParams, $request->headerParams); - } - } catch (\Throwable $e) { - $this->logApiError($requestUrl, "HTTP_ERROR_" . $e->getCode(), $e->getMessage()); - throw $e; - } - - unset($apiParams); - - $respObject = json_decode($resp); - if (isset($respObject->code) && $respObject->code != "0") { - $this->logApiError($requestUrl, $respObject->code, $respObject->message); - } else { - if ($this->logLevel == Constants::$log_level_debug || $this->logLevel == Constants::$log_level_info) { - $this->logApiError($requestUrl, '', ''); - } - } - - return $resp; - } - - protected function logApiError($requestUrl, $errorCode, $responseTxt) - { - $localIp = $_SERVER["SERVER_ADDR"] ?? "CLI"; - $logger = new IopLogger; - $logger->conf["log_file"] = rtrim(root_path(), '\\/') . '/' . "logs/iopsdk.log." . date("Y-m-d"); - $logger->conf["separator"] = "^_^"; - $logData = [ - date("Y-m-d H:i:s"), - $this->appkey, - $localIp, - PHP_OS, - $this->sdkVersion, - $requestUrl, - $errorCode, - str_replace("\n", "", $responseTxt) - ]; - $logger->log($logData); - } - - public function msectime(): string - { - [$msec, $sec] = explode(' ', microtime()); - - return $sec . '000'; - } - - public function endWith($haystack, $needle): bool - { - $length = strlen($needle); - if ($length === 0) { - return false; - } - - return (substr($haystack, -$length) === $needle); - } - -} diff --git a/connector-miravia/classes/Sdk/AeSdk/Iop/IopLogger.php b/connector-miravia/classes/Sdk/AeSdk/Iop/IopLogger.php deleted file mode 100644 index 1f27d38..0000000 --- a/connector-miravia/classes/Sdk/AeSdk/Iop/IopLogger.php +++ /dev/null @@ -1,43 +0,0 @@ - "\t", - "log_file" => "" - ]; - - private $fileHandle; - - protected function getFileHandle() - { - if (null === $this->fileHandle) { - if (empty($this->conf["log_file"])) { - trigger_error("no log file spcified."); - } - $logDir = dirname($this->conf["log_file"]); - if (!is_dir($logDir) && !mkdir($logDir, 0777, true) && !is_dir($logDir)) { - throw new \RuntimeException(sprintf('Directory "%s" was not created', $logDir)); - } - $this->fileHandle = fopen($this->conf["log_file"], "a"); - } - - return $this->fileHandle; - } - - public function log($logData) - { - if ("" == $logData || [] == $logData) { - return false; - } - if (is_array($logData)) { - $logData = implode($this->conf["separator"], $logData); - } - $logData .= "\n"; - fwrite($this->getFileHandle(), $logData); - } - -} \ No newline at end of file diff --git a/connector-miravia/classes/Sdk/AeSdk/Iop/IopRequest.php b/connector-miravia/classes/Sdk/AeSdk/Iop/IopRequest.php deleted file mode 100644 index 04a2241..0000000 --- a/connector-miravia/classes/Sdk/AeSdk/Iop/IopRequest.php +++ /dev/null @@ -1,78 +0,0 @@ -apiName = $apiName; - $this->httpMethod = $httpMethod; - - if ($this->startWith($apiName, "//")) { - throw new \InvalidArgumentException("api name is invalid. It should be start with /"); - } - } - - public function addApiParam($key, $value) - { - - if (!is_string($key)) { - throw new \InvalidArgumentException("api param key should be string"); - } - - if (is_object($value)) { - $this->udfParams[$key] = json_decode($value); - } else { - $this->udfParams[$key] = $value; - } - } - - public function addFileParam($key, $content, $mimeType = 'application/octet-stream') - { - if (!is_string($key)) { - throw new \InvalidArgumentException("api file param key should be string"); - } - - $file = [ - 'type' => $mimeType, - 'content' => $content, - 'name' => $key - ]; - $this->fileParams[$key] = $file; - } - - public function addHttpHeaderParam($key, $value) - { - if (!is_string($key)) { - throw new \InvalidArgumentException("http header param key should be string"); - } - - if (!is_string($value)) { - throw new \InvalidArgumentException("http header param value should be string"); - } - - $this->headerParams[$key] = $value; - } - - public function startWith($str, $needle) - { - return strpos($str, $needle) === 0; - } - -} \ No newline at end of file diff --git a/connector-miravia/classes/Sdk/AeSdk/Iop/UrlConstants.php b/connector-miravia/classes/Sdk/AeSdk/Iop/UrlConstants.php deleted file mode 100644 index 2bace28..0000000 --- a/connector-miravia/classes/Sdk/AeSdk/Iop/UrlConstants.php +++ /dev/null @@ -1,12 +0,0 @@ -appKey; - } - - public function __construct($url = "", $appKey = "", $secretKey = "") - { - $length = strlen($url); - if ($length === 0) { - throw new \InvalidArgumentException("url is empty", 0); - } - $this->gatewayUrl = $url; - $this->appKey = $appKey; - $this->secretKey = $secretKey; - $this->logLevel = $this->log_level_error; - } - - protected function generateSign($apiName, $params): string - { - ksort($params); - - $stringToBeSigned = ''; - if (strpos($apiName, '/')) {//rest服务协议 - $stringToBeSigned .= $apiName; - } - foreach ($params as $k => $v) { - $stringToBeSigned .= "$k$v"; - } - unset($k, $v); - - return strtoupper($this->hmac_sha256($stringToBeSigned, $this->secretKey)); - } - - public function hmac_sha256($data, $key): string - { - return hash_hmac('sha256', $data, $key); - } - - public function curl_get($url, $apiFields = null, $headerFields = null) - { - $ch = curl_init(); - - foreach ($apiFields as $key => $value) { - $url .= "&" . "$key=" . urlencode($value); - } - - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - curl_setopt($ch, CURLOPT_FAILONERROR, false); - curl_setopt($ch, CURLOPT_HEADER, false); - curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); - - if ($headerFields) { - $headers = []; - foreach ($headerFields as $key => $value) { - $headers[] = "$key: $value"; - } - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - unset($headers); - } - - if ($this->readTimeout) { - curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout); - } - - if ($this->connectTimeout) { - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout); - } - - curl_setopt($ch, CURLOPT_USERAGENT, $this->sdkVersion); - - //https ignore ssl check ? - if (strlen($url) > 5 && stripos($url, "https") === 0) { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - } - - $output = curl_exec($ch); - $errno = curl_errno($ch); - if ($errno) { - curl_close($ch); - throw new \RuntimeException($errno, 0); - } - - $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - curl_close($ch); - if (200 !== $httpStatusCode) { - throw new \RuntimeException($output, $httpStatusCode); - } - - return $output; - } - - public function curl_post($url, $postFields = null, $fileFields = null, $headerFields = null) - { - $ch = curl_init(); - curl_setopt($ch, CURLOPT_URL, $url); - curl_setopt($ch, CURLOPT_FAILONERROR, false); - curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); - - if ($this->readTimeout) { - curl_setopt($ch, CURLOPT_TIMEOUT, $this->readTimeout); - } - - if ($this->connectTimeout) { - curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $this->connectTimeout); - } - - if ($headerFields) { - $headers = []; - foreach ($headerFields as $key => $value) { - $headers[] = "$key: $value"; - } - curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); - unset($headers); - } - - curl_setopt($ch, CURLOPT_USERAGENT, $this->sdkVersion); - - //https ignore ssl check ? - if (strlen($url) > 5 && stripos($url, "https") === 0) { - curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); - curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false); - } - - $delimiter = '-------------' . uniqid(); - $data = ''; - if ($postFields != null) { - foreach ($postFields as $name => $content) { - $data .= "--" . $delimiter . "\r\n"; - $data .= 'Content-Disposition: form-data; name="' . $name . '"'; - $data .= "\r\n\r\n" . $content . "\r\n"; - } - unset($name, $content); - } - - if ($fileFields !== null) { - foreach ($fileFields as $name => $file) { - $data .= "--" . $delimiter . "\r\n"; - $data .= 'Content-Disposition: form-data; name="' . $name . '"; filename="' . $file['name'] . "\" \r\n"; - $data .= 'Content-Type: ' . $file['type'] . "\r\n\r\n"; - $data .= $file['content'] . "\r\n"; - } - unset($name, $file); - } - $data .= "--" . $delimiter . "--"; - - curl_setopt($ch, CURLOPT_POST, true); - curl_setopt($ch, CURLOPT_HTTPHEADER, - [ - 'Content-Type: multipart/form-data; boundary=' . $delimiter, - 'Content-Length: ' . strlen($data) - ] - ); - - curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); - curl_setopt($ch, CURLOPT_POSTFIELDS, $data); - - $response = curl_exec($ch); - unset($data); - - $errno = curl_errno($ch); - if ($errno) { - curl_close($ch); - throw new \RuntimeException($errno, 0); - } - - $httpStatusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); - curl_close($ch); - if (200 !== $httpStatusCode) { - throw new \RuntimeException($response, $httpStatusCode); - } - - return $response; - } - - public function execute(IopRequest $request, $accessToken = null) - { - if ($accessToken && $this->isOverdueToken($accessToken)) { - throw new \InvalidArgumentException('token已过期,请重新授权,谢谢!!'); - } - $sysParams["app_key"] = $this->appKey; - $sysParams["sign_method"] = $this->signMethod; - $sysParams["timestamp"] = $this->msectime(); - $sysParams["method"] = $request->apiName; - $sysParams["partner_id"] = $this->sdkVersion; - $sysParams["simplify"] = $request->simplify; - $sysParams["format"] = $request->format; - - if (null !== $accessToken) { - $sysParams["session"] = $accessToken; - } - - $apiParams = $request->udfParams; - - $requestUrl = $this->gatewayUrl; - - if ($this->endWith($requestUrl, "/")) { - $requestUrl = substr($requestUrl, 0, -1); - } - - $requestUrl .= '?'; - - if ($this->logLevel === $this->log_level_debug) { - $sysParams["debug"] = 'true'; - } - $sysParams["sign"] = $this->generateSign($request->apiName, array_merge($apiParams, $sysParams)); - - foreach ($sysParams as $sysParamKey => $sysParamValue) { - $requestUrl .= "$sysParamKey=" . urlencode($sysParamValue) . "&"; - } - - $requestUrl = substr($requestUrl, 0, -1); - - try { - if ($request->httpMethod === 'POST') { - $resp = $this->curl_post($requestUrl, $apiParams, $request->fileParams, $request->headerParams); - } else { - $resp = $this->curl_get($requestUrl, $apiParams, $request->headerParams); - } - } catch (\Throwable $e) { - throw $e; - } - - unset($apiParams); - - if (strpos($resp, 'specified access token is invalid')) { - $this->saveOverdueToken($accessToken); - } else { - $this->clearOverdueToken($accessToken); - } - $respObject = json_decode($resp, false, 512, JSON_BIGINT_AS_STRING); - if ($respObject === false) { - throw new \RuntimeException('响应格式异常,解析失败;响应内容为' . $resp); - } - - return $respObject; - } - - protected function logApiError($requestUrl, $errorCode, $responseTxt): void - { - $localIp = $_SERVER["SERVER_ADDR"] ?? "CLI"; - $logger = new IopLogger; - $logger->conf["log_file"] = rtrim(root_path(), '\\/') . '/' . "logs/iopsdk.log." . date("Y-m-d"); - $logger->conf["separator"] = "^_^"; - $logData = [ - date("Y-m-d H:i:s"), - $this->appKey, - $localIp, - PHP_OS, - $this->sdkVersion, - $requestUrl, - $errorCode, - str_replace("\n", "", $responseTxt) - ]; - $logger->log($logData); - } - - public function msectime(): string - { - [$msec, $sec] = explode(' ', microtime()); - - return $sec . '000'; - } - - public function endWith($haystack, $needle): bool - { - $length = strlen($needle); - if ($length === 0) { - return false; - } - - return (substr($haystack, -$length) === $needle); - } - - public function isOverdueToken($token): bool - { - $file = rtrim(root_path(), '\\/') . '/tmp/ali_overdue_token/' . $token; - if (is_file($file)) { - $num = file_get_contents($file); - // 验证超过5次 或者 半小时以内创建的,不重新放行 - if ($num > 5 || (filemtime($file)) > (time() - 300)) { - return true; - } - } - - return false; - } - - public function saveOverdueToken($token): bool - { - $path = rtrim(root_path(), '\\/') . '/tmp/ali_overdue_token/'; - if (!is_dir($path) && !mkdir($path) && !is_dir($path)) { - throw new \RuntimeException(sprintf('Directory "%s" was not created', $path)); - } - $file = $path . '/' . $token; - $num = is_file($file) ? file_get_contents($file) + 1 : 1; - file_put_contents($file, $num); - - return true; - } - - public function clearOverdueToken($token): void - { - $file = rtrim(root_path(), '\\/') . '/tmp/ali_overdue_token/' . $token; - if (is_file($file)) { - @unlink($file); - } - } - -} diff --git a/connector-miravia/classes/Sdk/AeSdk/IopRequest.php b/connector-miravia/classes/Sdk/AeSdk/IopRequest.php deleted file mode 100644 index 918e15a..0000000 --- a/connector-miravia/classes/Sdk/AeSdk/IopRequest.php +++ /dev/null @@ -1,117 +0,0 @@ -apiName = $apiName; - $this->httpMethod = $httpMethod; - - if ($this->startWith($apiName, "//")) { - throw new \InvalidArgumentException("api name is invalid. It should be start with /"); - } - } - - /** - * 添加API参数 - * Author: Sweeper - * DateTime: 2024/3/18 17:14 - * @param $key - * @param $value - * @return $this - */ - public function addApiParam($key, $value): IopRequest - { - - if (!is_string($key)) { - throw new \InvalidArgumentException("api param key should be string"); - } - - if (is_object($value)) { - $this->udfParams[$key] = json_decode($value, false); - } else { - $this->udfParams[$key] = $value; - } - - return $this; - } - - /** - * 添加文件参数 - * Author: Sweeper - * DateTime: 2024/3/18 16:53 - * @param $key - * @param $content - * @param string $mimeType - * @return $this - */ - public function addFileParam($key, $content, string $mimeType = 'application/octet-stream'): IopRequest - { - if (!is_string($key)) { - throw new \InvalidArgumentException("api file param key should be string"); - } - - $file = [ - 'type' => $mimeType, - 'content' => $content, - 'name' => $key - ]; - $this->fileParams[$key] = $file; - - return $this; - } - - /** - * 添加HTTP头参数 - * Author: Sweeper - * DateTime: 2024/3/18 16:53 - * @param $key - * @param $value - * @return $this - */ - public function addHttpHeaderParam($key, $value): IopRequest - { - if (!is_string($key)) { - throw new \InvalidArgumentException("http header param key should be string"); - } - - if (!is_string($value)) { - throw new \InvalidArgumentException("http header param value should be string"); - } - - $this->headerParams[$key] = $value; - - return $this; - } - - /** - * 判断字符串是否以某个字符开头 - * Author: Sweeper - * DateTime: 2024/3/18 16:54 - * @param $str - * @param $needle - * @return bool - */ - public function startWith($str, $needle): bool - { - return strpos($str, $needle) === 0; - } - -} \ No newline at end of file diff --git a/connector-miravia/classes/Sdk/AeSdk/UrlConstants.php b/connector-miravia/classes/Sdk/AeSdk/UrlConstants.php deleted file mode 100644 index 7407f57..0000000 --- a/connector-miravia/classes/Sdk/AeSdk/UrlConstants.php +++ /dev/null @@ -1,14 +0,0 @@ -addApiParam('file_name', 'pom.xml'); -$request->addFileParam('file_bytes', file_get_contents('/Users/xt/Documents/work/tasp/tasp/pom.xml')); - -var_dump($c->execute($request)); \ No newline at end of file diff --git a/connector-miravia/classes/Sdk/AeSdk/demo/internalDemo.php b/connector-miravia/classes/Sdk/AeSdk/demo/internalDemo.php deleted file mode 100644 index dc38e24..0000000 --- a/connector-miravia/classes/Sdk/AeSdk/demo/internalDemo.php +++ /dev/null @@ -1,15 +0,0 @@ -logLevel = Constants::$log_level_debug; -$request = new IopRequest('/product/item/get', 'GET'); -$request->addApiParam('itemId', '157432005'); -$request->addApiParam('authDO', '{"sellerId":2000000016002}'); - -var_dump($c->execute($request, null)); -echo PHP_INT_MAX; -var_dump($c->msectime()); \ No newline at end of file diff --git a/connector-miravia/classes/Sdk/AeSdk/demo/simpleDemo.php b/connector-miravia/classes/Sdk/AeSdk/demo/simpleDemo.php deleted file mode 100644 index ca97297..0000000 --- a/connector-miravia/classes/Sdk/AeSdk/demo/simpleDemo.php +++ /dev/null @@ -1,12 +0,0 @@ -simplify = "true"; -$request->format = "xml"; -$request->addApiParam('seller_address_query', 'pickup'); - -var_dump($c->execute($request, "50000001a27l15rndYBjw6PrtFFHPGZfy09k1Cp1bd8597fsduP0RsNy0jhF6FL")); \ No newline at end of file diff --git a/connector-miravia/classes/Services/Aliexpress/Base.php b/connector-miravia/classes/Services/Aliexpress/Base.php deleted file mode 100644 index 029937c..0000000 --- a/connector-miravia/classes/Services/Aliexpress/Base.php +++ /dev/null @@ -1,69 +0,0 @@ -addApiParam($paramKey ?: 'param0', json_encode($paramVal)); - $request->simplify = $simplify; - $request->addApiParam('simplify', $simplify);// 设置为精简返回 - - return $client->execute($request, $accountInfo['access_token']); - } catch (\Throwable $ex) { - throw new \RuntimeException("{$ex->getFile()}#{$ex->getLine()} ({$ex->getMessage()})"); - } - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Address.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Address.php deleted file mode 100644 index 12b9728..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Address.php +++ /dev/null @@ -1,36 +0,0 @@ - - * DateTime: 2024/3/18 16:46 - * @Package \Sweeper\PlatformMiddleware\Services\Aliexpress\Address - */ -class Address extends Base -{ - - /** - * 获取卖家地址 - * 目录:API文档/AE-物流/获取卖家地址 - * api: https://developers.aliexpress.com/doc.htm?docId=30133&docType=2 - * api: https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193531.0.0.13b33b53KFl1Q9#/api?cid=20892&path=aliexpress.logistics.redefining.getlogisticsselleraddresses&methodType=GET/POST - * Author: Sweeper - * DateTime: 2024/3/18 16:46 - * @param $accountInfo - * @return false - */ - public function getAddressInfo($accountInfo): bool - { - return static::executeRequest($accountInfo, 'aliexpress.logistics.redefining.getlogisticsselleraddresses', [], 'seller_address_query', [], 'POST', function($client, $request) use ($accountInfo) { - $request->addApiParam('seller_address_query', 'sender,pickup,refund'); - - return $client->execute($request, $accountInfo['access_token']); - }); - } - -} \ No newline at end of file diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Attributes.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Attributes.php deleted file mode 100644 index dc95cf8..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Attributes.php +++ /dev/null @@ -1,25 +0,0 @@ - - * DateTime: 2024/3/18 17:42 - * @param $accountInfo - * @return false - */ - public function getAttributesList($accountInfo): ?bool - { - return static::executeRequest($accountInfo, 'aliexpress.freight.redefining.listfreighttemplate'); - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Category.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Category.php deleted file mode 100644 index 5c6ca89..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Category.php +++ /dev/null @@ -1,79 +0,0 @@ - - * DateTime: 2024/3/19 14:41 - * @param array $accountInfo - * @param array $params - * @return mixed - * @throws \Throwable - */ - public function categoryForecast(array $accountInfo, array $params = []) - { - $c = new IopClient(UrlConstants::API_GATEWAY_URL, $accountInfo['app_key'], $accountInfo['secret_key']); - $request = new IopRequest('aliexpress.category.tree.list', 'GET'); - if (!empty($params['channel_seller_id'])) { - $request->addApiParam('channel_seller_id', $params['channel_seller_id']); - } - if (!empty($params['only_with_permission'])) { - $request->addApiParam('only_with_permission', $params['only_with_permission']); - } - if (!empty($params['channel'])) { - $request->addApiParam('channel', $params['channel']); - } - if (!empty($params['category_id']) || $params['category_id'] === 0) { - $request->addApiParam('category_id', $params['category_id']); - } - $rs = $c->execute($request, $accountInfo['access_token']); - - return $rs->cainiao_global_handover_content_query_response->result ?? $rs->result ?? $rs; - } - - /** - * 根据发布类目id、父属性路径(可选)获取子属性信息,只返回有权限品牌 - * api: https://open.aliexpress.com/doc/api.htm#/api?cid=20897&path=aliexpress.category.redefining.getchildattributesresultbypostcateidandpath&methodType=GET/POST - * Author: Sweeper - * DateTime: 2024/3/19 14:42 - * @param array $accountInfo - * @param array $params - * @return false|mixed - * @throws \Throwable - */ - public function getAttributesList(array $accountInfo, array $params = []) - { - $c = new IopClient(UrlConstants::API_GATEWAY_URL, $accountInfo['app_key'], $accountInfo['secret_key']); - $request = new IopRequest('aliexpress.category.redefining.getchildattributesresultbypostcateidandpath', 'POST'); - if (!empty($params['channel_seller_id'])) { - $request->addApiParam('channel_seller_id', $params['channel_seller_id']); - } - if (!empty($params['channel'])) { - $request->addApiParam('channel', $params['channel']); - } - if (!empty($params['locale'])) { - $request->addApiParam('locale', $params['locale']); - } - if (!empty($params['param1'])) { - $request->addApiParam('param1', $params['param1']); - } - if (!empty($params['param2'])) { - $request->addApiParam('param2', $params['param2']); - } - - $rs = $c->execute($request, $accountInfo['access_token']); - - return $rs->cainiao_global_handover_content_query_response->result ?? $rs->result ?? $rs; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Decrypt.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Decrypt.php deleted file mode 100644 index 7953ac6..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Decrypt.php +++ /dev/null @@ -1,40 +0,0 @@ - - * DateTime: 2024/3/19 14:46 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.6dc86f3dwkNxPS#/api?cid=20905&path=aliexpress.trade.seller.order.decrypt&methodType=GET/POST - * @param array $accountInfo - * @param $orderId - * @param $oaid - * @return mixed - * @throws \Throwable - */ - public function decrypt(array $accountInfo, $orderId, $oaid) - { - $client = new IopClient(UrlConstants::API_GATEWAY_URL, $accountInfo['app_key'], $accountInfo['secret_key']); - $request = new IopRequest('aliexpress.trade.seller.order.decrypt'); - $request->addApiParam('orderId', $orderId); - $request->addApiParam('oaid', $oaid); - $response = $client->execute($request, $accountInfo['access_token']); - - return $response->aliexpress_trade_seller_order_decrypt_response ?? $response; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Evaluation.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Evaluation.php deleted file mode 100644 index 6f4d514..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Evaluation.php +++ /dev/null @@ -1,99 +0,0 @@ - - * DateTime: 2024/3/19 14:49 - * @Package \Sweeper\PlatformMiddleware\Services\Aliexpress\OpenApi\Evaluation - */ -class Evaluation extends Base -{ - - /** - * 查询待卖家评价的订单信息 - * User: Sweeper - * Time: 2022/12/27 14:24 - * @doc https://developers.aliexpress.com/doc.htm?docId=30247&docType=2 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=20896&path=aliexpress.appraise.redefining.querysellerevaluationorderlist&methodType=GET/POST - * @param array $accountInfo 用户信息 - * @param array $params 参数数组 - * @return mixed - */ - public function querySellerEvaluationOrderList(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.appraise.redefining.querysellerevaluationorderlist', $params, 'query_d_t_o'); - - return $response->aliexpress_appraise_redefining_querysellerevaluationorderlist_response->result ?? $response->result ?? $response; - } - - /** - * 卖家对未评价的订单进行评价 - * User: Sweeper - * Time: 2022/12/27 14:24 - * @doc https://developers.aliexpress.com/doc.htm?docId=30250&docType=2 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=20896&path=aliexpress.appraise.redefining.savesellerfeedback&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function saveSellerFeedback(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.appraise.redefining.savesellerfeedback', $params, 'param1'); - - return $response->aliexpress_appraise_redefining_savesellerfeedback_response ?? $response; - } - - /** - * 查询订单已生效的评价信息 - * @doc https://developers.aliexpress.com/doc.htm?docId=35927&docType=2 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=20896&path=aliexpress.evaluation.listorderevaluation.get&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - * @author linzj - * @date 2023-01-12 14:10 - */ - public function getListOrderEvaluation(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.evaluation.listorderevaluation.get', $params, 'trade_evaluation_request'); - - return $response->aliexpress_evaluation_listorderevaluation_get_response->target_list ?? $response->target_list ?? $response; - } - - /** - * 回复评价 - * @doc https://developers.aliexpress.com/doc.htm?docId=35905&docType=2 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=20896&path=aliexpress.evaluation.evaluation.reply&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - * @author linzj - * @date 2023-01-12 14:27 - */ - public function replyEvaluation(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.evaluation.evaluation.reply', [], '', [], 'POST', function($client, $request) use ($params, $accountInfo) { - $request->addApiParam('child_order_id', $params['child_order_id']); - $request->addApiParam('parent_order_id', $params['parent_order_id']); - $request->addApiParam('text', $params['text']); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $response->aliexpress_evaluation_evaluation_reply_response->target ?? $response->target ?? $response; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/GlobalSeller.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/GlobalSeller.php deleted file mode 100644 index c185fd1..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/GlobalSeller.php +++ /dev/null @@ -1,186 +0,0 @@ - - * DateTime: 2024/3/19 14:56 - * @Package \Sweeper\PlatformMiddleware\Services\Aliexpress\OpenApi\GlobalSeller - */ -class GlobalSeller extends Base -{ - - use RedisCache; - - /** @var string 全托管店铺类型 */ - public const BUSINESS_TYPE_TRUSTEESHIP = 'ONE_STOP_SERVICE'; - - /** @var string 半托管店铺类型 */ - public const BUSINESS_TYPE_POP_CHOICE = 'POP_CHOICE'; - - /** - * 获取商家账号列表 - * User: Sweeper - * Time: 2023/4/4 17:16 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21387&path=global.seller.relation.query&methodType=GET - * @param array $accountInfo - * @param array $params - * @return mixed - * @response - * //{ - * // "seller_relation_list": {// 渠道账号列表 - * // "seller_relation": [ - * // { - * // "channel_currency": "USD", // 渠道商品币种 - * // "channel_shop_name": "DKSHETOY Official Store", // 渠道店铺名称 - * // "business_type": "POP_CHOICE", // 业务类型: ONE_STOP_SERVICE : 全托管店铺; POP_CHOICE:POP与半托管店铺 - * // "channel_seller_id": 223525827, // 渠道sellerId - * // "channel": "AE_GLOBAL", // 渠道标识 - * // "seller_id": 223525827, // 全球sellerId - * // }, - * // ] - * // }, - * // "global_currency": "USD", // 全球商品币种 - * // "success": true,// 成功失败 - * // "request_id": "2102e2b216953763075105129" - * //} - */ - public function relationQuery(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'global.seller.relation.query', $params, 'param', [], 'GET'); - - return $response->global_seller_relation_query_response->seller_relation_list ?? $response->seller_relation_list ?? $response; - } - - /** - * 通过缓存获取 - 商家账号列表 - * User: Sweeper - * Time: 2023/7/19 9:52 - * @param array $accountInfo - * @param array $params - * @param bool $refresh - * @return array|mixed - */ - public function getSellerRelationListByCache(array $accountInfo, array $params = [], $refresh = false) - { - $unique = md5(json_encode($accountInfo)); - $cacheKey = "middleware_cache:aliexpress:seller_relation_list:{$unique}"; - - [$cacheData, $errors] = $this->getCacheData($cacheKey, function($accountInfo, $params) { - $result = $this->relationQuery($accountInfo, $params); - $sellerRelationList = json_decode(json_encode($result), true); - $errorResponse = $sellerRelationList['error_response'] ?? []; - if ($errorResponse && isset($errorResponse['msg'])) { - throw new \LogicException($errorResponse['msg']); - } - - return $sellerRelationList['seller_relation_list']['seller_relation'] ?? $sellerRelationList['seller_relation'] ?? []; - }, 86400, $refresh, $accountInfo, $params); - - return $cacheData; - } - - /** - * 获取全球卖家信息 - * User: Sweeper - * Time: 2023/7/7 16:45 - * @param array $accountInfo - * @param array $params - * @param string $key 要获取的 key - * @param string $channel 指定渠道名称 - * @return array|mixed - */ - public function getGlobalSellerInfo(array $accountInfo, array $params = [], string $key = '', string $channel = 'ARISE_ES') - { - $sellerRelationList = $this->getSellerRelationListByCache($accountInfo, $params); - $globalSellerInfo = current($sellerRelationList); - foreach ($sellerRelationList as $sellerRelation) { - // 跳过全托管店铺渠道 - if (!empty($sellerRelation['business_type']) && $sellerRelation['business_type'] === static::BUSINESS_TYPE_TRUSTEESHIP) { - continue; - } - // 指定要使用的渠道 - if (!empty($channel)) { - if ($sellerRelation['channel'] === $channel) { - $globalSellerInfo = $sellerRelation; - break; - } - continue;// 没匹配中继续下一轮匹配 - } - $globalSellerInfo = $sellerRelation; - break; - } - - return $key ? ($globalSellerInfo[$key] ?? $globalSellerInfo) : $globalSellerInfo; - } - - /** - * 获取全球卖家信息 - * Author: Sweeper - * DateTime: 2023/9/20 17:14 - * @param array $accountInfo - * @param array $params - * @param string $businessType - * @param string $channel - * @param array $where - * @return mixed - */ - public function getGlobalSellerInfoByWhere(array $accountInfo, array $params = [], string $businessType = self::BUSINESS_TYPE_TRUSTEESHIP, string $channel = 'AE_GLOBAL', array $where = []) - { - $sellerRelationList = $this->getSellerRelationListByCache($accountInfo, $params); - $globalSellerInfo = count($sellerRelationList) === 1 ? current($sellerRelationList) : []; - foreach ($sellerRelationList as $sellerRelation) { - // { - // "channel_currency": "USD", // 渠道商品币种 - // "channel_shop_name": "DKSHETOY Official Store", // 渠道店铺名称 - // "business_type": "POP_CHOICE", // 业务类型: ONE_STOP_SERVICE : 全托管店铺; POP_CHOICE:POP与半托管店铺 - // "channel_seller_id": 223525827, // 渠道sellerId - // "channel": "AE_GLOBAL", // 渠道标识 - // "seller_id": 223525827, // 全球sellerId - // }, - // 指定要使用的业务类型: ONE_STOP_SERVICE : 全托管店铺; POP_CHOICE:POP与半托管店铺 - if (!empty($businessType) && (empty($sellerRelation['business_type']) || $sellerRelation['business_type'] !== $businessType)) { - continue;// 没匹配中继续下一轮匹配 - } - // 指定要使用的渠道标识 - if (!empty($channel) && (empty($sellerRelation['channel']) || $sellerRelation['channel'] !== $channel)) { - continue;// 没匹配中继续下一轮匹配 - } - foreach ($where as $key => $val) { - if (!isset($sellerRelation[$key]) || $sellerRelation[$key] !== $val) { - break 2; - } - } - $globalSellerInfo = $sellerRelation; - } - - return $globalSellerInfo ?: $sellerRelationList; - } - - /** - * 商家半托管基本信息查询 - * Author: Sweeper - * DateTime: 2023/9/26 10:09 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21439&path=aliexpress.pop.choice.info.query&methodType=GET - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getChoiceInfo(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.pop.choice.info.query', $params, 'param', [], 'GET'); - - return $response->aliexpress_pop_choice_info_query_response->result ?? $response->result ?? $response; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Logistics.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Logistics.php deleted file mode 100644 index d1fb3d8..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Logistics.php +++ /dev/null @@ -1,165 +0,0 @@ - - * DateTime: 2024/3/19 15:15 - * @Package \Sweeper\PlatformMiddleware\Services\Aliexpress\OpenApi\Logistics - */ -class Logistics extends Base -{ - - /** - * 创建子交易单线上物流订单 - * User: Sweeper - * Time: 2023/1/11 10:02 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=20892&path=aliexpress.logistics.order.createorder&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function createOrder(array $accountInfo, array $params = []) - { - static::verifyParams(['trade_order_from', 'trade_order_id', 'declare_product_d_t_os', 'warehouse_carrier_service', 'address_d_t_os'], $params); - $client = new IopClient(UrlConstants::API_GATEWAY_URL, $accountInfo['app_key'], $accountInfo['secret_key']); - $request = new IopRequest('aliexpress.logistics.order.createorder'); - // 必填参数 - $request->addApiParam('trade_order_from', $params['trade_order_from']); - $request->addApiParam('trade_order_id', $params['trade_order_id']); - $request->addApiParam('declare_product_d_t_os', $params['declare_product_d_t_os']); - $request->addApiParam('warehouse_carrier_service', $params['warehouse_carrier_service']); - $request->addApiParam('address_d_t_os', $params['address_d_t_os']); - // 条件非必填 - isset($params['domestic_logistics_company']) && $request->addApiParam('domestic_logistics_company', $params['domestic_logistics_company']); - isset($params['domestic_logistics_company_id']) && $request->addApiParam('domestic_logistics_company_id', $params['domestic_logistics_company_id']); - isset($params['domestic_tracking_no']) && $request->addApiParam('domestic_tracking_no', $params['domestic_tracking_no']); - // 非必填参数 - isset($params['is_agree_upgrade_reverse_parcel_insure']) && $request->addApiParam('is_agree_upgrade_reverse_parcel_insure', $params['is_agree_upgrade_reverse_parcel_insure']); - isset($params['oaid']) && $request->addApiParam('oaid', $params['oaid']); - isset($params['pickup_type']) && $request->addApiParam('pickup_type', $params['pickup_type']); - isset($params['package_num']) && $request->addApiParam('package_num', $params['package_num']); - isset($params['undeliverable_decision']) && $request->addApiParam('undeliverable_decision', $params['undeliverable_decision']); - isset($params['invoice_number']) && $request->addApiParam('invoice_number', $params['invoice_number']); - isset($params['top_user_key']) && $request->addApiParam('top_user_key', $params['top_user_key']); - isset($params['insurance_coverage']) && $request->addApiParam('insurance_coverage', $params['insurance_coverage']); - - $response = $client->execute($request, $accountInfo['access_token']); - - return $response->aliexpress_logistics_order_createorder_response->result ?? $response->result ?? $response; - } - - /** - * 查询物流订单信息(推荐) - * 目录:API文档/AE物流/查询物流订单信息(推荐) - * api: https://open.aliexpress.com/doc/api.htm#/api?cid=20892&path=aliexpress.logistics.querylogisticsorderdetail&methodType=GET/POST - * Author: Sweeper - * DateTime: 2024/3/19 16:01 - * @param array $accountInfo - * @param array $params - * @return mixed - * @throws \Throwable - */ - public function getLogisticsOrderDetail(array $accountInfo, array $params = []) - { - // 参数验证和组装 交易订单号 - if (empty($params['trade_order_id'])) { - throw new \InvalidArgumentException('参数trade_order_id必填且不能为空'); - } - $rs = static::executeRequest($accountInfo, 'aliexpress.logistics.querylogisticsorderdetail', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - $request->addApiParam('trade_order_id', $params['trade_order_id']); - if (!empty($params['current_page'])) { - $request->addApiParam('current_page', $params['current_page']); - } //当前页 - if (!empty($params['domestic_logistics_num'])) { - $request->addApiParam('domestic_logistics_num', $params['domestic_logistics_num']); - } //国内运单号 - if (!empty($params['gmt_create_end_str'])) { - $request->addApiParam('gmt_create_end_str', $params['gmt_create_end_str']); - } //起始创建时间 - if (!empty($params['gmt_create_start_str'])) { - $request->addApiParam('gmt_create_start_str', $params['gmt_create_start_str']); - } //截止创建时间 - if (!empty($params['international_logistics_num'])) { - $request->addApiParam('international_logistics_num', $params['international_logistics_num']); - } //国际运单号 - if (!empty($params['logistics_status'])) { - $request->addApiParam('logistics_status', $params['logistics_status']); - } //订单状态 - if (!empty($params['page_size'])) { - $request->addApiParam('page_size', $params['page_size']); - } //页面大小 - if (!empty($params['warehouse_carrier_service'])) { - $request->addApiParam('warehouse_carrier_service', $params['warehouse_carrier_service']); - } //物流服务编码 - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->aliexpress_logistics_querylogisticsorderdetail_response->result ?? $rs->result ?? $rs; - } - - /** - * 查询仓发物流订单信息 - * 目录:API文档/AE物流/查询仓发物流订单信息 - * api: https://open.aliexpress.com/doc/api.htm#/api?cid=20892&path=aliexpress.logistics.warehouse.querydetail&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return false || object - */ - public function getLogisticsWarehouseQueryDetail(array $accountInfo, array $params = []) - { - // 参数验证和组装 交易订单号 - if (empty($params['trade_order_id'])) { - throw new \InvalidArgumentException('参数trade_order_id必填且不能为空'); - } - - $rs = static::executeRequest($accountInfo, 'aliexpress.logistics.warehouse.querydetail', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - $request->addApiParam('trade_order_id', $params['trade_order_id']); - if (!empty($params['consign_type'])) { - $request->addApiParam('consign_type', $params['consign_type']); - } //仓发订单类型 DOMESTIC 优选仓 - if (!empty($params['current_page'])) { - $request->addApiParam('current_page', $params['current_page']); - } //当前页 - if (!empty($params['domestic_logistics_num'])) { - $request->addApiParam('domestic_logistics_num', $params['domestic_logistics_num']); - } //国内运单号 - if (!empty($params['gmt_create_end_str'])) { - $request->addApiParam('gmt_create_end_str', $params['gmt_create_end_str']); - } //起始创建时间 - if (!empty($params['gmt_create_start_str'])) { - $request->addApiParam('gmt_create_start_str', $params['gmt_create_start_str']); - } //截止创建时间 - if (!empty($params['international_logistics_num'])) { - $request->addApiParam('international_logistics_num', $params['international_logistics_num']); - } //国际运单号 - if (!empty($params['logistics_status'])) { - $request->addApiParam('logistics_status', $params['logistics_status']); - } //订单状态 - if (!empty($params['page_size'])) { - $request->addApiParam('page_size', $params['page_size']); - } //页面大小 - if (!empty($params['warehouse_carrier_service'])) { - $request->addApiParam('warehouse_carrier_service', $params['warehouse_carrier_service']); - } //物流服务编码 - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->aliexpress_logistics_warehouse_querydetail_response->return_result ?? $rs->return_result ?? $rs; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Merchant.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Merchant.php deleted file mode 100644 index 682b49e..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Merchant.php +++ /dev/null @@ -1,55 +0,0 @@ - - * DateTime: 2024/3/19 15:20 - * @Package \Sweeper\PlatformMiddleware\Services\Aliexpress\OpenApi\Merchant - */ -class Merchant extends Base -{ - - /** - * 商家地址列表查询 - * User: Sweeper - * Time: 2023/4/4 17:16 - * channel_seller_id Number 请输入全托管店铺的id。 渠道seller id (可以在这个API中查询:global.seller.relation.query), 请使用 business_type = ONE_STOP_SERVICE 的全托管店铺 channel_seller_id - * address_types String[] 地址类型:SALESRETURN(退货地址),WAREHOUSE(发货地址) - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=20895&path=aliexpress.merchant.Address.list&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function merchantAddressList(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.merchant.Address.list', $params, 'param', ['channel_seller_id', 'address_types']); - - return $response->aliexpress_merchant_Address_list_response->result ?? $response->result ?? $response; - } - - /** - * 查询卖家资料,如刊登数量 - * api: https://open.aliexpress.com/doc/api.htm#/api?cid=20895&path=aliexpress.merchant.profile.get&methodType=GET/POST - * Author: Sweeper - * DateTime: 2024/3/19 16:27 - * @param array $accountInfo - * @return mixed - */ - public function getMerchantProfile(array $accountInfo) - { - $rs = static::executeRequest($accountInfo, 'aliexpress.merchant.profile.get'); - - return $rs->aliexpress_merchant_profile_get_response->profile ?? $rs->profile ?? $rs; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Order.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Order.php deleted file mode 100644 index cc89e3d..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Order.php +++ /dev/null @@ -1,126 +0,0 @@ - - * DateTime: 2024/3/19 15:21 - * @Package \Sweeper\PlatformMiddleware\Services\Aliexpress\OpenApi\Order - */ -class Order extends Base -{ - - /** - * 订单收货信息查询 - * User: Sweeper - * Time: 2023/1/11 10:06 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.6dc86f3dAv7fsz#/api?cid=20905&path=aliexpress.trade.redefining.findorderreceiptinfo&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function findOrderReceiptInfo(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.trade.redefining.findorderreceiptinfo', $params, 'param1'); - - return $response->aliexpress_trade_redefining_findorderreceiptinfo_response->result ?? $response->result ?? $response; - } - - /** - * 获取订单列表 - * User: Sweeper - * Time: 2023/2/24 10:19 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.6dc86f3dAv7fsz#/api?cid=20905&path=aliexpress.trade.seller.orderlist.get&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getOrderList(array $accountInfo, array $params = []) - { - static::verifyParams(['current_page', 'page_size'], $params); - $response = static::executeRequest($accountInfo, 'aliexpress.trade.seller.orderlist.get', $params, 'param_aeop_order_query'); - - return $response->aliexpress_trade_seller_orderlist_get_response ?? $response->result ?? $response; - } - - /** - * 订单列表简化查询 - * User: Sweeper - * Time: 2023/2/24 10:22 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.6dc86f3dAv7fsz#/api?cid=20905&path=aliexpress.trade.redefining.findorderlistsimplequery&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function findOrderListSimpleQuery(array $accountInfo, array $params = []) - { - static::verifyParams(['page', 'page_size'], $params); - $response = static::executeRequest($accountInfo, 'aliexpress.trade.redefining.findorderlistsimplequery', $params, 'param1'); - - return $response->aliexpress_trade_redefining_findorderlistsimplequery_response ?? $response->result ?? $response; - } - - /** - * 新版交易订单详情查询 - * User: Sweeper - * Time: 2023/1/11 10:09 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.6dc86f3dAv7fsz#/api?cid=20905&path=aliexpress.trade.new.redefining.findorderbyid&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function findOrderById(array $accountInfo, array $params = []) - { - static::verifyParams(['order_id'], $params); - $response = static::executeRequest($accountInfo, 'aliexpress.trade.new.redefining.findorderbyid', $params, 'param1'); - - return $response->aliexpress_trade_new_redefining_findorderbyid_response ?? $response->result ?? $response; - } - - /** - * 卖家同意取消订单 - * User: Sweeper - * Time: 2023/4/20 11:09 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=20905&path=aliexpress.trade.seller.order.acceptcancel&methodType=GET/POST - * @param array $accountInfo - * @param array $params [buyer_login_id: String, order_id: Number] - * @return mixed - */ - public function acceptCancelOrder(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.trade.seller.order.acceptcancel', $params, 'param_order_cancel_request'); - - return $response->aliexpress_trade_seller_order_acceptcancel_response ?? $response->result ?? $response; - } - - /** - * 卖家拒绝取消订单 - * User: Sweeper - * Time: 2023/4/20 11:10 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=20905&path=aliexpress.trade.seller.order.refusecancel&methodType=GET/POST - * @param array $accountInfo - * @param array $params ['buyer_login_id','memo','order_id'] - * @return mixed - */ - public function refuseCancelOrder(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.trade.seller.order.refusecancel', $params, 'param_order_cancel_request', ['buyer_login_id', 'memo', 'order_id']); - - return $response->aliexpress_trade_seller_order_refusecancel_response ?? $response->result ?? $response; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Product.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Product.php deleted file mode 100644 index 7f2f415..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Product.php +++ /dev/null @@ -1,264 +0,0 @@ - - * DateTime: 2023/9/26 9:51 - */ - -namespace Sweeper\PlatformMiddleware\Services\Aliexpress\OpenApi; - -use Sweeper\PlatformMiddleware\Services\Aliexpress\Base; - -class Product extends Base -{ - - /** - * 商品查询新接口 - * Author: Sweeper - * DateTime: 2024/3/19 17:07 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=20904&path=aliexpress.offer.product.query&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getProductDetail(array $accountInfo, array $params) - { - $response = static::executeRequest($accountInfo, 'aliexpress.offer.product.query', $params, 'product_id', ['product_id'], 'POST', function($client, $request) use ($accountInfo, $params) { - $request->addApiParam('product_id', $params['product_id']); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $response->aliexpress_offer_product_query_response->result ?? $response->result ?? $response; - } - - /** - * 查询半托管已加入/待加入/待预存商品列表 - * Author: Sweeper - * DateTime: 2023/9/26 10:10 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21439&path=aliexpress.pop.choice.products.list&methodType=GET - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getPopChoiceProductList(array $accountInfo, array $params) - { - $response = static::executeRequest($accountInfo, 'aliexpress.pop.choice.products.list', $params, 'param', [], 'GET'); - - return $response->aliexpress_pop_choice_products_list_response->result ?? $response->result ?? $response; - } - - /** - * 半托管商品详情查询 - * Author: Sweeper - * DateTime: 2023/9/26 10:10 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21439&path=aliexpress.pop.choice.product.query&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getPopChoiceProductDetail(array $accountInfo, array $params) - { - $response = static::executeRequest($accountInfo, 'aliexpress.pop.choice.product.query', $params, 'product_id', ['product_id'], 'POST', function($client, $request) use ($accountInfo, $params) { - $request->addApiParam('product_id', $params['product_id']); - $request->addApiParam('language', 'zh_CN'); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $response->aliexpress_pop_choice_product_query_response->result ?? $response->result ?? $response; - } - - /** - * AE-全托管-商品列表查询 - * Author: Sweeper - * DateTime: 2023/9/26 10:10 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21403&path=aliexpress.choice.products.list&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getChoiceProductList(array $accountInfo, array $params) - { - $response = static::executeRequest($accountInfo, 'aliexpress.choice.products.list', $params, 'param', ['channel_seller_id', 'channel', 'search_condition_do'], 'POST', - function($client, $request) use ($accountInfo, $params) { - $request->addApiParam('channel_seller_id', $params['channel_seller_id']); - $request->addApiParam('channel', $params['channel']); - $request->addApiParam('page_size', $params['page_size'] ?? 20); - $request->addApiParam('current_page', $params['current_page'] ?? 1); - $request->addApiParam('search_condition_do', json_encode($params['search_condition_do'])); - $request->addApiParam('version', $params['version'] ?? 1); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $response->aliexpress_choice_products_list_response->result ?? $response->result ?? $response; - } - - /** - * AE-全托管-全托管店铺-查询单个商品详情 - * Author: Sweeper - * DateTime: 2023/9/26 10:10 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21403&path=aliexpress.choice.product.query&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getChoiceProductDetail(array $accountInfo, array $params) - { - $response = static::executeRequest($accountInfo, 'aliexpress.choice.product.query', $params, 'param', ['channel_seller_id', 'channel', 'product_id'], 'POST', - function($client, $request) use ($accountInfo, $params) { - $request->addApiParam('product_id', $params['product_id']); - $request->addApiParam('channel_seller_id', $params['channel_seller_id']); - $request->addApiParam('channel', $params['channel']); - $request->addApiParam('version', $params['version'] ?? 1); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $response->aliexpress_choice_product_query_response->result ?? $response->result ?? $response; - } - - /** - * AE-全托管-按照商家查询仓库编码 - * Author: Sweeper - * DateTime: 2023/9/26 10:30 - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getChoiceProductWarehouseList(array $accountInfo, array $params) - { - $response = static::executeRequest($accountInfo, 'aliexpress.choice.product.warehouse.list', $params, 'param', ['channel_seller_id', 'channel'], 'POST', - function($client, $request) use ($accountInfo, $params) { - $request->addApiParam('product_id', $params['product_id']); - $request->addApiParam('channel_seller_id', $params['channel_seller_id']); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $response->aliexpress_choice_product_query_response->result ?? $response->result ?? $response; - } - - /** - * 商品删除接口 - * api: https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=20904&path=aliexpress.offer.product.delete&methodType=GET/POST - * Author: Sweeper - * DateTime: 2024/3/19 17:03 - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function deleteProduct(array $accountInfo, array $params) - { - $rs = static::executeRequest($accountInfo, 'aliexpress.offer.product.delete', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - if (!empty($params['product_id'])) { - $request->addApiParam('product_id', $params['product_id']); - } - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->aliexpress_offer_product_delete_response->product_id ?? $rs->product_id ?? $rs; - } - - /** - * 商品列表查询接口 - * api: https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=20904&path=aliexpress.postproduct.redefining.findproductinfolistquery&methodType=GET/POST - * Author: Sweeper - * DateTime: 2024/3/19 17:05 - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getProductsList(array $accountInfo, array $params) - { - $rs = static::executeRequest($accountInfo, 'aliexpress.postproduct.redefining.findproductinfolistquery', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - $request->addApiParam('aeop_a_e_product_list_query', $params['aeop_a_e_product_list_query']); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->aliexpress_postproduct_redefining_findproductinfolistquery_response->result ?? $rs->result ?? $rs; - } - - /** - * 分页查询待优化商品列表 - * Author: Sweeper - * DateTime: 2024/3/19 17:08 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=20904&path=aliexpress.product.diagnosis.pageQueryProblem&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getProductProblemList(array $accountInfo, array $params) - { - $rs = static::executeRequest($accountInfo, 'aliexpress.product.diagnosis.pageQueryProblem', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - isset($params['operate_status']) && $request->addApiParam('operate_status', $params['operate_status']); - isset($params['problem_type_list']) && $request->addApiParam('problem_type_list', $params['problem_type_list']); - isset($params['page_size']) && $request->addApiParam('page_size', $params['page_size']); - isset($params['current_page']) && $request->addApiParam('current_page', $params['current_page']); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->aliexpress_product_diagnosis_pageQueryProblem_response ?? $rs; - } - - /** - * 查询商家下待优化的商品问题类型列表 - * Author: Sweeper - * DateTime: 2024/3/19 17:12 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=20904&path=aliexpress.product.diagnosis.queryProblem&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getProductProblemTypeList(array $accountInfo, array $params) - { - $rs = static::executeRequest($accountInfo, 'aliexpress.product.diagnosis.queryProblem', [], ''); - - return $rs->aliexpress_product_diagnosis_queryProblem_response->product_problem_type_list ?? $rs->product_problem_type_list ?? $rs; - } - - /** - * 商品新的编辑接口 - * Author: Sweeper - * DateTime: 2024/3/19 17:14 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=20904&path=aliexpress.offer.product.edit&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function editProductNew(array $accountInfo, array $params) - { - $rs = static::executeRequest($accountInfo, 'aliexpress.offer.product.edit', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - $request->addApiParam('aeop_a_e_product', $params['aeop_a_e_product']); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->aliexpress_offer_product_edit_response->result ?? $rs->result ?? $rs; - } - - /** - * 商品发布新接口 - * Author: Sweeper - * DateTime: 2024/3/19 17:15 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=20904&path=aliexpress.offer.product.post&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function uploadListing(array $accountInfo, array $params) - { - $rs = static::executeRequest($accountInfo, 'aliexpress.offer.product.post', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - $request->addApiParam('aeop_a_e_product', $params['aeop_a_e_product']); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->aliexpress_offer_product_edit_response->result ?? $rs->result ?? $rs; - } - -} \ No newline at end of file diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/README.md b/connector-miravia/classes/Services/Aliexpress/OpenApi/README.md deleted file mode 100644 index 3115e16..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/README.md +++ /dev/null @@ -1,2 +0,0 @@ -## API 文档 - https://console-docs.apipost.cn/preview/a8b356c4e7ad1bd6/8b42e455151dbc70 pwd:444421 diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Ship.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Ship.php deleted file mode 100644 index 650dc90..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Ship.php +++ /dev/null @@ -1,244 +0,0 @@ - - * DateTime: 2024/3/19 16:22 - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function commitBigBag(array $accountInfo, array $params = []) - { - if (empty($params['pickup_info'])) { - throw new \InvalidArgumentException('参数pickup_info必填且不能为空'); - } - if (empty($params['user_info'])) { - throw new \InvalidArgumentException('参数user_info必填且不能为空'); - } - if (empty($params['client'])) { - throw new \InvalidArgumentException('参数client必填且不能为空'); - } - $rs = static::executeRequest($accountInfo, 'cainiao.global.handover.commit', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - if (!empty($params['seller_parcel_order_list'])) { - if (is_array($params['seller_parcel_order_list']) || is_object($params['seller_parcel_order_list'])) { - $request->addApiParam('seller_parcel_order_list', json_encode($params['seller_parcel_order_list'])); - } else { - $request->addApiParam('seller_parcel_order_list', $params['seller_parcel_order_list']); - } - } - if (is_array($params['pickup_info']) || is_object($params['pickup_info'])) { - $request->addApiParam('pickup_info', json_encode($params['pickup_info'])); - } else { - $request->addApiParam('pickup_info', $params['pickup_info']); - } - if (!empty($params['order_code_list'])) { - if (is_array($params['order_code_list']) || is_object($params['order_code_list'])) { - $request->addApiParam('order_code_list', json_encode($params['order_code_list'])); - } else { - $request->addApiParam('order_code_list', $params['order_code_list']); - } - } - if (!empty($params['weight'])) { - $request->addApiParam('weight', $params['weight']); - } - if (!empty($params['handover_order_id'])) { - $request->addApiParam('handover_order_id', $params['handover_order_id']); - } - if (!empty($params['remark'])) { - $request->addApiParam('remark', $params['remark']); - } - if (!empty($params['return_info'])) { - if (is_array($params['return_info']) || is_object($params['return_info'])) { - $request->addApiParam('return_info', json_encode($params['return_info'])); - } else { - $request->addApiParam('return_info', $params['return_info']); - } - } - - if (is_array($params['user_info']) || is_object($params['user_info'])) { - $request->addApiParam('user_info', json_encode($params['user_info'])); - } else { - $request->addApiParam('user_info', $params['user_info']); - } - if (!empty($params['weight_unit'])) { - $request->addApiParam('weight_unit', $params['weight_unit']); - } - - if (!empty($params['skip_invalid_parcel'])) { - $request->addApiParam('skip_invalid_parcel', $params['skip_invalid_parcel']); - } else { - $request->addApiParam('skip_invalid_parcel', 'true'); - } - - if (!empty($params['type'])) { - $request->addApiParam('type', $params['type']); - } - - $request->addApiParam('client', $params['client']); - if (!empty($params['locale'])) { - $request->addApiParam('locale', $params['locale']); - } - if (!empty($params['features'])) { - if (is_array($params['features']) || is_object($params['features'])) { - $request->addApiParam('features', json_encode($params['features'])); - } else { - $request->addApiParam('features', $params['features']); - } - } - if (!empty($params['appointment_type'])) { - $request->addApiParam('appointment_type', $params['appointment_type']); - } - if (!empty($params['domestic_tracking_no'])) { - $request->addApiParam('domestic_tracking_no', $params['domestic_tracking_no']); - } - if (!empty($params['domestic_logistics_company_id'])) { - $request->addApiParam('domestic_logistics_company_id', $params['domestic_logistics_company_id']); - } - if (!empty($params['domestic_logistics_company'])) { - $request->addApiParam('domestic_logistics_company', $params['domestic_logistics_company']); - } - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->cainiao_global_handover_commit_response->result ?? $rs->result ?? $rs; - } - - /** - * 批次追加大包 - * 目录:API文档/菜鸟国际出口/批次追加大包 - * api:https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21215&path=cainiao.global.handover.content.subbag.add&methodType=POST - * Author: Sweeper - * DateTime: 2024/3/19 16:19 - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function addSubBag(array $accountInfo, array $params = []) - { - // 参数验证和组装 - if (empty($params['user_info'])) { - throw new \InvalidArgumentException('参数user_info必填且不能为空'); - } - if (empty($params['add_subbag_quantity'])) { - throw new \InvalidArgumentException('参数order_code必填且不能为空'); - } - if (empty($params['order_code'])) { - throw new \InvalidArgumentException('参数order_code必填且不能为空'); - } - $rs = static::executeRequest($accountInfo, 'cainiao.global.handover.content.subbag.add', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - if (is_array($params['user_info']) || is_object($params['user_info'])) { - $request->addApiParam('user_info', json_encode($params['user_info'])); - } else { - $request->addApiParam('user_info', $params['user_info']); - } - $request->addApiParam('order_code', $params['order_code']); - $request->addApiParam('add_subbag_quantity', $params['add_subbag_quantity']); - if (empty($params['locale'])) { - $request->addApiParam('locale', 'zh_CN'); - } else { - $request->addApiParam('locale', $params['locale']); - } - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->cainiao_global_handover_content_subbag_add_response->result ?? $rs->result ?? $rs; - } - - /** - * 获取大包面单 - * 目录:API文档/菜鸟国际出口/返回指定大包面单的PDF文件数据 - * api:https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21215&path=cainiao.global.handover.pdf.get&methodType=GET/POST - * Author: Sweeper - * DateTime: 2024/3/19 16:14 - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getBigBagPdf(array $accountInfo, array $params = []) - { - // 参数验证和组装 - if (empty($params['user_info'])) { - throw new \InvalidArgumentException('参数user_info必填且不能为空'); - } - if (empty($params['client'])) { - throw new \InvalidArgumentException('参数client必填且不能为空'); - } - if (empty($params['handover_content_id'])) { - throw new \InvalidArgumentException('参数handover_content_id必填且不能为空'); - } - $rs = static::executeRequest($accountInfo, 'cainiao.global.handover.pdf.get', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - if (is_array($params['user_info']) || is_object($params['user_info'])) { - $request->addApiParam('user_info', json_encode($params['user_info'])); - } else { - $request->addApiParam('user_info', $params['user_info']); - } - $request->addApiParam('client', $params['client']); - if (!empty($params['locale'])) { - $request->addApiParam('locale', $params['locale']); - } - - $request->addApiParam('handover_content_id', $params['handover_content_id']); - if (!empty($params['type'])) { - $request->addApiParam('type', $params['type']); - } - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->cainiao_global_handover_pdf_get_response->result ?? $rs->result ?? $rs; - } - - /** - * 查询大包详情 - * 目录:API文档/菜鸟国际出口/查询大包详情 - * api: https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21215&path=cainiao.global.handover.pdf.get&methodType=GET/POST - * Author: Sweeper - * DateTime: 2024/3/19 16:12 - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getBigBagInfo(array $accountInfo, array $params = []) - { - if (empty($params['client'])) { - throw new \InvalidArgumentException('参数client必填且不能为空'); - } - $rs = static::executeRequest($accountInfo, 'cainiao.global.handover.content.query', [], '', [], 'POST', function($client, $request, $accountInfo) use ($params) { - // 参数验证和组装 - if (!empty($params['user_info'])) { - if (is_array($params['user_info']) || is_object($params['user_info'])) { - $request->addApiParam('user_info', json_encode($params['user_info'])); - } else { - $request->addApiParam('user_info', $params['user_info']); - } - } - if (!empty($params['order_code'])) { - $request->addApiParam('order_code', $params['order_code']); - } - if (!empty($params['tracking_number'])) { - $request->addApiParam('tracking_number', $params['tracking_number']); - } - $request->addApiParam('client', $params['client']); - if (!empty($params['locale'])) { - $request->addApiParam('locale', $params['locale']); - } - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $rs->cainiao_global_handover_content_query_response->result ?? $rs->result ?? $rs; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Supply.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Supply.php deleted file mode 100644 index 2f0da54..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Supply.php +++ /dev/null @@ -1,250 +0,0 @@ - - * DateTime: 2024/3/19 15:22 - * @Package \Sweeper\PlatformMiddleware\Services\Aliexpress\OpenApi\Supply - */ -class Supply extends Base -{ - - /** 行业账套编码[业务租户Id,全托管场景请填写5110000] AER 221000,AEG 288000 aechoice 5110000 */ - - /** @var int 行业账套编码[业务租户Id] AER */ - public const BIZ_TYPE_AER = 221000; - - /** @var int 行业账套编码[业务租户Id] AEG */ - public const BIZ_TYPE_AEG = 288000; - - /** @var int 行业账套编码[业务租户Id] aechoice */ - public const BIZ_TYPE_AE_CHOICE = 5110000; - - /** 单据类型 10:普通仓发 50:JIT */ - - /** @var int 订单类型 - 普通仓发 */ - public const ORDER_TYPE_NORMAL = 10; - - /** @var int 订单类型 - JIT */ - public const ORDER_TYPE_JIT = 50; - - /** 单据状态 10:待确认 15:已确认 17:待发货 20:待收货 21:已到仓 30:部分收货 40:收货完成 -99:已取消,不传则返回所有状态的采购单 */ - - /** biz_type Number 是 业务租户Id,全托管场景请填写5110000 */ - - /** channel_user_id Number 是 渠道seller id (可以在这个API中查询:global.seller.relation.query), 请使用 business_type = ONE_STOP_SERVICE 的全托管店铺 channel_seller_id */ - - /** - * 采购单分页查询 - * User: Sweeper - * Time: 2023/4/4 15:52 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.pageQuery&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function pageQuery(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.pageQuery', $params, 'param0', ['order_type', 'biz_type', 'channel_user_id']); - - return $response->aliexpress_ascp_po_pageQuery_response->result ?? $response->result ?? $response; - } - - /** - * 采购单确认 - * User: Sweeper - * Time: 2023/4/4 16:17 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.confirmPurchaseOrder&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function confirmPurchaseOrder(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.confirmPurchaseOrder', $params, 'param0', ['purchase_order_no', 'biz_type', 'all_quantity_confirm', 'channel_user_id']); - - return $response->aliexpress_ascp_po_confirmPurchaseOrder_response->result ?? $response->result ?? $response; - } - - /** - * 创建揽收单 - * User: Sweeper - * Time: 2023/4/4 16:50 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.createPickupOrder&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function createPickupOrder(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.createPickupOrder', $params, 'param0', [ - 'order_type', - 'estimated_pickup_date', - 'biz_type', - 'estimated_weight', - 'estimated_box_number', - 'contact_info_dto', - 'estimated_volume', - 'order_no_list', - 'channel_user_id', - ]); - - return $response->aliexpress_ascp_po_createPickupOrder_response->result ?? $response->result ?? $response; - } - - /** - * 查询揽收单 - * User: Sweeper - * Time: 2023/4/4 16:54 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.queryPickupOrder&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function queryPickupOrder(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.queryPickupOrder', $params, 'param0', ['pickup_order_number', 'biz_type', 'channel_user_id']); - - return $response->aliexpress_ascp_po_queryPickupOrder_response->result ?? $response->result ?? $response; - } - - /** - * 打印箱唛 - * User: Sweeper - * Time: 2023/4/4 16:58 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.query.createShippingMarkPdf&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function createShippingMarkPdf(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.query.createShippingMarkPdf', $params, 'param0', ['biz_type', 'channel_user_id', 'purchase_order_no']); - - return $response->aliexpress_ascp_po_query_createShippingMarkPdf_response->result ?? $response->result ?? $response; - } - - /** - * 打印货品标签 - * User: Sweeper - * Time: 2023/4/4 16:59 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.createScItemBarcodePdf&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function createScItemBarcodePdf(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.createScItemBarcodePdf', $params, 'param0', ['purchase_order_no', 'biz_type', 'channel_user_id']); - - return $response->aliexpress_ascp_po_createScItemBarcodePdf_response->result ?? $response->result ?? $response; - } - - /** - * 打印揽收面单 - * User: Sweeper - * Time: 2023/4/4 17:01 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.createPickupShippingMarkPdf&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function createPickupShippingMarkPdf(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.createPickupShippingMarkPdf', $params, 'param0', ['pickup_order_number', 'biz_type', 'channel_user_id']); - - return $response->aliexpress_ascp_po_createScItemBarcodePdf_response->result ?? $response->result ?? $response; - } - - /** - * AliExpress采购单明细查询API - * User: Sweeper - * Time: 2023/4/4 17:18 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.item.query&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function purchaseOrderDetail(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.item.query', $params, 'purchase_order_item_query', ['biz_type', 'purchase_order_no']); - - return $response->aliexpress_ascp_po_item_query_response->result ?? $response->result ?? $response; - } - - /** - * AliExpress采购单查询API - * Author: Sweeper - * DateTime: 2023/9/21 14:24 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.query&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function purchaseOrderQuery(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.query', $params, 'purchase_order_query', ['biz_type', 'purchase_order_no']); - - return $response->aliexpress_ascp_po_query_response->result ?? $response->result ?? $response; - } - - /** - * 采购单货品详情 - * Author: Sweeper - * DateTime: 2023/9/20 16:58 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.item.detail&methodType=GET - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function purchaseOrderItemDetail(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.item.detail', $params, 'param0', ['sc_item_id', 'channel', 'channel_seller_id'], 'GET'); - - return $response->aliexpress_ascp_item_detail_response->result ?? $response->result ?? $response; - } - - /** - * AliExpress货品查询API - * Author: Sweeper - * DateTime: 2023/9/21 13:49 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.item.query&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function purchaseOrderItemQuery(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.item.query', $params, 'sc_item_query', ['biz_type']); - - return $response->aliexpress_ascp_item_query_response->result ?? $response->result ?? $response; - } - - - /** - * 取消揽收单 - * Author: Sweeper - * DateTime: 2023/9/21 13:49 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=21022&path=aliexpress.ascp.po.cancelPickupOrder&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function purchaseCancelPickOrder(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'aliexpress.ascp.po.cancelPickupOrder', $params, 'param0', ['pickup_order_number','biz_type','channel_user_id','cancel_reason']); - - return $response->aliexpress_ascp_po_cancelPickupOrder_response->result ?? $response->result ?? $response; - } - -} diff --git a/connector-miravia/classes/Services/Aliexpress/OpenApi/Trade.php b/connector-miravia/classes/Services/Aliexpress/OpenApi/Trade.php deleted file mode 100644 index 68df1b9..0000000 --- a/connector-miravia/classes/Services/Aliexpress/OpenApi/Trade.php +++ /dev/null @@ -1,37 +0,0 @@ - - * DateTime: 2024/3/19 16:55 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=20905&path=aliexpress.trade.redefining.extendsbuyeracceptgoodstime&methodType=GET/POST - * @param array $accountInfo - * @param $orderId - * @param $day - * @return mixed - */ - public function extendsBuyerAcceptGoodsTime(array $accountInfo, $orderId, $day) - { - $response = static::executeRequest($accountInfo, 'aliexpress.trade.redefining.extendsbuyeracceptgoodstime', [], '', [], 'POST', function($client, $request, $accountInfo) use ($orderId, $day) { - $request->addApiParam('param0', $orderId); - $request->addApiParam('param1', $day); - - return $client->execute($request, $accountInfo['access_token']); - }); - - return $response->aliexpress_trade_redefining_extendsbuyeracceptgoodstime_response ?? $response; - } - -} diff --git a/connector-miravia/classes/Services/Mirakl/Order.php b/connector-miravia/classes/Services/Mirakl/Order.php deleted file mode 100644 index a331841..0000000 --- a/connector-miravia/classes/Services/Mirakl/Order.php +++ /dev/null @@ -1,142 +0,0 @@ - - * DateTime: 2024/2/26 13:18 - * @Package \Sweeper\PlatformMiddleware\Services\Mirakl\Order - */ -class Order extends Request -{ - - /** - * 获取订单列表 - * Author: Sweeper - * DateTime: 2024/2/26 13:42 - * @doc https://help.mirakl.net/help/api-doc/seller/mmp.html#OR11 - * @param array $params - * @return Response - */ - public function getOrders(array $params = []): Response - { - // Building request - $request = new GetOrdersRequest($params); - - // Calling the API - // $response = $this->clientMMP()->run($request); - // $response = $this->clientMMP()->getOrders($request); - // $response = $this->clientMMP()->raw()->getOrders($request); - return $this->execute($this->clientMMP(), $request); - } - - /** - * 接受或拒绝订单行 - * Author: Sweeper - * DateTime: 2024/2/26 13:44 - * @doc https://help.mirakl.net/help/api-doc/seller/mmp.html#OR21 - * @param string $orderId - * @param array $orderLines {'order_lines':[{'accepted':true,'id':'Order_00012-B-1'}]} - * @return Response - */ - public function acceptRefuseOrder(string $orderId, array $orderLines): Response - { - // return static::handleResponse($this->clientMMP()->run(new AcceptOrderRequest($orderId, $orderLines)));// 官方SDK调不通,不知道错误信息,只提示400 - return static::put($this->buildRequestUri("orders/{$orderId}/accept"), $orderLines, static::buildHeaders($this->getConfig('api_key'))); - } - - /** - * 取消订单 - * Author: Sweeper - * DateTime: 2024/2/26 13:45 - * @doc https://help.mirakl.net/help/api-doc/seller/mmp.html#OR29 - * @param string $orderId - * @return Response - */ - public function cancelOrder(string $orderId): Response - { - // return static::handleResponse($this->clientMMP()->run(new CancelOrderRequest($orderId))); - return static::put($this->buildRequestUri("orders/{$orderId}/cancel"), [], static::buildHeaders($this->getConfig('api_key'))); - } - - /** - * 更新特定订单的承运商跟踪信息 - * Author: Sweeper - * DateTime: 2024/2/26 13:45 - * @doc https://help.mirakl.net/help/api-doc/seller/mmp.html#OR23 - * @param string $orderId - * @param array $trackingOrderInfo {'carrier_code':'UPS','carrier_name':'UPS','carrier_url':'https://ups.com','tracking_number':'5555'} - * @return Response - */ - public function updateOrderTrackingInfo(string $orderId, array $trackingOrderInfo): Response - { - return $this->execute($this->clientMMP(), new UpdateOrderTrackingInfoRequest($orderId, $trackingOrderInfo)); - } - - /** - * 获取订单文档 - * Author: Sweeper - * DateTime: 2024/2/26 13:46 - * @doc https://help.mirakl.net/help/api-doc/seller/mmp.html#OR72 - * @param array $orderIds - * @return Response - * @throws \Mirakl\Core\Exception\RequestValidationException - */ - public function getOrderDocuments(array $orderIds): Response - { - // Building request - $request = new GetOrderDocumentsRequest($orderIds); - - // Calling the API - return $this->execute($this->clientMMP(), $request); - } - - /** - * 下载订单文档 - * Author: Sweeper - * DateTime: 2024/2/26 13:47 - * @doc https://help.mirakl.net/help/api-doc/seller/mmp.html#OR73 - * @param array $orderIds - * @param bool $download - * @return Response - */ - public function downloadOrdersDocuments(array $orderIds, bool $download = false): Response - { - // Building request - $request = new DownloadOrdersDocumentsRequest(); - $request->setOrderIds($orderIds); - $result = $this->clientMMP()->downloadOrdersDocuments($request); - if ($download) { - $result->download(); - } - if (ob_get_length()) { - ob_clean(); - } - $result->getFile()->rewind(); - - return Response::success('Success', [$result->getFile()->fpassthru()]); - } - - /** - * 校验订单发货 Valid the shipment of the order - * Author: Sweeper - * DateTime: 2024/2/26 13:48 - * @doc https://help.mirakl.net/help/api-doc/seller/mmp.html#OR24 - * @param string $orderId - * @return Response - */ - public function shipOrder(string $orderId): Response - { - // return static::handleResponse($this->clientMMP()->run(new ShipOrderRequest($orderId))); - return static::put($this->buildRequestUri("orders/{$orderId}/ship"), [], static::buildHeaders($this->getConfig('api_key'))); - } - -} diff --git a/connector-miravia/classes/Services/Mirakl/PlatformSetting.php b/connector-miravia/classes/Services/Mirakl/PlatformSetting.php deleted file mode 100644 index f4018f1..0000000 --- a/connector-miravia/classes/Services/Mirakl/PlatformSetting.php +++ /dev/null @@ -1,30 +0,0 @@ - - * DateTime: 2024/2/26 13:16 - * @Package \Sweeper\PlatformMiddleware\Services\Mirakl\PlatformSetting - */ -class PlatformSetting extends Request -{ - - /** - * 列出所有承运商信息 - * Author: Sweeper - * DateTime: 2024/2/26 13:17 - * @param array $params - * @return Response - */ - public function carriers(array $params = []): Response - { - return $this->execute($this->clientMMP(), new GetShippingCarriersRequest($params)); - } - -} diff --git a/connector-miravia/classes/Services/Mirakl/Request.php b/connector-miravia/classes/Services/Mirakl/Request.php deleted file mode 100644 index 83164a2..0000000 --- a/connector-miravia/classes/Services/Mirakl/Request.php +++ /dev/null @@ -1,166 +0,0 @@ - - * DateTime: 2024/2/26 13:01 - * @Package \Sweeper\PlatformMiddleware\Services\Mirakl\Request - */ -class Request extends ClientRequest -{ - - public const OPEN_API_URI = 'https://marketplace.catch.com.au/'; - - public const OPEN_API_URL = 'https://marketplace.catch.com.au/api/'; - - /** @var string */ - public const TYPE_MCI = 'MCI'; - - /** @var string */ - public const TYPE_MCM = 'MCM'; - - /** @var string Marketplace for Products Seller API */ - public const TYPE_MMP = 'MMP'; - - /** - * 获取 API 服务URL - * Author: Sweeper - * DateTime: 2024/2/26 13:05 - * @return string - */ - protected function getServerDomain(): string - { - return static::OPEN_API_URI; - } - - /** - * 获取服务请求的路径 - * Author: Sweeper - * DateTime: 2024/2/26 13:05 - * @param string $path - * @return string - */ - protected function getServerPath(string $path): string - { - return $this->getVersion() ? "/api/{$this->getVersion()}/{$path}" : "/api/{$path}"; - } - - /** - * 实例化客户端 - * Author: Sweeper - * DateTime: 2024/2/26 13:05 - * @param string $type - * @return AbstractApiClient - */ - public function getClientByType(string $type = self::TYPE_MMP): AbstractApiClient - { - // Instantiating the Mirakl API Client - switch ($type) { - case static::TYPE_MCM: - $shopApiClient = $this->clientMCM(); - break; - case static::TYPE_MCI: - $shopApiClient = $this->clientMCI(); - break; - case static::TYPE_MMP: - default: - $shopApiClient = $this->clientMMP(); - break; - } - - return $shopApiClient; - } - - /** - * MMP 客户端 - * Author: Sweeper - * DateTime: 2024/2/26 13:05 - * @return MMPShopApiClient - */ - public function clientMMP(): MMPShopApiClient - { - // Instantiating the Mirakl API Client - $shopApiClient = new MMPShopApiClient($this->getConfig('api_url'), $this->getConfig('api_key'), $this->getConfig('shop_id')); - - return $shopApiClient->setOptions(['verify' => false, 'connect_timeout' => static::getConnectTimeout(), 'timeout' => static::getTimeout()]); - } - - /** - * MCI 客户端 - * Author: Sweeper - * DateTime: 2024/2/26 13:05 - * @return MCIShopApiClient - */ - public function clientMCI(): MCIShopApiClient - { - // Instantiating the Mirakl API Client - $shopApiClient = new MCIShopApiClient($this->getConfig('api_url'), $this->getConfig('api_key'), $this->getConfig('shop_id')); - - return $shopApiClient->setOptions(['verify' => false, 'connect_timeout' => static::getConnectTimeout(), 'timeout' => static::getTimeout()]); - } - - /** - * MCM 客户端 - * Author: Sweeper - * DateTime: 2024/2/26 13:05 - * @return MCMShopApiClient - */ - public function clientMCM(): MCMShopApiClient - { - // Instantiating the Mirakl API Client - $shopApiClient = new MCMShopApiClient($this->getConfig('api_url'), $this->getConfig('api_key'), $this->getConfig('shop_id')); - - return $shopApiClient->setOptions(['verify' => false, 'connect_timeout' => static::getConnectTimeout(), 'timeout' => static::getTimeout()]); - } - - /** - * 执行请求 -> 解析响应 - * Author: Sweeper - * DateTime: 2024/2/26 13:05 - * @param AbstractApiClient $client - * @param AbstractRequest $request - * @return Response - */ - public function execute(AbstractApiClient $client, AbstractRequest $request): Response - { - /** @var \GuzzleHttp\Psr7\Response $result */ - // Calling the API - // $response = $client->run($request);// $this->client()->getOrders($request); $this->client()->raw()->getOrders($request); - - return $this->resolveResponse($client->run($request));// return json_decode($result->getBody()->getContents() ?? '', true) ?: []; - } - - /** - * 构建头选项 - * Author: Sweeper - * DateTime: 2024/2/26 13:07 - * @param string $authorization - * @param array $options - * @return array - */ - protected static function buildHeaders(string $authorization, array $options = []): array - { - return array_replace([ - 'headers' => [ - 'Content-Type' => 'application/json', - 'Authorization' => $authorization, - 'Accept' => "*/*", - ], - 'verify' => false, - 'connect_timeout' => 10, - 'timeout' => 60, - ], $options); - } - -} diff --git a/connector-miravia/classes/Services/Miravia/Account.php b/connector-miravia/classes/Services/Miravia/Account.php deleted file mode 100644 index af83f71..0000000 --- a/connector-miravia/classes/Services/Miravia/Account.php +++ /dev/null @@ -1,131 +0,0 @@ - - * DateTime: 2024/3/15 15:17 - * @Package \Sweeper\PlatformMiddleware\Services\Miravia\Account - */ -class Account extends Base -{ - - public const APP_KEY = '24800759'; - public const APP_CALLBACK_URL = 'xxx'; - - /** - * 生成授权地址 - * Author: Sweeper - * DateTime: 2024/2/26 14:47 - * @doc https://open.aliexpress.com/doc/doc.htm?nodeId=27493&docId=118729#/?docId=989 - * @param string $appKey - * @param string $appCallbackUrl - * @return string|string[] - */ - public function generateAuthUrl(string $appKey = self::APP_KEY, string $appCallbackUrl = self::APP_CALLBACK_URL) - { - $uri = 'https://api-sg.aliexpress.com/oauth/authorize?response_type=code&force_auth=true&redirect_uri={app_callback_url}&client_id={app_key}'; - - return str_replace(['{app_callback_url}', '{app_key}'], [$appCallbackUrl ?: static::APP_CALLBACK_URL, $appKey ?: static::APP_KEY], $uri); - } - - /** - * 生成安全令牌 - * Author: Sweeper - * DateTime: 2024/2/26 14:48 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=3&path=/auth/token/security/create&methodType=GET/POST - * @param array $accountInfo - * @param string $code - * @param string|null $uuid - * @return mixed - */ - public function generateSecurityToken(array $accountInfo, string $code, string $uuid = null) - { - try { - $client = new IopClient(UrlConstants::API_GATEWAY_URL, $accountInfo['app_key'], $accountInfo['secret_key']); - $request = new IopRequest('/auth/token/security/create'); - $request->addApiParam('code', $code); - $uuid && $request->addApiParam('uuid', $uuid); - - return $client->execute($request); - } catch (\Throwable $ex) { - throw new \RuntimeException("{$ex->getFile()}#{$ex->getLine()} ({$ex->getMessage()})"); - } - } - - /** - * 生成令牌 - * Author: Sweeper - * DateTime: 2024/2/26 14:49 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=3&path=/auth/token/create&methodType=GET/POST - * @param array $accountInfo - * @param string $code - * @param $uuid - * @return mixed - */ - public function generateToken(array $accountInfo, string $code, $uuid = null) - { - try { - $client = new IopClient(UrlConstants::API_GATEWAY_URL, $accountInfo['app_key'], $accountInfo['secret_key']); - $request = new IopRequest('/auth/token/create'); - $request->addApiParam('code', $code); - $uuid && $request->addApiParam('uuid', $uuid); - - return $client->execute($request); - } catch (\Throwable $ex) { - throw new \RuntimeException("{$ex->getFile()}#{$ex->getLine()} ({$ex->getMessage()})"); - } - } - - /** - * 刷新安全令牌 - * Author: Sweeper - * DateTime: 2024/2/26 14:50 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=3&path=/auth/token/security/refresh&methodType=GET/POST - * @param array $accountInfo - * @param string $refreshToken - * @return mixed - */ - public function refreshSecurityToken(array $accountInfo, string $refreshToken) - { - try { - $client = new IopClient(UrlConstants::API_GATEWAY_URL, $accountInfo['app_key'], $accountInfo['secret_key']); - $request = new IopRequest('/auth/token/security/refresh'); - $request->addApiParam('refresh_token', $refreshToken); - - return $client->execute($request); - } catch (\Throwable $ex) { - throw new \RuntimeException("{$ex->getFile()}#{$ex->getLine()} ({$ex->getMessage()})"); - } - } - - /** - * 刷新令牌 - * Author: Sweeper - * DateTime: 2024/2/26 14:50 - * @doc https://open.aliexpress.com/doc/api.htm#/api?cid=3&path=/auth/token/refresh&methodType=GET/POST - * @param array $accountInfo - * @param string $refreshToken - * @return mixed - */ - public function refreshToken(array $accountInfo, string $refreshToken) - { - try { - $client = new IopClient(UrlConstants::API_GATEWAY_URL, $accountInfo['app_key'], $accountInfo['secret_key']); - $request = new IopRequest('/auth/token/refresh'); - $request->addApiParam('refresh_token', $refreshToken); - - return $client->execute($request); - } catch (\Throwable $ex) { - throw new \RuntimeException("{$ex->getFile()}#{$ex->getLine()} ({$ex->getMessage()})"); - } - } - -} diff --git a/connector-miravia/classes/Services/Miravia/Logistics.php b/connector-miravia/classes/Services/Miravia/Logistics.php deleted file mode 100644 index fec84d2..0000000 --- a/connector-miravia/classes/Services/Miravia/Logistics.php +++ /dev/null @@ -1,160 +0,0 @@ - - * DateTime: 2024/2/26 16:25 - * @Package \Sweeper\PlatformMiddleware\Services\Miravia\Logistics - */ -class Logistics extends Base -{ - - /** - * Miravia包裹声明发货 - * User: Sweeper - * Time: 2023/7/7 18:56 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21395&path=arise.logistics.pkg.shipment.declare&methodType=POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsPkgShipmentDeclare(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.pkg.shipment.declare', $params, 'package_declare_shipment_request', ['package_id_list', 'channel_type', 'seller_id']); - - return $response->arise_logistics_pkg_shipment_declare_response->result ?? $response->result ?? $response; - } - - /** - * Miravia物流作废包裹 - * User: Sweeper - * Time: 2023/7/7 18:59 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21395&path=arise.logistics.repack&methodType=POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsRepack(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.repack', $params, 'repack_request', ['package_id_list', 'channel_type', 'seller_id']); - - return $response->arise_logistics_repack_response->result ?? $response->result ?? $response; - } - - /** - * Miravia物流修改声明发货 - * User: Sweeper - * Time: 2023/7/7 19:02 - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsShipmentUpdate(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.shipment.update', $params, 'package_update_request', ['channel_type', 'seller_id']); - - return $response->arise_logistics_shipment_update_response->result ?? $response->result ?? $response; - } - - /** - * Miravia物流声明发货 - * User: Sweeper - * Time: 2023/7/7 19:05 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21395&path=arise.logistics.shipment.declare&methodType=POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsShipmentDeclare(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.shipment.declare', $params, 'declare_shipment_request', ['trade_order_id', 'trade_order_item_id_list', 'shipment_provider_code', 'tracking_number', 'channel_type', 'seller_id']); - - return $response->arise_logistics_shipment_declare_response->result ?? $response->result ?? $response; - } - - /** - * Miravia物流打包 - * User: Sweeper - * Time: 2023/7/7 19:07 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21395&path=arise.logistics.pack&methodType=POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsPack(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.pack', $params, 'pack_request', ['seller_id', 'operate_way', 'trade_order_id', 'trade_order_item_id_list', 'channel_type']); - - return $response->arise_logistics_pack_response->result ?? $response->result ?? $response; - } - - /** - * Miravia物流打包V2 - * User: Sweeper - * Time: 2023/7/7 19:07 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21395&path=arise.logistics.packing&methodType=POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsPacking(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.packing', $params, 'pack_request', ['seller_id', 'operate_way', 'trade_order_id', 'trade_order_item_id_list', 'channel_type']); - - return $response->arise_logistics_packing_response->result ?? $response->result ?? $response; - } - - /** - * Miravia物流打印面单 - * User: Sweeper - * Time: 2023/7/7 19:10 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21395&path=arise.logistics.awb.print&methodType=GET - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsAwbPrint(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.awb.print', $params, 'print_awb_request', ['seller_id', 'package_id_list', 'channel_type', 'file_type'], 'GET'); - - return $response->arise_logistics_awb_print_response ?? $response; - } - - /** - * Miravia物流服务商查询 - * User: Sweeper - * Time: 2023/7/7 19:10 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21395&path=arise.logistics.shipment.provider.query&methodType=GET - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsShipmentProviderQuery(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.shipment.provider.query', $params, 'shipment_provider_request', ['seller_id', 'trade_order_id', 'trade_order_item_id_list', 'channel_type'], 'GET'); - - return $response->arise_logistics_shipment_provider_query_response->result ?? $response->result ?? $response; - } - - /** - * Miravia物流确认妥投状态 - * User: Sweeper - * Time: 2023/7/7 19:10 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21395&path=arise.logistics.shipment.confirm&methodType=POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function logisticsShipmentConfirm(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.logistics.shipment.confirm', $params, 'package_confirm_request', ['event_code', 'seller_id', 'package_id_list', 'channel_type']); - - return $response->arise_logistics_shipment_confirm_response->result ?? $response->result ?? $response; - } - -} diff --git a/connector-miravia/classes/Services/Miravia/Order.php b/connector-miravia/classes/Services/Miravia/Order.php deleted file mode 100644 index fffa838..0000000 --- a/connector-miravia/classes/Services/Miravia/Order.php +++ /dev/null @@ -1,65 +0,0 @@ - - * DateTime: 2024/2/26 16:25 - * @Package \Sweeper\PlatformMiddleware\Services\Miravia\Order - */ -class Order extends Base -{ - - /** - * Miravia订单列表查询 - * User: Sweeper - * Time: 2023/7/7 10:58 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21394&path=arise.order.list.query&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getOrderList(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.order.list.query', $params, 'param0', ['current_page', 'open_channel', 'channel_seller_id']); - - return $response->arise_order_list_query_response->result ?? $response->result ?? $response; - } - - /** - * Miravia订单详情查询 - * User: Sweeper - * Time: 2023/7/7 10:58 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21394&path=arise.order.detail.query&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function getOrderDetail(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.order.detail.query', $params, 'param0', ['trade_order_id', 'open_channel', 'channel_seller_id']); - - return $response->arise_order_detail_query_response->result ?? $response->result ?? $response; - } - - /** - * Miravia订单设置备注 - * User: Sweeper - * Time: 2023/7/7 10:58 - * @doc https://open.aliexpress.com/doc/api.htm?spm=a2o9m.11193487.0.0.35096f3dtoF70t#/api?cid=21394&path=arise.order.memo.set&methodType=GET/POST - * @param array $accountInfo - * @param array $params - * @return mixed - */ - public function setMemo(array $accountInfo, array $params = []) - { - $response = static::executeRequest($accountInfo, 'arise.order.memo.set', $params, 'param0', ['trade_order_id', 'open_channel', 'channel_seller_id']); - - return $response->arise_order_memo_set_response->result ?? $response->result ?? $response; - } - -} diff --git a/connector-miravia/classes/class.general.php b/connector-miravia/classes/class.general.php deleted file mode 100644 index 9a5cdf7..0000000 --- a/connector-miravia/classes/class.general.php +++ /dev/null @@ -1,11 +0,0 @@ -client) { - $this->client = new IopClient($this->url,$this->appKey,$this->appSecret); - } - } - - function secure(){ - if(!$this->client) { - die(json_encode(array('error' => true, 'message' => 'No se ha establecido la conexión'))); - } - } - - function get($endpoint = '', $params = array()) { - $this->secure(); - $request = new IopRequest($endpoint,'GET'); - - if($params) { - foreach($params as $k => $v) { - $request->addApiParam($k,$v); - } - } - - try{ - $result = $this->client->execute($request,$this->token); - }catch(Exception $e) { - return $this->error_control($e); - } - - $resp = json_decode($result, true); - return $this->response($resp); - } - - function post($endpoint = '', $data = array()) { - $this->secure(); - $request = new IopRequest($endpoint); - - if($data) { - foreach($data as $k => $v) { - $request->addApiParam($k,$v); - } - } - try{ - $result = $this->client->execute($request, $this->token); - }catch(Exception $e) { - return $this->error_control($e); - } - - $resp = json_decode($result, true); - return $this->response($resp); - } - - function response($result) { - if(isset($result['data'])) { - return $result['data']; - }else{ - //Control de errores - return $this->error_control($result); - } - } - - function error_control($resp) { - // die('
'.print_r($resp, true).'
'); - if($resp->code != '0') { - if(isset($resp->detail)) { - $errors = $resp->detail; - }else{ - $errors = [$resp->message]; - } - return array( - 'code' => $resp->code, - 'errors' => $errors - ); - }else{ - return array( - 'code' => '-1', - 'errors' => array($resp) - ); - } - } - - function get_images_batch($batch_id) { - return $this->get('/image/response/get', array('batch_id' => $batch_id)); - } - - function get_brands($page) { - - $to = $page * 20; - $from = $to - 20; - return $this->get('/category/brands/query', array('start_row' => $from, "page_size" => $to)); - } - - - function get_orders($args = array()) { - return $this->get('/orders/get', $args); - } - - function get_order($args = array()) { - return $this->get('/order/get', $args); - } - - function get_orders_items($args = array()) { - return $this->get('/order/items/get', $args); - } - - function get_products($args = array()) { - return $this->get('/products/get', $args); - } - } -} \ No newline at end of file diff --git a/connector-miravia/classes/class.product copy.php b/connector-miravia/classes/class.product copy.php deleted file mode 100644 index 648a860..0000000 --- a/connector-miravia/classes/class.product copy.php +++ /dev/null @@ -1,125 +0,0 @@ - array()); - public $Attributes = array(); - public $Skus = array('Sku' => array()); - public $PrimaryCategory = 0; - - function __construct($id){ - $this->product = wc_get_product($id); - //Por defecto de la categoria - $terms = get_the_terms( $this->product->get_id(), 'product_cat' ); - $this->category = $terms[0]; - - - //Exist Product - $miraviaId = get_post_meta($id, '_miravia_product_id', true); - if($miraviaId) { - $this->ItemId = $miraviaId; - } - $atributos_guardados = get_term_meta($this->category->term_id, "_miravia_attr", true); - if($atributos_guardados) { - $this->Attributes = $atributos_guardados; - } - - //Completar los datos básicos - $this->PrimaryCategory = get_term_meta($this->category->term_id, "_miravia_category", true); - $this->Attributes['name'] = $this->product->get_name(); - $this->Attributes['description'] = $this->product->get_description(); - - - //Cargar imagenes - $attachment_ids = $this->product->get_gallery_image_ids(); - - foreach( $attachment_ids as $attachment_id ) { - $this->Images['Image'][] = $this->defaul_image; - } - - $this->get_skus(); - } - - function get_skus() { - if($this->product->is_type('simple')) { - $skus = [$this->product]; - }else{ - $skus = $this->product->get_available_variations(); - } - foreach($skus as $index => $sku) { - $this->Skus['Sku'][$index]["SellerSku"] = $sku->get_sku(); - $this->Skus['Sku'][$index]["quantity"] = $sku->get_stock_quantity(); - $this->Skus['Sku'][$index]["price"] = $sku->get_regular_price(); - if($sku->is_on_sale()) { - $this->Skus['Sku'][$index]["special_price"] = $sku->get_sale_price(); - } - $this->Skus['Sku'][$index]["price"] = $sku->get_regular_price(); - if($sku->get_manage_stock() === false) { - if($sku->get_stock_status() == "instock") { - $stock_available = intval(100); //Stock por defecto - }else{ - $stock_available = 0; - } - }else{ - $stock_available = $sku->get_stock_quantity(); - } - $this->Skus['Sku'][$index]["quantity"] = $stock_available; - $this->Skus['Sku'][$index]["package_height"] = $sku->get_height(); - $this->Skus['Sku'][$index]["package_length"] = $sku->get_length(); - $this->Skus['Sku'][$index]["ean_code"] = '0'; //Implementar - $this->Skus['Sku'][$index]["package_width"] = $sku->get_width(); - $this->Skus['Sku'][$index]["package_weight"] = $sku->get_weight(); - $this->Skus['Sku'][$index]["package_content"] = ''; //Implementar - - $attachment_ids = $sku->get_gallery_image_ids(); - foreach( $attachment_ids as $attachment_id ) { - $this->Skus['Sku'][$index]["Images"]["Image"][] = $this->defaul_image; - } - } - } - - - function send() { - global $MIRAVIAWOO; - - $send_product = json_encode(array("Request" => array("Product" => array( - 'Attributes' => $this->Attributes, - 'PrimaryCategory' => $this->PrimaryCategory, - 'Skus' => $this->Skus, - 'Images' => $this->Images - )))); - - $result_product = $MIRAVIAWOO->client->post('/product/create', array( - 'body' => $send_product - )); - - return $result_product; - } - - function update() { - global $MIRAVIAWOO; - - $send_product = json_encode(array("Request" => array("Product" => array( - 'ItemId' => $this->ItemId, - 'Attributes' => $this->Attributes, - 'PrimaryCategory' => $this->PrimaryCategory, - 'Skus' => $this->Skus, - 'Images' => $this->Images - )))); - - $result_product = $MIRAVIAWOO->client->post('/product/update', array( - 'payload' => $send_product - )); - error_log(json_encode($result_product)); - return $result_product; - } - - - } -} \ No newline at end of file diff --git a/connector-miravia/classes/class.ui.php b/connector-miravia/classes/class.ui.php deleted file mode 100644 index e2c8902..0000000 --- a/connector-miravia/classes/class.ui.php +++ /dev/null @@ -1,11 +0,0 @@ - 'en', - 'ARABIC' => 'ar', - 'GERMAN' => 'de', - 'SPANISH' => 'es', - 'FRENCH' => 'fr', - 'INDONESIAN' => 'in', - 'ITALIAN' => 'it', - 'HEBREW' => 'iw', - 'JAPANESE' => 'ja', - 'KOREAN' => 'ko', - 'DUTCH' => 'nl', - 'POLISH' => 'pl', - 'PORTUGUESE' => 'pt', - 'RUSSIAN' => 'ru', - 'THAI' => 'th', - 'TURKISH' => 'tr', - 'VIETNAMESE' => 'vi', - ]; - - public static $Languages = [ - 'en' => 'en_US', - 'ar' => 'ar_MA', - 'de' => 'de_DE', - 'es' => 'es_ES', - 'fr' => 'fr_FR', - 'in' => 'in_ID', - 'it' => 'it_IT', - 'iw' => 'iw_IL', - 'ja' => 'ja_JP', - 'ko' => 'ko_KR', - 'nl' => 'nl_NL', - 'pl' => 'pl_PL', - 'pt' => 'pt_BR', - 'ru' => 'ru_RU', - 'th' => 'th_TH', - 'tr' => 'tr_TR', - 'vi' => 'vi_VN', - ]; -} \ No newline at end of file diff --git a/connector-miravia/connector-miravia.php b/connector-miravia/connector-miravia.php index c44b6dc..484320d 100644 --- a/connector-miravia/connector-miravia.php +++ b/connector-miravia/connector-miravia.php @@ -1,16 +1,19 @@