websmurf / laravel-exact-online
Laravel Facade 封装 Exact Online PHP API
Requires
- ext-json: *
- 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-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)。有关更多信息,请参阅 许可证文件。