dcodegroup / laravel-xero-oauth
这是一个简单的包,用于处理所有项目与Xero的连接。提供UI端点和Xero的回调
1.0.22
2024-07-15 02:52 UTC
Requires
- php: ^7.4|^8.0
- calcinai/xero-php: ^2.5
- laravel/framework: ^7.0|^8.0|^9.0|^10.0|^11.0
- league/oauth2-client: 1.*|2.*
- xeroapi/xero-php-oauth2: ^2.1
Requires (Dev)
- laravel/pint: ^1.13.5
README
Laravel Xero
此包提供了大多数项目中使用的标准Xero连接功能。
安装
您可以通过Composer安装此包
composer require dcodegroup/laravel-xero-oauth
然后运行安装命令。
php artsian laravel-xero:install
这将发布配置文件和迁移文件。
运行迁移
php artsian migrate
配置
大多数配置都已设置为合理的默认值。然而,您可以审查位于 config/laravel-xero-oauth.php
的配置文件并根据需要进行调整
如果您希望OAuth屏幕显示在您的站点布局中,请确保配置环境变量。例如。
LARAVEL_XERO_OAUTH_APP_LAYOUT=layouts.admin
用法
此包提供了一些端点,您可以使用。通过运行查看完整列表
php artsian route:list --name=xero
+--------+----------+-------------------------+--------------------+-------------------------------------------------------------------------+----------------------------------+
| Domain | Method | URI | Name | Action | Middleware |
+--------+----------+-------------------------+--------------------+-------------------------------------------------------------------------+----------------------------------+
| | GET|HEAD | xero | xero.index | Dcodegroup\LaravelXeroOauth\Http\Controllers\XeroController | web |
| | | | | | App\Http\Middleware\Authenticate |
| | GET|HEAD | xero/auth | xero.auth | Dcodegroup\LaravelXeroOauth\Http\Controllers\XeroAuthController | web |
| | | | | | App\Http\Middleware\Authenticate |
| | GET|HEAD | xero/callback | xero.callback | Dcodegroup\LaravelXeroOauth\Http\Controllers\XeroCallbackController | web |
| | | | | | App\Http\Middleware\Authenticate |
| | POST | xero/tenants/{tenantId} | xero.tenant.update | Dcodegroup\LaravelXeroOauth\Http\Controllers\SwitchXeroTenantController | web |
| | | | | | App\Http\Middleware\Authenticate |
+--------+----------+-------------------------+--------------------+-------------------------------------------------------------------------+----------------------------------+
更多信息
example.com/xero
这是您将生成授权Xero的链接的地方。这是默认受保护的认证中间件,但您可以在配置中修改。这是您想要在管理中链接并可能在新窗口中链接的地方
example.com/xero/callback
这是Xero在OAuth发生后的重定向路由。这被排除在中间件之外。您也可以在配置中更改此列表。
BaseXeroService
此包在 Dcodegroup\LaravelXeroOauth\BaseXeroService
位置有一个 BaseXeroService
类。
因此,您的应用程序应该有一个自己的XeroService类,它扩展了此基类,因为初始化已经完成。
<?php namespace App\Services\Xero; use Dcodegroup\LaravelXeroOauth\BaseXeroService; use XeroPHP\Models\Accounting\Contact; class XeroService extends BaseXeroService { /** * @inheritDoc */ public function createContact(object $data) { /** * $this->>xeroClient is inherited from the BaseXeroService */ $contact = new Contact($this->xeroClient); $contact->setName($data->name . ' (' . $data->code . ')') ->setFirstName($data->name) ->setContactNumber($data->code) ->setAccountNumber($data->code) ->setContactStatus(Contact::CONTACT_STATUS_ACTIVE) ->setEmailAddress($data->email) ->setTaxNumber('ABN') ->setDefaultCurrency('AUD'); $contact = head($contact->save()->getElements()); return $this->xeroClient->loadByGUID(Contact::class, $contact['ContactID']); } }
运行时
您可以使用以下代码检查连接是否存在。 (在Guzzle 8中移除 ->getConfig()
后,此代码将不起作用 guzzle/guzzle#3114 )
if (app(Application::class)->getTransport()->getConfig()['headers']['Xero-tenant-id'] != 'fake_tenant') { // do something }