ltsecurityinc安防产品在线商城代码
This commit is contained in:
Executable
+269
@@ -0,0 +1,269 @@
|
||||
<?php
|
||||
|
||||
namespace JR\NetSuite\Lib;
|
||||
|
||||
use JR\NetSuite\Helper\Data;
|
||||
use JR\NetSuite\Logger\Logger;
|
||||
use JR\NetSuite\Lib\Oauth;
|
||||
use Magento\Framework\HTTP\Client\Curl;
|
||||
use Magento\Framework\Serialize\Serializer\Json;
|
||||
|
||||
class NetSuiteAPI
|
||||
{
|
||||
const CUSTOMER = 'customer';
|
||||
const CUSTOMER_WITH_FILTER = 'customerWithFilter';
|
||||
const RETURN_AUTHORIZATION = 'returnAuthorization';
|
||||
const INVENTORY_ITEM = 'inventoryItem';
|
||||
const INVENTORY_ITEM_WITH_LOCATION = 'inventoryItemWithLocation';
|
||||
const LOCATION = 'location';
|
||||
const SALES_ORDER = 'salesOrder';
|
||||
const CREATE_LEAD_SCRIPT = '351';
|
||||
const CREATE_SALES_ORDER_SCRIPT = '468';
|
||||
|
||||
const DEFAULT_PAGE_SIZE = 150;
|
||||
const DEFAULT_PAGE = 1;
|
||||
|
||||
/**
|
||||
* @var \JR\NetSuite\Helper\Data
|
||||
*/
|
||||
protected $helper;
|
||||
|
||||
/**
|
||||
* @var \JR\NetSuite\Logger\Logger
|
||||
*/
|
||||
protected $_logger;
|
||||
|
||||
/**
|
||||
* @var \JR\NetSuite\Lib\Oauth
|
||||
*/
|
||||
protected $oauth;
|
||||
|
||||
/**
|
||||
* @var \Magento\Framework\HTTP\Client\Curl
|
||||
*/
|
||||
public $curl;
|
||||
|
||||
/**
|
||||
* @var \Magento\Framework\Serialize\Serializer\Json
|
||||
*/
|
||||
public $json;
|
||||
|
||||
/**
|
||||
* @param Data $helper
|
||||
* @param Logger $_logger
|
||||
*/
|
||||
public function __construct(
|
||||
Data $helper,
|
||||
Logger $logger,
|
||||
Oauth $oauth,
|
||||
Curl $curl,
|
||||
Json $json
|
||||
) {
|
||||
$this->helper = $helper;
|
||||
$this->_logger = $logger;
|
||||
$this->oauth = $oauth;
|
||||
$this->curl = $curl;
|
||||
$this->json = $json;
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch customer data from NetSuite
|
||||
*
|
||||
* @param $pageSize
|
||||
* @param $page
|
||||
* @param $addtionalParams
|
||||
* @return array
|
||||
*/
|
||||
public function fetchCustomers($pageSize = self::DEFAULT_PAGE_SIZE, $page = 1, $addtionalParams = [])
|
||||
{
|
||||
return $this->fetchData(self::CUSTOMER, $pageSize, $page, $addtionalParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch customer data from NetSuite by email
|
||||
*
|
||||
* @param $pageSize
|
||||
* @param $page
|
||||
* @param $addtionalParams
|
||||
* @return array
|
||||
*/
|
||||
public function fetchCustomersWithFilter($pageSize = self::DEFAULT_PAGE_SIZE, $page = 1, $addtionalParams = [])
|
||||
{
|
||||
// TODO: filter not right for new lead
|
||||
return $this->fetchData(self::CUSTOMER_WITH_FILTER, $pageSize, $page, $addtionalParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch return authorization data from NetSuite
|
||||
*
|
||||
* @param $pageSize
|
||||
* @param $page
|
||||
* @return array
|
||||
*/
|
||||
public function fetchReturnAuthorizations($pageSize = self::DEFAULT_PAGE_SIZE, $page = self::DEFAULT_PAGE, $addtionalParams = [])
|
||||
{
|
||||
return $this->fetchData(self::RETURN_AUTHORIZATION, $pageSize, $page, $addtionalParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch location data from NetSuite
|
||||
*
|
||||
* @param $pageSize
|
||||
* @param $page
|
||||
* @return array
|
||||
*/
|
||||
public function fetchLocations($pageSize = self::DEFAULT_PAGE_SIZE, $page = self::DEFAULT_PAGE, $addtionalParams = [])
|
||||
{
|
||||
return $this->fetchData(self::LOCATION, $pageSize, $page, $addtionalParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch product data from NetSuite
|
||||
*
|
||||
* @param $pageSize
|
||||
* @param $page
|
||||
* @return array
|
||||
*/
|
||||
public function fetchProducts($pageSize = self::DEFAULT_PAGE_SIZE, $page = self::DEFAULT_PAGE, $addtionalParams = [])
|
||||
{
|
||||
return $this->fetchData(self::INVENTORY_ITEM, $pageSize, $page, $addtionalParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch product data from NetSuite
|
||||
*
|
||||
* @param $pageSize
|
||||
* @param $page
|
||||
* @return array
|
||||
*/
|
||||
public function fetchProductsWithLocation($pageSize = self::DEFAULT_PAGE_SIZE, $page = self::DEFAULT_PAGE, $addtionalParams = [])
|
||||
{
|
||||
return $this->fetchData(self::INVENTORY_ITEM_WITH_LOCATION, $pageSize, $page, $addtionalParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch sales order data from NetSuite
|
||||
*
|
||||
* @param $pageSize
|
||||
* @param $page
|
||||
* @return array
|
||||
*/
|
||||
public function fetchOrders($pageSize = self::DEFAULT_PAGE_SIZE, $page = self::DEFAULT_PAGE, $addtionalParams = [])
|
||||
{
|
||||
return $this->fetchData(self::SALES_ORDER, $pageSize, $page, $addtionalParams);
|
||||
}
|
||||
|
||||
/**
|
||||
* fetch data from NetSuite
|
||||
*
|
||||
* @param $recordType
|
||||
* @param $pageSize
|
||||
* @param $page
|
||||
* @return array
|
||||
*/
|
||||
private function fetchData($recordType, $pageSize = self::DEFAULT_PAGE_SIZE, $page = self::DEFAULT_PAGE, $addtionalParams = [])
|
||||
{
|
||||
$params = [
|
||||
'recordType' => $recordType,
|
||||
'page' => $page,
|
||||
'pageSize' => $pageSize
|
||||
];
|
||||
if (!empty($addtionalParams)) {
|
||||
$params = array_merge($params, $addtionalParams);
|
||||
}
|
||||
$response = $this->postData($params);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* update customer data to NetSuite
|
||||
*/
|
||||
public function updateCustomer($data)
|
||||
{
|
||||
$this->oauth->setScript(self::CREATE_LEAD_SCRIPT);
|
||||
$response = $this->postData($data);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* update order data to NetSuite
|
||||
*/
|
||||
public function updateOrder($data)
|
||||
{
|
||||
$this->oauth->setScript(self::CREATE_SALES_ORDER_SCRIPT);
|
||||
$response = $this->postData($data);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* create return authorization in NetSuite
|
||||
*/
|
||||
public function createReturnAuthorization($data)
|
||||
{
|
||||
$params = [
|
||||
'action' => 'create',
|
||||
'recordType' => self::RETURN_AUTHORIZATION,
|
||||
'data' => $data
|
||||
];
|
||||
$response = $this->postData($params);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* update data to NetSuite
|
||||
*/
|
||||
public function updateData($recordType, $data)
|
||||
{
|
||||
$params = [
|
||||
'recordType' => $recordType,
|
||||
'data' => $data
|
||||
];
|
||||
$response = $this->postData($params);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array $data
|
||||
* @return array
|
||||
*/
|
||||
public function postData(array $data)
|
||||
{
|
||||
$url = $this->oauth->getApiUrl() . '?script=' . $this->oauth->getScript() . '&deploy=1';
|
||||
$oauthCredentials = $this->oauth->getOauthParams('POST');
|
||||
$jsonData = $this->json->serialize($data);
|
||||
$this->_logger->info('Request: ' . $jsonData);
|
||||
|
||||
try {
|
||||
$this->curl->addHeader("Accept", "application/json");
|
||||
$this->curl->addHeader("Content-Type", "application/json");
|
||||
$this->curl->addHeader("Authorization", $oauthCredentials);
|
||||
// $this->curl->addHeader("Cookie", "NS_ROUTING_VERSION=LAGGING");
|
||||
$this->curl->post($url, $jsonData);
|
||||
// check the status code returned by NetSuite
|
||||
$statusCode = $this->curl->getStatus();
|
||||
$this->_logger->info('Status Code: ' . $statusCode);
|
||||
$this->_logger->info('NetSuite API data: ', ['data' => $data, 'url' => $url]);
|
||||
if ($statusCode != 200) {
|
||||
$this->_logger->error("Error: " . $this->curl->getBody());
|
||||
return $response = [
|
||||
'error' => true,
|
||||
'message' => $this->curl->getBody()
|
||||
];
|
||||
}
|
||||
$response = $this->curl->getBody();
|
||||
$this->_logger->info('Response: ' . $response);
|
||||
$response = $this->json->unserialize($response);
|
||||
# if response is not an array, unserialize again
|
||||
if (!is_array($response)) {
|
||||
$response = $this->json->unserialize($response);
|
||||
}
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
$this->_logger->error("error: " . $e->getMessage());
|
||||
return $response = [
|
||||
'error' => true,
|
||||
'message' => $e->getMessage()
|
||||
];
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user