simmybit/laravel-exact-online

Exact Online PHP API 的 Laravel Facade 封装

v1.0.0 2023-04-11 07:14 UTC

README

本包是围绕 Picqer 的 Exact Online PHP API(https://github.com/picqer/exact-php-client)的 Laravel 封装。它提供了一套路线和控制器,可以轻松地将您的 Laravel 应用程序与 Exact Online 应用程序连接起来。它还提供了一个 Facade,可以轻松地通过 API 发送请求。授权和刷新令牌将自动保存。

注意:令牌以 json 文件的形式保存,适用于整个应用程序。因此,如果您的平台需要单个用户访问 Exact Online,则此代码不适用!此代码段可以用于与单个 Exact Online 用户的管理员通信。

安装

需要此包

composer require simmybit/laravel-exact-online

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

将 Facade 添加到您的 config/app.php

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

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

php artisan vendor:publish --provider="Simmybit\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 (\Simmybit\LaravelExactOnline\LaravelExactOnline $exactOnline) {
    // List all accounts
    $exactOnline->Account()->get();

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

或者如果你更喜欢使用外观模式,也可以这样做

// 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)。有关更多信息,请参阅 许可证文件