syed / netsuite-php
NetSuite PHP API 包装器
Requires
- php: >=5.3.0
- ext-openssl: *
- ext-simplexml: *
- ext-soap: *
- paragonie/random_compat: >=1
Requires (Dev)
- phpspec/phpspec: ^2.4
Suggests
- symfony/dotenv: Provides loading a .env file for obtaining config variables
- vlucas/phpdotenv: Provides loading a .env file for obtaining config variables
This package is not auto-updated.
Last update: 2024-09-24 19:51:00 UTC
README
这是一个用于 NetSuite 的 PHP API 客户端包,是从 NetSuite PHP 工具包 中提取出来的。
添加到您的项目
使用 composer 需要
V2 在 Alpha 版本
composer require ryanwinchester/netsuite-php
v2 中的更改
- 更改了命名空间
- 显著简化了 NetSuiteClient
- 添加了一个使用环境变量进行配置的便利方法来创建实例
- 改进了日志记录,即使 SOAP 调用中抛出异常,也会记录日志。
快速入门
实例化 NetSuiteService 类
下面的示例假设您已经完成了这个步骤。
require 'vendor/autoload.php'; use NetSuite\NetSuiteService; $config = array( // required ------------------------------------- "endpoint" => "2019_1", "host" => "https://webservices.netsuite.com", "email" => "jDoe@netsuite.com", "password" => "mySecretPwd", "role" => "3", "account" => "MYACCT1", "app_id" => "4AD027CA-88B3-46EC-9D3E-41C6E6A325E2", // optional ------------------------------------- "logging" => true, "log_path" => "/var/www/myapp/logs/netsuite" ); $service = new NetSuiteService($config);
您还可以将配置放在环境变量中。这在托管环境中很有用,在这些环境中,配置文件的部署可能不希望或不实际。您可以在包含的 .env.example 文件中找到有效的密钥及其示例值。
以前,使用 ENV 数据实例化 NetSuiteClient 需要使用静态方法 createFromEnv
。此方法现在已标记为 已弃用
,如果您正在使用它,请将您的代码更改为使用标准构造函数,该构造函数将为您从 $_ENV 超全局变量中提取配置。
require 'vendor/autoload.php'; use NetSuite\NetSuiteService; $service = new NetSuiteService();
特定账户的数据中心 URL
从 2019_1 开始,这个库提供支持在每个请求中使用 NetSuite 的新特定账户数据中心 URL。在实践中,此查找确实有可衡量的开销成本。因此,我建议仅在您的 NetSuite 集成方式使您做出的连接较少,并且可以批量处理集成时才使用此功能。如果您的集成方式是向 NetSuite 发送许多频繁的、简短请求,那么您可能更喜欢明确提供数据中心 URL 并从每个会话中删除查找。
// To use your own defined data center URL (or sandbox, for instance): $config['host'] = 'https://123456789.suitetalk.api.netsuite.com'; // To allow the service to get the correct URL for your account on the fly, // use the legacy webservices url. $config['host'] = 'https://webservices.netsuite.com';
检索客户记录
use NetSuite\Classes\GetRequest; use NetSuite\Classes\RecordRef; $request = new GetRequest(); $request->baseRef = new RecordRef(); $request->baseRef->internalId = "123"; $request->baseRef->type = "customer"; $getResponse = $service->get($request); if ( ! $getResponse->readResponse->status->isSuccess) { echo "GET ERROR"; } else { $customer = $getResponse->readResponse->record; }
搜索以 "j" 开头的电子邮件的客户
use NetSuite\Classes\SearchStringField; use NetSuite\Classes\CustomerSearchBasic; use NetSuite\Classes\SearchRequest; $service->setSearchPreferences(false, 20); $emailSearchField = new SearchStringField(); $emailSearchField->operator = "startsWith"; $emailSearchField->searchValue = "j"; $search = new CustomerSearchBasic(); $search->email = $emailSearchField; $request = new SearchRequest(); $request->searchRecord = $search; $searchResponse = $service->search($request); if (!$searchResponse->searchResult->status->isSuccess) { echo "SEARCH ERROR"; } else { $result = $searchResponse->searchResult; $count = $result->totalRecords; $records = $result->recordList; echo $count . " records were found."; }
添加新客户
use NetSuite\Classes\Customer; use NetSuite\Classes\RecordRef; use NetSuite\Classes\AddRequest; $customer = new Customer(); $customer->lastName = "Doe"; $customer->firstName = "John"; $customer->companyName = "ABC company"; $customer->phone = "123456789"; $customer->email = "joe.doe@abc.com"; $customer->customForm = new RecordRef(); $customer->customForm->internalId = -8; $request = new AddRequest(); $request->record = $customer; $addResponse = $service->add($request); if (!$addResponse->writeResponse->status->isSuccess) { echo "ADD ERROR"; } else { echo "ADD SUCCESS, id " . $addResponse->writeResponse->baseRef->internalId; }
添加包含自定义字段的销售订单
此订单创建示例不是完整的示例,但显示了您通常如何设置和添加对象,以及您如何在插入时向销售添加自定义字段。
use NetSuite\Classes\AddRequest; use NetSuite\Classes\CustomFieldList; use NetSuite\Classes\RecordRef; use NetSuite\Classes\SalesOrder; use NetSuite\Classes\StringCustomField; $sale = new SalesOrder(); // Associate a customer record with this order $sale->entity = new RecordRef(); $sale->entity->type = 'customer'; $sale->entity->internalId = $myCustomerInternalId; // Set the date of the order $sale->tranDate = $myOrderDate; // Set the shipping method and price for the order $sale->shipMethod = new RecordRef(); $sale->shipMethod->internalId = $myShipMethodId; $sale->shippingCost = $myShippingTotal; // Look at the SalesOrder class definition for a list of all the available // properties and their types that you can use on a sales order in NetSuite. // You'll need to add items, addresses, status, etc. // Create a sample string-type custom field to the order which represents // the ID of the order in our source platform: $cfOrderNum = new StringCustomFieldRef(); $cfOrderNum->scriptId = 'custbody_order_num'; $cfOrderNum->value = $myOrderNumber; // Collect all custom fields into an array and add the list of fields to the // order add request: $customFields[] = $cfOrderNum; $sale->customFieldList = new CustomFieldList(); $sale->customFieldList->customField = $customFields; // Submit the sales order create request $request = new AddRequest(); $request->record = $sale; $response = $service->add($request); if (!$addResponse->writeResponse->status->isSuccess) { echo "ADD ERROR"; } else { echo "ADD SUCCESS, id " . $addResponse->writeResponse->baseRef->internalId; }
创建履约单
创建针对销售订单的履约单需要根据目标记录(销售订单)初始化新记录。然后您可以相应地设置新记录上的属性,并将其添加到 NetSuite。创建现金销售记录也使用相同的方法。
use NetSuite\Classes\AddRequest; use NetSuite\Classes\InitializeRecord; use NetSuite\Classes\InitializeRef; use NetSuite\Classes\InitializeRequest; use NetSuite\Classes\ItemFulfillmentPackage; use NetSuite\Classes\ItemFulfillmentPackageList; // Initialize an item fulfillment from an existing Sales Order $reference = new InitializeRef(); $reference->type = InitializeRefType::salesOrder; $reference->internalId = $mySalesOrderInternalId; $record = new InitializeRecord(); $record->type = InitializeType::itemFulfillment; $record->reference = $reference; $request = new InitializeRequest(); $request->initializeRecord = $record; $response = $service->initialize($request); if (!$response->readResponse->status->isSuccess) { echo "INIT ERROR"; } $itemFulfillment = $response->readResponse->record; $package = new ItemFulfillmentPackage(); $package->packageWeight = 1; $package->packageTrackingNumber = $myTrackingNumber; $packageList = new ItemFulfillmentPackageList(); $packageList->package = $package; $itemFulfillment->packageList = $packageList; $request = new AddRequest(); $request->record = $itemFulfillment; $response = $service->add($request); if (!$response->writeResponse->status->isSuccess) { echo "ADD ERROR"; } else { echo "ADD SUCCESS, id " . $addResponse->writeResponse->baseRef->internalId; }
日志记录
您可以在任何时候打开或关闭日志记录,或覆盖传入的配置设置。请注意,如果您在配置或之后未指定日志目录,则无论您做什么都不会获取日志。
设置日志路径
$service->setLogPath('/path/to/logs');
打开日志记录
$service->logRequests(true); // Turn logging on.
关闭日志记录
$service->logRequests(false); // Turn logging off.
基于令牌的认证
您可以使用 consumerKey
/consumerSecret
/token
/tokenSecret
形式的凭据代替标准凭据方法来实例化 NetSuiteService
。
$config = array( // required ------------------------------------- "endpoint" => "2019_1", "host" => "https://webservices.netsuite.com", "account" => "MYACCT1", "consumerKey" => "0123456789ABCDEF", "consumerSecret" => "0123456789ABCDEF", "token" => "0123456789ABCDEF", "tokenSecret" => "0123456789ABCDEF", // optional ------------------------------------- "signatureAlgorithm" => 'sha256', // Defaults to 'sha256' ); $service = new NetSuiteService($config);
状态
- 从单个文件中提取 ~1500 个类...
- 具有自动加载的 Composer 包
- 通过构造函数传递配置
- 可选的环境变量配置
- 命名空间
- 日志记录
- 动态数据中心 URL
- 扩展用户文档
- 支持通过 ENV 变量进行自动配置
许可
原始作品版权所有 © 2010-2015 NetSuite Inc.,提供“现状”使用。请参阅NetSuite 工具包许可协议文件。
所有附加作品均根据包含的LICENSE文件,在Apache 2.0开源软件许可下授权。