A Laravel package for interacting with the Wafeq API, supporting projects, contacts, accounts, manual journals, invoices.
- Manage projects (list, show, create, update, delete)
- Manage contacts (list, show, create, update, delete)
- Manage accounts (list)
- Manage manual journal (create)
- Manage invoice (create)
- Simple API wrapper with Laravel's HTTP Client
- Supports facade usage for convenience
- PHP 8.2
- Laravel 10 or Above
composer require mix-code/wafeqPublish the configuration file:
php artisan vendor:publish --tag=wafeqTo enable the package, add the following to your .env file:
WAFEQ_IS_ENABLED=trueAnd update your .env file:
WAFEQ_API_KEY=your_api_key_here
WAFEQ_ENDPOINT=https://api.wafeq.com/v1You can inject Project directly anywhere:
use MixCode\Wafeq\Project;
class ProjectController
{
public function listProjects()
{
$projectService = new Project();
return $projectService->list();
}
}You can also use the Project facade:
use MixCode\Wafeq\ProjectFacade as Project;
$projects = Project::list();You can inject Project directly into your controllers or services:
use MixCode\Wafeq\Project;
class ProjectController
{
public function __construct(private Project $project) {}
public function listProjects()
{
return $this->project->list();
}
}$project = new Project();
$projects = $project->list();$project = new Project();
$project = $project->show($projectId);use MixCode\Wafeq\Payloads\ProjectPayload;
$payload = new ProjectPayload(
name: 'Project Name',
);
$project = new Project();
$response = $project->create($payload);use MixCode\Wafeq\Payloads\ProjectPayload;
$payload = new ProjectPayload(
name: 'John Doe',
);
$project = new Project();
$response = $project->update($payload);$project = new Project();
$response = $project->delete($projectId);$contact = new Contact();
$contacts = $contact->list();$contact = new Contact();
$contact = $contact->show($contactId);use MixCode\Wafeq\Payloads\ContactPayload;
$payload = new ContactPayload(
name: 'Contact Name',
email: '[email protected]',
phone: '+1234567890'
);
$contact = new Contact();
$response = $contact->create($payload);use MixCode\Wafeq\Payloads\ContactPayload;
$payload = new ContactPayload(
name: 'Contact Name Updated',
email: '[email protected]',
phone: '+1234567890'
);
$contact = new Contact();
$response = $contact->update($payload);$contact = new Contact();
$contact = $contact->delete($contactId);// 1. Build Line Items
$lineItem1 = new ManualJournalLineItemPayload(
account: 'acc_123',
amount: 1000,
amountToBcy: 1000,
currency: 'AED',
description: 'Sales Revenue',
branch: 'main',
);
$lineItem2 = new ManualJournalLineItemPayload(
account: 'acc_456',
amount: -1000,
amountToBcy: -1000,
currency: 'AED',
description: 'Cash Payment',
branch: 'main',
);
// 2. Build the main payload
$manualJournalPayload = new ManualJournalPayload(
date: '2025-04-25',
lineItems: [$lineItem1, $lineItem2],
reference: 'REF-001',
notes: 'Payment for invoice #001',
);
// 3. Create the manual journal
$manualJournalService = new ManualJournal();
$response = $manualJournalService->create($manualJournalPayload);$account = new Account();
$accounts = $account->list();vendor/bin/pestThis package is open-source and available under the MIT License.