|

|  How to Access QuickBooks Online API in PHP

How to Access QuickBooks Online API in PHP

October 31, 2024

Learn how to access QuickBooks Online API using PHP effortlessly with our comprehensive guide. Streamline your integration for seamless accounting solutions.

How to Access QuickBooks Online API in PHP

 

Understanding QuickBooks Online API Access

 

  • Familiarize yourself with the QuickBooks Online API documentation. It provides detailed information on endpoints, authentication, and limits.
  •  

  • You typically interact with QuickBooks Online API using OAuth 2.0 for authentication, and RESTful HTTP requests because of its stateless server to client communication.

 

Set Up Your PHP Environment

 

  • Ensure you have PHP installed with necessary extensions like `cURL` and `OpenSSL` for HTTPS requests.
  •  

  • Install a library to handle OAuth 2.0 authentication. One popular choice is `thephpleague/oauth2-client`.

 

composer require league/oauth2-client

 

Create Your OAuth 2.0 Client

 

  • Create a PHP script where you'll define your OAuth 2.0 client’s credentials including client ID, client secret, redirect URI, and authorization URLs.

 

require 'vendor/autoload.php';
use League\OAuth2\Client\Provider\GenericProvider;

$provider = new GenericProvider([
    'clientId'                => 'YOUR_CLIENT_ID',   
    'clientSecret'            => 'YOUR_CLIENT_SECRET',   
    'redirectUri'             => 'YOUR_REDIRECT_URI',
    'urlAuthorize'            => 'https://appcenter.intuit.com/connect/oauth2',
    'urlAccessToken'          => 'https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer',
    'urlResourceOwnerDetails' => 'https://sandbox-quickbooks.api.intuit.com/v3/company'
]);

 

Authenticate and Obtain Access Token

 

  • Direct the user to the QuickBooks Online authorization page, which will redirect back with an authorization code after user consent.
  •  

  • Exchange the authorization code for an access token that grants API access.

 

session_start();

// Redirect to QuickBooks Online Authorization URL
if (!isset($_GET['code'])) {
    $authorizationUrl = $provider->getAuthorizationUrl();
    $_SESSION['oauth2state'] = $provider->getState();
    header('Location: ' . $authorizationUrl);
    exit;
}

// Check given state against previously stored one to mitigate CSRF attack
elseif (empty($_GET['state']) || ($_GET['state'] !== $_SESSION['oauth2state'])) {
    unset($_SESSION['oauth2state']);
    exit('Invalid state');
}

// Get an access token using the authorization code grant
try {
    $accessToken = $provider->getAccessToken('authorization_code', [
        'code' => $_GET['code']
    ]);
} catch (\League\OAuth2\Client\Provider\Exception\IdentityProviderException $e) {
    exit($e->getMessage());
}

 

Make API Requests

 

  • Now with access token, you can make authenticated API requests to QuickBooks Online API endpoints to fetch or update data.
  •  

  • Use `cURL` or a suitable library for HTTP requests in PHP, making sure you pass your access token in the authorization header.

 

$curl = curl_init();

curl_setopt_array($curl, [
    CURLOPT_URL => "https://sandbox-quickbooks.api.intuit.com/v3/company/YOUR_COMPANY_ID/query?query=SELECT%20*%20FROM%20Customer",
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer {$accessToken->getToken()}",
        "Accept: application/json"
    ],
]);

$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);

print_r($data);