infusionsoft / php-sdk
Infusionsoft 的 PHP SDK
Requires
- php: >=8.1
- guzzlehttp/guzzle: ^7.4.2
- laminas/laminas-diactoros: ^2.26.0
- lstrojny/fxmlrpc: ^0.22.0
- php-http/guzzle7-adapter: ^1.0
- php-http/message: ^1.16
- php-http/message-factory: ^1.1
- psr/http-factory: ^1.0
- psr/log: ^1.0|^2.0|^3.0
Requires (Dev)
- doctrine/instantiator: ^1.3.0
- mockery/mockery: ^1.2
- phpunit/phpunit: ~9
- squizlabs/php_codesniffer: 3.*
- dev-master
- 5.3.x-dev
- 1.6.6
- 1.6.5
- 1.6.4
- 1.6.3
- 1.6.2
- 1.6.1
- 1.6.0
- 1.5.5
- 1.5.4
- 1.5.3
- 1.5.2
- 1.5.1
- 1.5.0
- 1.4.9
- 1.4.8
- 1.4.7
- 1.4.6
- 1.4.5
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- 1.4.0-beta
- 1.3.6
- 1.3.5
- 1.3.4
- 1.3.3
- 1.3.2-beta
- 1.3.1-beta
- 1.3.0
- 1.3.0-beta
- 1.2.5-beta
- 1.2.4-beta
- 1.2.3
- 1.2.2
- 1.2.1
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
- 1.0.0-beta2
- 1.0.0-beta1
- dev-dependabot/composer/guzzlehttp/psr7-2.5.0
- dev-copyvars
- dev-develop
This package is auto-updated.
Last update: 2024-09-02 16:41:35 UTC
README
版本说明
此版本实现了 RESTful 端点、Guzzle 的新版本以及重构的请求处理程序。
截至版本 1.6,需要 PHP 8.1+。
破坏性更改
随着 Guzzle 7 的升级,Infusionsoft\Http\ClientInterface 中的 request
函数名称进行了重构。如果您创建了自定义 HttpClient,则需要更新以使用新的 call
函数名称。
如果您使用 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.6.*" } }
身份验证
目前 Keap 支持我们 API 的两种身份验证类型:OAuth2 访问代码授权和 API 密钥。
第三方集成开发者应始终使用我们的 OAuth2 身份验证,但为单个租户构建集成的开发者可能会发现使用 API 密钥要简单得多。
OAuth2 访问代码授权
客户端 ID 和密钥是您的 OAuth2 应用程序的关键和密钥,可在 Infusionsoft 开发者 网站找到。
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>'; }
API 密钥
API 密钥是应用程序中数据的“密码”,应始终将其视为危险的秘密。
在我们的 UI 中,您将找到一个 API 设置屏幕,该屏幕将 API 密钥分为两个不同的类别
个人访问令牌
,它限于您自己的用户帐户,只能查看和操作您有权访问的数据。服务帐户密钥
,只能由管理员授权,并完全访问应用程序中存储的数据。
有关如何授权和使用 PAT 和 SAK 的更多信息,请参阅我们的 开发者文档。
require_once 'vendor/autoload.php'; $infusionsoft = new \Infusionsoft\Infusionsoft(array( 'apikey' => $APIKeyRetrievedFromCredentialStorage, )); // MAKE INFUSIONSOFT REQUEST
制作 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 Collection 返回,它是围绕结果数组的一个包装器,使其更容易管理。
标准 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'));
调试
要启用请求和响应的调试,您需要使用以下方法设置调试标志为try:
$infusionsoft->setDebug(true);
一旦启用,日志将默认写入一个数组,可以通过以下方式访问:
$infusionsoft->getLogs();
您可以通过使用可用的适配器利用Guzzle内置的强大日志插件。例如,要使用Monolog写入器将日志写入文件:
use Monolog\Handler\StreamHandler; use Monolog\Logger; $logger = new Logger('client'); $logger->pushHandler(new StreamHandler('infusionsoft.log')); $infusionsoft->setHttpLogAdapter($logger);
测试
$ phpunit
Laravel框架支持
Laravel < 5.5
在config/app.php中,注册服务提供者
Infusionsoft\FrameworkSupport\Laravel\InfusionsoftServiceProvider::class,
注册门面(可选)
'Infusionsoft' => Infusionsoft\FrameworkSupport\Laravel\InfusionsoftFacade::class
Laravel >= 5.5
在Laravel 5.5中,增加了包自动发现功能。服务提供者和门面将为您自动检测。继续发布供应商资产并添加您的环境变量。
发布配置
php artisan vendor:publish --provider="Infusionsoft\FrameworkSupport\Laravel\InfusionsoftServiceProvider"
设置您的环境变量
INFUSIONSOFT_CLIENT_ID=xxxxxxxx
INFUSIONSOFT_SECRET=xxxxxxxx
INFUSIONSOFT_REDIRECT_URL=http://localhost/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=http://localhost/auth/callback
从绑定访问Infusionsoft
$data = app('infusionsoft')->data()->query("Contact",1000,0,['Id' => '123'],['Id','FirstName','LastName','Email'], 'Id', false);
SDK开发
您可以在不安装Composer的情况下安装Composer依赖项
docker-compose run composer
您可以通过启动用于Composer依赖项的Docker容器来访问示例
docker-compose up -d
可以在不安装PHP的主机环境中执行测试(当主容器运行时)
docker exec -it infusionsoft-php /var/www/html/vendor/bin/phpunit tests
如果使用Docker for Windows,请参阅.env
获取更多信息。
贡献
有关详细信息,请参阅CONTRIBUTING。
许可
MIT许可(MIT)。有关更多信息,请参阅许可文件。