usulix/laravel-netsuite

基于 ryanwinchester/netsuite-php 的 laravel5 封装

2.0.2 2019-12-11 18:42 UTC

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.1v2016.2.0

    composer require ryanwinchester/netsuite-php v2017.1.1

注册包

  • Laravel 5.5 及以上版本使用包自动发现功能,无需编辑 config/app.php 文件。

  • Laravel 5.4 及以下版本在 config/app.phpproviders 下使用以下方式注册包

   '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);
    }