1. Go to this page and download the library: Download langleyfoxall/xero-laravel library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
langleyfoxall / xero-laravel example snippets
use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use LangleyFoxall\XeroLaravel\OAuth2;
use League\OAuth2\Client\Token\AccessToken;
class XeroController extends Controller
{
private function getOAuth2()
{
// This will use the 'default' app configuration found in your 'config/xero-laravel-lf.php` file.
// If you wish to use an alternative app configuration you can specify its key (e.g. `new OAuth2('other_app')`).
return new OAuth2();
}
public function redirectUserToXero()
{
// Step 1 - Redirect the user to the Xero authorization URL.
return $this->getOAuth2()->getAuthorizationRedirect();
}
public function handleCallbackFromXero(Request $request)
{
// Step 2 - Capture the response from Xero, and obtain an access token.
$accessToken = $this->getOAuth2()->getAccessTokenFromXeroRequest($request);
// Step 3 - Retrieve the list of tenants (typically Xero organisations), and let the user select one.
$tenants = $this->getOAuth2()->getTenants($accessToken);
$selectedTenant = $tenants[0]; // For example purposes, we're pretending the user selected the first tenant.
// Step 4 - Store the access token and selected tenant ID against the user's account for future use.
// You can store these anyway you wish. For this example, we're storing them in the database using Eloquent.
$user = auth()->user();
$user->xero_access_token = json_encode($accessToken);
$user->tenant_id = $selectedTenant->tenantId;
$user->save();
}
public function refreshAccessTokenIfNecessary()
{
// Step 5 - Before using the access token, check if it has expired and refresh it if necessary.
$user = auth()->user();
$accessToken = new AccessToken(json_decode($user->xero_access_token));
if ($accessToken->hasExpired()) {
$accessToken = $this->getOAuth2()->refreshAccessToken($accessToken);
$user->xero_access_token = $accessToken;
$user->save();
}
}
}
use LangleyFoxall\XeroLaravel\XeroApp;
use League\OAuth2\Client\Token\AccessToken;
$user = auth()->user();
$xero = new XeroApp(
new AccessToken(json_decode($user->xero_oauth_2_access_token)),
$user->xero_tenant_id
);
# Retrieve all contacts
$contacts = $xero->contacts()->get();
$contacts = $xero->contacts;
# Retrieve contacts filtered by name
$contacts = $xero->contacts()->where('Name', 'Bank West')->get();
# Retrieve an individual contact filtered by name
$contact = $xero->contacts()->where('Name', 'Bank West')->first();
# Retrieve an individual contact by its GUID
$contact = $xero->contacts()->find('34xxxx6e-7xx5-2xx4-bxx5-6123xxxxea49');
# Retrieve multiple contact by their GUIDS
$contacts = $xero->contacts()->find([
'34xxxx6e-7xx5-2xx4-bxx5-6123xxxxea49',
'364xxxx7f-2xx3-7xx3-gxx7-6726xxxxhe76',
]);