netable / netsuite-php
NetSuite PHP API 封装器
Requires
- php: >=8.1
- ext-openssl: *
- ext-simplexml: *
- ext-soap: *
- paragonie/random_compat: >=1
- psr/log: ^1|^2|^3
Requires (Dev)
- mikey179/vfsstream: ^1.6
- phpspec/phpspec: >=5
- phpunit/phpunit: ^9.5
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 auto-updated.
Last update: 2024-09-19 04:42:30 UTC
README
NetSuite 的 PHP API 客户端软件包,由 NetSuite PHP 工具包 NetSuite PHP Toolkit 提供的代码提炼而成,使其更适合现代 PHP 应用程序开发。所有 NetSuite\Classes
命名空间中的类都是 NetSuite 提供的代码,具有允许重新分配的 许可。此库提供的自定义工作将这些近 2,000 个类分离开来,并允许使用 composer 安装这些类,并通过标准自动加载支持来访问它们。它允许从环境配置中读取配置,支持记录请求和响应,并提供简化的客户端封装类(NetSuiteService
)。
安装
使用 composer 安装
composer require ryanwinchester/netsuite-php
快速入门
实例化 NetSuiteService 类
以下示例将假设您已经使用基于令牌的认证实例化了客户端对象。NetSuite 在 2020 年停止支持使用用户凭据进行认证的方法。
// Token-based Authentication require 'vendor/autoload.php'; use NetSuite\NetSuiteService; $config = [ // required ------------------------------------- "endpoint" => "2021_1", "host" => "https://webservices.netsuite.com", "account" => "MYACCT1", "consumerKey" => "0123456789ABCDEF", "consumerSecret" => "0123456789ABCDEF", "token" => "0123456789ABCDEF", "tokenSecret" => "0123456789ABCDEF", // optional ------------------------------------- "signatureAlgorithm" => 'sha256', // Defaults to 'sha256' "logging" => true, "log_path" => "/var/www/myapp/logs/netsuite", "log_format" => "netsuite-php-%date-%operation", "log_dateformat" => "Ymd.His.u", ]; $service = new NetSuiteService($config);
您也可以将配置放在环境变量中。这在托管环境中很有用,在这些环境中,部署配置文件可能不受欢迎或不切实际。您可以在包含示例值的 .env.example
文件中找到有效的密钥。
以前,使用 ENV 数据实例化 NetSuiteClient 需要使用静态方法 createFromEnv
。此方法现在已标记为 已弃用
,如果您正在使用它,请将您的代码更改为使用标准构造函数,该构造函数将为您从 $_ENV 超全局变量中提取配置。
// Allowing the client to infer configuration from $_ENV require 'vendor/autoload.php'; use NetSuite\NetSuiteService; $service = new NetSuiteService();
Laravel 集成
如果您在 Laravel 应用程序中实现 NetSuite 网络服务,您可能想看看 netsuite-laravel 软件包,以简化实例化和通过服务容器使客户端可用于您的应用程序。在这种情况下,您只需在您的应用程序中包含 netsuitephp/netsuite-laravel
软件包,然后只要客户端配置存在于应用程序的环境中,容器中就会有客户端实例。
特定账户的数据中心 URL
从 2021_1
版本开始,此库提供了利用 NetSuite 的新账户特定数据中心 URL 检测的功能。在实践中,此查找确实有可衡量的开销成本。因此,我建议仅在您的 NetSuite 集成方式导致连接较少、批量处理集成的情况下使用此功能。如果您的方式是向 NetSuite 发送许多频繁的、短暂的请求,那么您可能更喜欢显式提供数据中心 URL 并从每个会话中删除查找。
// Recommended: 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';
示例
参见 EXAMPLES.md
日志记录
启用日志记录的最常见方式是在配置级别进行,请参阅 快速入门 示例。
您也可以使用方法在运行时开启或关闭日志记录。请注意,如果您在配置或运行时没有指定日志目录,则不会创建任何日志。必须有一个有效的目标位置。
// Set a logging path $service->setLogPath('/path/to/logs'); // Turn logging on $service->logRequests(true); // Turn logging on. // Turn logging off $service->logRequests(false); // Turn logging off.
如果您需要有关日志记录的更多灵活性,您可以从 2023.1.0
版本开始提供自己的 PSR-3 兼容的记录器。
生成类
该存储库始终包含从与特定发布版本中指定的Web服务版本对应的NetSuite PHP Toolkit版本生成的类。例如,发布v2021.1.0
是针对NetSuite的2021_1
Web服务工具包构建的第一个发布版本。如果您想自己生成类文件,出于任何原因,包中包含相应的代码,按照以下步骤操作
- 下载NetSuite PHP Toolkit
- 将内容解压缩到
./original/
文件夹中 - 运行
./utilities/separate_classes.php
或composer generate
路线图
PHP版本支持
参见:https://php.ac.cn/supported-versions.php
由于官方对PHP5的支持已于2018年底结束,以及PHP7将于2021年底转向仅提供安全支持,本包支持的PHP版本将开始逐步更新。
目前,对netsuitephp/netsuite-php
的期望如下
- 从
2021_1
构建开始要求"php": ">=7.1"
- 从
2023_1
构建开始要求"php": ">=8"
这仅适用于新版本的包,所以如果您不能或不想更新PHP,您仍然可以继续使用针对您的PHP版本的最后支持的版本。
支持
如果您需要帮助进行实施,请参阅示例文件中的资源部分,其中包含一些有用的链接。
如果您认为您的问题是该包提供的定制工作(而不是其中包装的NetSuite自己的类)的特定错误,那么您可以在github中提交问题。根据问题模板,请包括对问题的清晰描述,如何重现它以及使用本包的日志功能记录的相关请求/响应的日志。
贡献
欢迎以拉取请求的形式提供贡献。请包括对更改原因的明确解释,并尽量使更改尽可能小,这将提高我们审核它们的速度以及它们被包含到主分支中的可能性。
- 请确保尊重
composer.json
中当前所需的php
版本 - 避免引入新的依赖项(没有框架钩子等)
- 请尽量使所有新增内容符合PSR-12
许可
原始作品版权所有©2010-2015 NetSuite Inc.,并“按原样”提供。请参阅NetSuite Toolkit许可协议文件。
所有额外的工作均根据包含的LICENSE文件以Apache 2.0开源软件许可协议许可。