wearepixel / laravel-quickbooks
Wearepixel's Laravel Client for QuickBooks.
Requires
- php: ^8.0.2
- illuminate/database: ^10.0|^11.0
- illuminate/http: ^10.0|^11.0
- illuminate/routing: ^10.0|^11.0
- illuminate/support: ^10.0|^11.0
- nesbot/carbon: ^2.62.1
- quickbooks/v3-php-sdk: ^5.4.6
Requires (Dev)
- laravel/pint: ^1.2
- mockery/mockery: ^1.5.1
- phpunit/phpunit: ^10.0
- psy/psysh: ^0.11
- scrutinizer/ocular: ^1.9
README
PHP client wrapping the QuickBooks PHP SDK.
We solely use Laravel for our applications, so this package is written with Laravel in mind. If there is a request from the community to split this package into 2 parts to allow it to be used outside of Laravel, then we will consider doing that work.
Build Status
Installation
- Install QuickBooks PHP Client:
$ composer require wearepixel/laravel-quickbooks
- Run our migration to install the
quickbooks_tokens
table:
$ php artisan migrate --package=wearepixel/laravel-quickbooks
The package uses the auto registration feature of Laravel.
Configuration
- You will need a
quickBooksToken
relationship on yourUser
model. There is a trait namedWearepixel\QuickBooks\HasQuickBooksToken
, which you can include on yourUser
model, which will setup the relationship. To do this implement the following:
Add use Wearepixel\QuickBooks\HasQuickBooksToken;
to your service container at the top of User.php
and also add the trait within the class. For example:
class User extends Authenticatable { use Notifiable, HasQuickBooksToken;
NOTE: If your User
model is not App\Models\User
, then you will need to configure the path in the configs/quickbooks.php
.
-
Add the appropriate values to your
.env
Minimal Keys
QUICKBOOKS_CLIENT_ID=<client id given by QuickBooks> QUICKBOOKS_CLIENT_SECRET=<client secret>
Optional Keys
QUICKBOOKS_API_URL=<Development|Production> # Defaults to App's env value QUICKBOOKS_DEBUG=<true|false> # Defaults to App's debug value
-
[Optional] Publish configs & views
Config
A configuration file named
quickbooks.php
can be published toconfig/
by running...php artisan vendor:publish --tag=quickbooks-config
Views
View files can be published by running...
php artisan vendor:publish --tag=quickbooks-views
Usage
Here is an example of getting the company information from QuickBooks:
NOTE: Before doing these commands, go to your connect route (default: /quickbooks/connect) to get a QuickBooks token for your user
php artisan tinker Psy Shell v0.8.17 (PHP 7.1.14 — cli) by Justin Hileman >>> Auth::logInUsingId(1) => App\Models\User {#1668 id: 1, // Other keys removed for example } >>> $quickbooks = app('Wearepixel\QuickBooks\Client') // or app('QuickBooks') => Wearepixel\QuickBooks\Client {#1613} >>> $quickbooks->getDataService()->getCompanyInfo(); => QuickBooksOnline\API\Data\IPPCompanyInfo {#1673 +CompanyName: "Sandbox Company_US_1", +LegalName: "Sandbox Company_US_1", // Other properties removed for example } >>>
You can call any of the resources as documented in the SDK.
Middleware
If you have routes that will be dependent on the user's account having a usable QuickBooks OAuth token, there is an included middleware Wearepixel\QuickBooks\Laravel\Filter
that gets registered as quickbooks
that will ensure the account is linked and redirect them to the connect
route if needed.
Here is an example route definition:
Route::view('some/route/needing/quickbooks/token/before/using', 'some.view') ->middleware('quickbooks');