waltersilvacruz/laravel-quickbooks-payments

PHP client wrapping the QuickBooks Payments SDK.

1.0.1 2021-08-13 21:23 UTC

This package is auto-updated.

Last update: 2024-05-14 03:09:17 UTC


README

Based on SPINEN's Laravel QuickBooks Client

PHP client wrapping the QuickBooks Payment SDK.

This package was designed to work with Laravel, so this package is written with Laravel in mind.

Installation

  1. Install Laravel QuickBooks Payments:
$ composer require waltersilvacruz/laravel-quickbooks-payments
  1. Run our migration to install the quickbooks_tokens table:
$ php artisan migrate --package=waltersilvacruz/laravel-quickbooks-payments

The package uses the auto registration feature of Laravel.

Configuration

  1. Add the appropriate values to your .env

    Minimal Keys

    QUICKBOOKS_CLIENT_ID=<Production Client ID given by QuickBooks>
    QUICKBOOKS_CLIENT_SECRET=<Production Client Secret>
    QUICKBOOKS_SANDBOX_CLIENT_ID=<Sandbox Client ID given by QuickBooks>
    QUICKBOOKS_SANDBOX_CLIENT_SECRET=<Sandbox 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
    QUICKBOOKS_REDIRECT_ROUTE=<string>          # A named route to force redirect after disconnecting
  2. [Optional] Publish configs & views

    Config

    A configuration file named quickbooks_payments.php can be published to config/ by running...

    php artisan vendor:publish --tag=quickbooks-payments-config

    Views

    View files can be published by running...

    php artisan vendor:publish --tag=quickbooks-payments-views

Usage

Here is an example of getting the company information from QuickBooks:

$quickbooks = app('QuickBooksPayments');
$array = [
  "amount" => "10.55",
  "currency" => "USD",
  "card" => [
      "name" => "emulate=0",
      "number" => "4111111111111111",
      "address" => [
        "streetAddress" => "1130 Kifer Rd",
        "city" => "Sunnyvale",
        "region" => "CA",
        "country" => "US",
        "postalCode" => "94086"
      ],
      "expMonth" => "02",
      "expYear" => "2024",
      "cvc" => "123"
  ],
  "context" => [
    "mobile" => "false",
    "isEcommerce" => "true"
  ]
];
$response = $quickbooks->getService()->Charge()->create($array);
dd($response);

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 WebDEV\QuickBooks\Payments\Http\Middleware\Filter that gets registered as quickbooks_payments 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_payments');