ntn/netsuite-php

NetSuite PHP API 封装器

v1.0.2 2023-05-14 14:32 UTC

This package is auto-updated.

Last update: 2024-09-14 17:53:44 UTC


README

License Packagist

NetSuite的PHP API客户端包,从NetSuite PHP Toolkit中提取,并使其更适合现代PHP应用程序开发。在 NetSuite\Classes 命名空间中的所有类都是NetSuite提供的代码,带有允许重新分发的许可证。此库提供的自定义工作将这近2000个类分开到它们自己的文件中,并允许使用composer安装这些类,并使用标准自动加载支持访问它们。它允许从环境中读取配置,添加对日志记录请求和响应的支持,并提供了一个简化的客户端封装类(NetSuiteService)。

安装

使用composer依赖

composer require ntn/netsuite-php

快速入门

实例化NetSuiteService类

以下示例假设您已经使用基于令牌的认证实例化了客户端对象。使用用户凭据进行认证的方法已于2020年由NetSuite停止支持。

// 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生成的类。例如,发布版本 v2021.1.0 是针对NetSuite的 2021_1 网络服务工具包构建的第一个版本。如果您想自己生成类文件,无论出于什么原因,该软件包包含以下步骤的代码:

  • 下载 NetSuite PHP Toolkit
  • 将内容解压到 ./original/ 文件夹
  • 运行 ./utilities/separate_classes.phpcomposer 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 开源软件许可下。