xero-php icon indicating copy to clipboard operation
xero-php copied to clipboard

Webhook for multiple organisations

Open gitstashgithub opened this issue 3 years ago • 3 comments

Hi guys,

I have a question about webhook. If our app is authorised for multiple Xero organisations, how do we make webhook work? Below is the Webhook example from the document, you can see the first parameter for Webhook is XeroPHP\Application.

// Configure the webhook signing key on the application
$application->setConfig(['webhook' => ['signing_key' => 'xyz123']]);
$webhook = new Webhook($application, $request->getContent());

/**
 * @return int
 */
$webhook->getFirstEventSequence();

/**
 * @return int
 */
$webhook->getLastEventSequence();

/**
 * @return \XeroPHP\Webhook\Event[]
 */
$webhook->getEvents();

However, to initialise the XeroPHP\Application variable, we need $tenantId.

$application = new \XeroPHP\Application($accessToken, $tenantId);

The problem is, there are multiple tenants(organisations), so we don't know the $tenantId.

Does anyone know how to make it work? Thanks!

Gordon

gitstashgithub avatar Sep 22 '21 01:09 gitstashgithub

The JSON Payload contains the tenantId image

getEvents() will return you an array of Event classes. Each Event will have the tenantId and other information as per the incoming JSON.

rodjsta avatar Sep 22 '21 01:09 rodjsta

@rodjsta thanks, but the problem is before this stage. You need $webhook to run getEvents(). To create $webhook, you need a XeroPHP\Application instance. To initialise a XeroPHP\Application instance, you need tenantId.

gitstashgithub avatar Sep 22 '21 04:09 gitstashgithub

@gitstashgithub, right... I see. Sorry, I actually handle my webhook events independent of this package. I essentially capture each event from the payload and process them separately.

https://medium.com/swlh/handling-xero-webhooks-with-a-laravel-application-61eefd4492c4

rodjsta avatar Sep 22 '21 04:09 rodjsta