websmurf/laravel-exact-online

Laravel Facade 封装 Exact Online PHP API

v0.7.1-beta 2022-03-21 07:36 UTC

This package is auto-updated.

Last update: 2024-09-13 11:07:08 UTC


README

此包是围绕 Picqer 的 Exact Online PHP API 的 Laravel 封装。它提供了连接你的 Laravel 应用与 Exact Online 应用的路由和控制器。它还提供了一个可链式调用的 Facade,便于轻松发送 API 请求。授权和刷新令牌将自动保存。

注意:令牌以 JSON 文件的形式保存,以便在应用程序范围内使用。因此,如果你的平台需要单个用户访问 Exact Online,则此代码不适用!此代码集可用于与单个 Exact Online 用户的管理进行通信。

安装

需要此包

composer require websmurf/laravel-exact-online

由于 Laravel > 5.5 的自动包发现功能,ServiceProvider 和 Facades 将自动注册。

将 Facade 添加到 config/app.php 文件中

...
'ExactOnline' => Websmurf\LaravelExactOnline\LaravelExactOnlineFacade::class,
...

随后发布资源(视图、配置等)

php artisan vendor:publish --provider="Websmurf\LaravelExactOnline\Providers\LaravelExactOnlineServiceProvider"

在开发此包时,您可能希望使用 --force 标志来覆盖以前的文件。

最后,但同样重要的是,您可以编辑 config/laravel-exact-online 以匹配您的 Exact Online 应用设置,或者将这些键添加到 .env 文件中

EXACT_CLIENT_ID=
EXACT_CLIENT_SECRET=

以下键是可选的

EXACT_COUNTRY_CODE=
EXACT_DIVISION=

多用户支持

默认情况下,此插件将精确密钥存储在 JSON 文件中。这意味着每个用户都使用相同的凭据。如果您希望允许用户进行单独连接,您可以在 .env 文件中设置以下参数

EXACT_MULTI_USER=true

注意:尚未为此功能编写迁移。请随意这样做。在此期间,您应将这些更改添加到用户迁移中

$table->text('exact_accessToken')->nullable();
$table->text('exact_refreshToken')->nullable();
$table->text('exact_tokenExpires')->nullable();
$table->text('exact_authorisationCode')->nullable();

并向用户对象添加以下可填充字段

protected $fillable = [
    'name', 'email', 'password', 'exact_accessToken', 'exact_refreshToken', 'exact_tokenExpires', 'exact_authorisationCode'
];

如何使用 Laravel 连接 Exact Online

如前所述,此包提供路由和控制器,以便轻松将您的 Exact App 与 Laravel 项目连接起来。您可以在 routes/web.php 文件中覆盖路由,我甚至强烈建议这样做,因为默认情况下路由没有 受保护

您还可以编辑视图,发布后可以在资源路径下的 /views/vendor/laravel-exact-online/ 中找到。

步骤 1:连接和授权

访问 http://your-project.local/exact/connect,您将看到一个提交按钮,用于转到 Exact Online。登录并批准应用后,您将被返回到 http://your-project.local/exact/oauth,此路由负责保存未来请求所需的令牌。

步骤 2:使用 Facade

就是这样,您现在可以使用此包了。

如何使用 API

Picqer 的包要求您为即将使用的每个资源提供有效的连接参数。这是通过添加令牌的代码块完成的。在此包的 ServiceProvider 中,我们创建了一个单例,它为您做了所有这些

$connection = app()->make('Exact\Connection');

然后使用 Picqer 的类请求资源时,将使用此连接

use \Picqer\Financials\Exact\Account;

// List all accounts
$account = new Account($connection);
dd($account->get());

通过依赖注入,您可以请求一个已经为您创建连接实例的实例

function handle (\Websmurf\LaravelExactOnline\LaravelExactOnline $exactOnline) {
    // List all accounts
    $exactOnline->Account()->get();

    // Get specific account:
    $exactOnline->Account()->find('account_ID');
}

或者如果您喜欢使用外观(Facade),也可以这样做

// List all accounts
ExactOnline::Account()->get();

// Get specific account:
ExactOnline::Account()->find('account_ID');

所有改变连接的方法都采用驼峰命名法,并以 connection 前缀,例如如果您想更改 API 的 baseUrl,您将调用

$exactOnline->connectionSetBaseUrl('http://start.exactonline.de')

// or:

ExactOnline::connectionSetBaseUrl('http://start.exactonline.de');

当然,为了可读性,一切都是链式的

$exactOnline->connectionSetBaseUrl('http://start.exactonline.de')
    ->Account()
    ->find('account_ID')

// or:

ExactOnline::connectionSetBaseUrl('http://start.exactonline.de')
    ->Account()
    ->find('account_ID');

鸣谢

安全

如果您发现任何与安全相关的问题,请通过电子邮件 adam@bandhosting.nl 与我们联系,而不是使用问题跟踪器。

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件