Howto: een lijst met facturen voor een klant weergeven op je website

Een jaar geleden introduceerden wij op deze weblog de Moneybird API Met de API is het mogelijk om de gegevens in je Moneybird account te gebruiken in andere programma’s. De mogelijkheden zijn legio, ik geef jullie vandaag graag een voorbeeld van een mogelijke toepassing van de API.

Natuurlijk maak je alle facturen voor je bedrijf in Moneybird. Facturen maken en versturen is kinderspel en ook de iDeal betalingen zijn een uitkomst om je facturen sneller betaald te krijgen. Stel je hebt naast Moneybird een website met je producten, bijvoorbeeld een webwinkel of een website waar je hosting verkoopt. Je klanten kunnen hier inloggen om producten te bestellen en hun bestellingen te bekijken. Het zou natuurlijk mooi zijn als de facturen van die klant hier ook te bekijken zijn. Dit is eenvoudig mogelijk via de Moneybird API.

Verbinden via PHP

Ik zal een voorbeeld van de implementatie geven in PHP. Daarbij maak ik gebruik van de PHP library voor de Moneybird API van Sjors van der Pluijm, te vinden op Github Download de library binnen via Github en zet deze in een submap in je project. De eerste stap is om de library te koppelen en de gegevens van je Moneybird account in te voeren:

<?php
require_once 'moneybird_php_api/Api.php';
// Initialize the Moneybird api
$mbapi = new MoneybirdApi('subdomain', 'api', 'xxxxxx');

Vervang 'subdomain' voor het subdomein van je Moneybird account. We raden je aan een losse API gebruiker aan te maken in je account. Vervang 'api' en 'xxxxxx' door de gebruikersnaam en wachtwoord van de API gebruiker in je Moneybird account.

h2. De facturen van een klant ophalen

Nu je een verbinding met de Moneybird API hebt, kunnen we de facturen van een contact ophalen. Bij een contact in Moneybird kun je een klantnummer opslaan. Dit klantnummer kun je bijvoorbeeld laten corresponderen met het klantnummer in je webshop of klantscherm. De volgende code haalt de facturen behorende bij de klant met het klantnummer '2' op.

<?php
// Get the Moneybird contact belonging to the customer id
$contact = $mbapi->getContactByCustomerId (2);

// Retrieve the sent invoices of the contact
$invoices = $contact->getInvoices ('sent');

In de $invoices variabele zit nu een array met de facturen van de klant. Door alleen de verzonden facturen op te vragen zal de klant geen concept facturen in zijn lijst te zien krijgen.

De facturen in een tabel zetten

Met de informatie in de $invoices variabele is het nu mogelijk om een mooie tabel weer te geven met alle facturen. Dit kan met de volgende code:

<?php
// Create a table with the invoices
$table = "<table>\n";
foreach ($invoices as $invoice){
  $table .= "<tr>\n";
  $table .= "<td>".$invoice->invoice_id."</td>\n";
  $table .= "<td>".$invoice->invoice_date->format ."</td>\n";
  $table .= "<td>".$invoice->currency." ".number_format ($invoice->total_price_incl_tax, 2, ",","")."</td>\n";
  $table .= "<td>".$invoice->state."</td>\n";
  $table .= "</tr>\n";
}
$table .="</table>";
echo $table;

Ik hoop je hiermee een goed beeld gegeven te hebben van de mogelijkheden van de API. De volledige code van dit voorbeeld is te vinden op Gist.

Deel dit artikel op je favoriete social netwerk