ryanwinchester / netsuite-php

NetSuite PHP API包装器

v2023.2.0 2024-08-14 04:52 UTC

README

License Packagist

NetSuite的PHP API客户端包,源自NetSuite PHP工具包,并针对现代PHP应用程序开发进行了改进。所有在NetSuite\Classes命名空间中的类都是NetSuite提供的代码,具有允许重新分发的许可。该库提供的自定义工作将这近2000个类分别放入自己的文件中,并允许使用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兼容的记录器。

生成类

此仓库始终包含从与特定版本对应的NetSuite PHP Toolkit生成的类,该版本由特定版本号表示的Web服务版本指定。例如,发布v2021.1.0是针对NetSuite的2021_1 Web服务工具包构建的第一个版本。如果您出于任何原因想自己生成类文件,包中包含相应的代码,按照以下步骤操作:

  • 下载NetSuite PHP Toolkit
  • 将内容解压到./original/文件夹中
  • 运行./utilities/separate_classes.phpcomposer generate

路线图

PHP版本支持

参见:https://php.ac.cn/supported-versions.php

由于自2018年底以来PHP5的官方支持已停止,以及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.,提供“现状”。

所有附加工作均根据包含的LICENSE文件,在Apache 2.0开源软件许可下发布。