ajohnson6494 / infusionsoft-php
Infusionsoft 的 PHP SDK
Requires
- php: >=7.2
- guzzlehttp/guzzle: ~6.1
- lstrojny/fxmlrpc: ^0.15.0
- php-http/curl-client: ^2.0
- php-http/guzzle6-adapter: ^2.0
- php-http/message: ^1.6
- psr/log: ~1.0
- zendframework/zend-diactoros: ^2.0
Requires (Dev)
- doctrine/instantiator: 1.3.0
- mockery/mockery: ^1.2
- phpunit/phpunit: ~8
- squizlabs/php_codesniffer: 3.*
This package is auto-updated.
Last update: 2022-05-14 18:16:13 UTC
README
版本说明
本版本实现了 RESTful 端点、Guzzle 的新版本和重构的请求处理程序。
从版本 1.4 开始,需要 PHP 7+。
重大变更
如果你使用 Contacts
、Orders
或 Products
服务,现在有两个不同的类处理每个服务 - 一个用于 REST,一个用于 XML-RPC。 此 SDK 版本将默认加载 REST 类。 如果你仍然需要 XML-RPC 类,在请求对象时传递 'xml'
作为参数:$infusionsoft->orders('xml')
感谢 toddstoker 和 mattmerrill 为此版本做出的贡献。
安装
使用 composer CLI
composer require infusionsoft/php-sdk
或手动将其添加到 composer.json
{ "require": { "infusionsoft/php-sdk": "1.4.*" } }
身份验证
客户端 ID 和密钥是你在 Infusionsoft 开发者 网站上找到的 OAuth2 应用的密钥和密钥。
if(empty(session_id();)) session_start(); require_once 'vendor/autoload.php'; $infusionsoft = new \Infusionsoft\Infusionsoft(array( 'clientId' => 'XXXXXXXXXXXXXXXXXXXXXXXX', 'clientSecret' => 'XXXXXXXXXX', 'redirectUri' => 'http://example.com/', )); // If the serialized token is available in the session storage, we tell the SDK // to use that token for subsequent requests. if (isset($_SESSION['token'])) { $infusionsoft->setToken(unserialize($_SESSION['token'])); } // If we are returning from Infusionsoft we need to exchange the code for an // access token. if (isset($_GET['code']) and !$infusionsoft->getToken()) { $_SESSION['token'] = serialize($infusionsoft->requestAccessToken($_GET['code'])); } if ($infusionsoft->getToken()) { // Save the serialized token to the current session for subsequent requests $_SESSION['token'] = serialize($infusionsoft->getToken()); // MAKE INFUSIONSOFT REQUEST } else { echo '<a href="' . $infusionsoft->getAuthorizationUrl() . '">Click here to authorize</a>'; }
发送 XML-RPC 请求
require_once 'vendor/autoload.php'; // // Setup your Infusionsoft object here, then set your token either via the request or from storage // As of v1.3 contacts defaults to rest $infusionsoft->setToken($myTokenObject); $infusionsoft->contacts('xml')->add(array('FirstName' => 'John', 'LastName' => 'Doe'));
发送 REST 请求
PHP SDK 设置为允许轻松访问 REST 端点。通常,单个结果以表示该对象的类返回,多个对象以 Infusionsoft 集合返回,它只是一个结果数组的包装,使其更容易管理。
标准 REST 操作映射到一系列简单函数。我们将使用任务服务作为示例,但以下操作适用于所有文档化的 Infusionsoft REST 服务。
检索所有任务
$tasks = $infusionsoft->tasks()->all();
检索单个任务
$task = $infusionsoft->tasks()->find($taskId);
仅检索完成的任务
$tasks = $infusionsoft->tasks()->where('status', 'completed')->get();
您可以根据需要多次使用 where()
,或者可以传递一个数组
$tasks = $infusionsoft->tasks()->where(['status' => 'completed', 'user_id' => '45'])->get();
创建任务
$task = $infusionsoft->tasks()->create([ 'title' => 'My First Task', 'description' => 'Better get it done!' ]);
然后更新该任务
$task->title = 'A better task title'; $task->save();
最后,删除该任务
$task->delete();
一些 REST 服务有一个 /sync
端点,我们为此提供了一个辅助方法
$tasks = $infusionsoft->tasks()->sync($syncId);
这返回自上次生成同步 ID 以来创建或更新的任务列表。
require_once 'vendor/autoload.php'; // // Setup your Infusionsoft object here, then set your token either via the request or from storage // $infusionsoft->setToken($myTokenObject); $infusionsoft->tasks()->find('1');
日期
当日期(时间)作为方法参数时,使用 DateTime 对象而不是 DateTime 字符串。
$datetime = new \DateTime('now',new \DateTimeZone('America/New_York'));
调试
要启用请求和响应的调试,您需要使用以下方式设置调试标志
$infusionsoft->setDebug(true);
启用后,日志将默认写入到可以通过
$infusionsoft->getLogs();
您可以通过使用可用的适配器之一来利用Guzzle内建的强大日志插件。例如,使用Monolog writer将日志写入文件。
use Monolog\Handler\StreamHandler; use Monolog\Logger; $logger = new Logger('client'); $logger->pushHandler(new StreamHandler('infusionsoft.log')); $infusionsoft->setHttpLogAdapter($logger);
测试
$ phpunit
Laravel 5.1 服务提供者
在config/app.php中注册服务提供者
Infusionsoft\FrameworkSupport\Laravel\InfusionsoftServiceProvider::class,
注册外观(可选)
'Infusionsoft' => Infusionsoft\FrameworkSupport\Laravel\InfusionsoftFacade::class
发布配置
php artisan vendor:publish --provider="Infusionsoft\FrameworkSupport\Laravel\InfusionsoftServiceProvider"
设置您的环境变量
INFUSIONSOFT_CLIENT_ID=xxxxxxxx
INFUSIONSOFT_SECRET=xxxxxxxx
INFUSIONSOFT_REDIRECT_URL=https:///auth/callback
通过外观或绑定访问Infusionsoft
$data = Infusionsoft::data()->query("Contact",1000,0,['Id' => '123'],['Id','FirstName','LastName','Email'], 'Id', false);
$data = app('infusionsoft')->data()->query("Contact",1000,0,['Id' => '123'],['Id','FirstName','LastName','Email'], 'Id', false);
Lumen 服务提供者
在bootstrap/app.php中注册服务提供者
$app->register(Infusionsoft\FrameworkSupport\Lumen\InfusionsoftServiceProvider::class);
设置您的环境变量(确保您在app.php中加载了环境文件)
INFUSIONSOFT_CLIENT_ID=xxxxxxxx
INFUSIONSOFT_SECRET=xxxxxxxx
INFUSIONSOFT_REDIRECT_URL=https:///auth/callback
通过绑定访问Infusionsoft
$data = app('infusionsoft')->data()->query("Contact",1000,0,['Id' => '123'],['Id','FirstName','LastName','Email'], 'Id', false);
贡献
请参阅CONTRIBUTING以获取详细信息。
许可
MIT许可(MIT)。请参阅许可文件以获取更多信息。