usulix / laravel-netsuite
基于 ryanwinchester/netsuite-php 的 laravel5 封装
Requires
- guzzlehttp/guzzle: ^6.2
- laravel/framework: 6.x
- ryanwinchester/netsuite-php: ^2016.1|^v2017|^v2018
Requires (Dev)
- roave/security-advisories: dev-master
Replaces
This package is auto-updated.
Last update: 2024-09-12 05:01:44 UTC
README
ryanwinchester/netsuite-php 是一个 PHP 包,它将 NetSuite PHP Toolkit 封装在一个更易于使用的 API 中。ryanwinchester/netsuite-php 针对的是 NetSuite WebServices。
此包将 ryanwinchester/netsuite-php 封装在一个标准的 Laravel 5 包中,并添加了一个基本的 API 来针对 NetSuite RESTlets
安装
将使用最新的 ryanwinchester/netsuite-php
版本,最高到 v2018.2.0
composer require usulix/laravel-netsuite
如果需要较旧版本,例如 v2017.1.1
或 v2016.2.0
composer require ryanwinchester/netsuite-php v2017.1.1
注册包
-
Laravel 5.5 及以上版本使用包自动发现功能,无需编辑
config/app.php
文件。 -
Laravel 5.4 及以下版本在
config/app.php
的providers
下使用以下方式注册包
'providers' => [
/*
* Laravel Framework Service Providers...
Usulix\NetSuite\Providers\NetSuiteServiceProvider::class,
Usulix\NetSuite\Providers\NetSuiteApiProvider::class,
NetSuiteServiceProvider - 提供访问 ryanwinchester/netsuite-php WebServices 接口的能力
NetSuiteApiProvider - 提供访问 RESTlet API 的能力
在 .env 中设置配置
默认情况下,如果没有定义 '*_HOST',将返回标准的针对特定账户的 URL。
注意(NETSUITE_ENDPOINT, NETSUITE_ACCOUNT, NETSUITE_WEBSERVICES_HOST, NETSUITE_APP_ID)是用于 WebServices 必要的
注意(NETSUITE_WEBSERVICES_HOST 和 NETSUITE_RESTLET_HOST)可以根据需要覆盖
NETSUITE_ENDPOINT=2018_2
NETSUITE_ACCOUNT=123456
NETSUITE_EMAIL=sample@sample.com
NETSUITE_PASSWORD=sup3rs3cr3t
NETSUITE_ROLE=3
NETSUITE_APP_ID=FFFFFFFF-1111-AAAA-9999-000000000000
使用 Token(对于 WebServices 或 RESTlets 都需要账户、消费者密钥、消费者密钥、令牌、令牌密钥)
NETSUITE_ENDPOINT=2016_1
NETSUITE_ACCOUNT=123456
NETSUITE_CONSUMER_KEY=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
NETSUITE_CONSUMER_SECRET=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
NETSUITE_TOKEN=cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
NETSUITE_TOKEN_SECRET=dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
注意(如果需要沙盒或自定义 URL)您可以覆盖针对特定账户的 URL
NETSUITE_WEBSERVICES_HOST=https://#######-sb1.suitetalk.api.netsuite.com
NETSUITE_RESTLET_HOST=https://#######-sb1.restlets.api.netsuite.com/app/site/hosting/restlet.nl
在 .env 中添加相应的值,以实现基于 Token 的身份验证或基于 NlAuth 的身份验证,但不能同时使用两者!
如果您需要 WebServices 的 Token 和 RESTlets 的 NlAuth - 或者您需要为每个账户使用不同的账户...
提交一个功能请求作为问题或拉取请求并附带解决方案。
我的 NetSuite 经验基于单一集成,所以最初可能不太可能涵盖所有情况,但该项目是公开的,以便在开发更实用、更节省时间的解决方案时获得帮助。
实例化服务的一个实例,并使用服务调用 NetSuite
使用 WebService
use NetSuite\Classes\GetRequest;
use NetSuite\Classes\RecordRef;
$myWebService = app('NetSuiteWebService');
$request = new GetRequest();
$request->baseRef = new RecordRef();
$request->baseRef->internalId = "123";
$request->baseRef->type = "customer";
$getResponse = $myWebService->get($request);
if ( ! $getResponse->readResponse->status->isSuccess) {
echo "GET ERROR";
} else {
$customer = $getResponse->readResponse->record;
}
使用 RESTlet
$myRESTletService = app('NetSuiteApiService');
/**
* You can set processing on the response Body returned
* 'raw' - just return the stream retrieved (default)
* 'singleDecode' - return json_decode($body, true)
* 'doubleDecode' - return json_decode(json_decode($body, true), true)
* 'responseData' - return json_decode(json_decode($body, true), true)['data']
*
* Your mileage may vary based upon how your NetSuite RESTlet is coded
*/
$myRESTletService->setReturnProcessing('singleDecode');
/**
* You can set the Request Method (default is 'POST')
*/
$myRESTletService->setMethod('POST');
/**
* retrieve your response by calling getNetsuiteData with your RESTlet Id and
* any payload in an array
*/
$myResults = $myRESTletService->getNetsuiteData('123',
['action' => 'myAction', 'user'=>'212121']
);
foreach($myResults as $res){
$this->doSomething($res);
}