simmybit / laravel-exact-online
Exact Online PHP API 的 Laravel Facade 封装
Requires
- php: ^8.1
- ext-json: *
- jeremykendall/php-domain-parser: ^6.3
- picqer/exact-php-client: ^3.1
Requires (Dev)
- laravel/framework: ^9.1
- phpunit/phpunit: ^9.5
- slevomat/coding-standard: ^7.0
- squizlabs/php_codesniffer: ^3.6
This package is auto-updated.
Last update: 2024-09-11 16:39:53 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)。有关更多信息,请参阅 许可证文件。