mirror of
https://github.com/wearepixel/laravel-quickbooks.git
synced 2026-11-14 14:01:46 +00:00
9002e0ebca11ec9b2418523f5258b54a9321c083
The SDK's XML deserializer reflects on declared properties of its Data classes and throws a RuntimeException when QuickBooks returns a field the installed SDK version doesn't define yet (e.g. the new invoice AllowOnlinePayPalPayment field), breaking every invoice create/update. The JSON path builds instances from the class's own known properties and silently ignores unrecognised response fields instead, so it tolerates QuickBooks adding fields ahead of the SDK.
Laravel QuickBooks Client
A Laravel package wrapping the QuickBooks PHP SDK. Provides OAuth 2.0 authentication, automatic token management, and access to the QuickBooks Online API.
Compatibility
| Laravel | PHP | Package |
|---|---|---|
| 12.x | ^8.3 | ^2.0 |
| 11.x | ^8.3 | ^2.0 |
| 10.x | ^8.3 | ^1.0 |
Installation
- Install the package:
composer require wearepixel/laravel-quickbooks
- Run the migration to create the
quickbooks_tokenstable:
php artisan migrate
The package uses Laravel's auto-discovery, so no manual provider registration is needed.
Configuration
1. Add the trait to your User model
use Wearepixel\QuickBooks\HasQuickBooksToken;
class User extends Authenticatable
{
use HasQuickBooksToken;
}
If your User model is not App\Models\User, publish the config and update the user.model value.
2. Set your environment variables
QUICKBOOKS_CLIENT_ID=<your client id>
QUICKBOOKS_CLIENT_SECRET=<your client secret>
Optional:
QUICKBOOKS_API_URL=<Development|Production> # Defaults based on APP_ENV
QUICKBOOKS_DEBUG=<true|false> # Defaults to APP_DEBUG
3. Publish config and views (optional)
php artisan vendor:publish --tag=quickbooks-config
php artisan vendor:publish --tag=quickbooks-views
Usage
First, direct users to /quickbooks/connect to authorize their QuickBooks account. Once connected, you can access the API:
$quickbooks = app(\Wearepixel\QuickBooks\Client::class);
// Get company info
$company = $quickbooks->getDataService()->getCompanyInfo();
// Access reports
$reportService = $quickbooks->getReportService();
You can call any of the resources documented in the QuickBooks PHP SDK.
Middleware
Protect routes that require a QuickBooks connection using the quickbooks middleware. Users without a valid token will be redirected to the connect page.
Route::get('quickbooks/invoices', InvoiceController::class)
->middleware('quickbooks');
Testing
./vendor/bin/pest
License
MIT
Languages
PHP
96.8%
Blade
3.2%