A Laravel package for interacting with the Daftra API, supporting clients, products, invoice creation, and invoice payments.
- Manage clients (list, show, create, update, delete)
- Manage products (list, show, create, update, delete)
- Create invoices and make invoice payments
- Simple API wrapper with Laravel's HTTP Client
- Supports facade usage for convenience
- PHP 8.2
- Laravel 10 or Above
composer require mix-code/daftra-clientPublish the configuration file:
php artisan vendor:publish --tag=daftra-clientThen update your .env file:
DAFTRA_API_KEY=your_api_key_here
DAFTRA_ENDPOINT=https://api.daftra.com/v2You can inject DaftraClient directly anywhere:
use MixCode\DaftraClient\DaftraClient;
class ClientController
{
public function listClients()
{
$daftraClient = new DaftraClient();
return $daftraClient->listClients();
}
}You can also use the DaftraClient facade:
use MixCode\DaftraClient\DaftraClientFacade as Daftra;
$clients = Daftra::listClients();You can inject DaftraClient directly into your controllers or services:
use MixCode\DaftraClient\DaftraClient;
class ClientController
{
public function __construct(private DaftraClient $daftraClient) {}
public function listClients()
{
return $this->daftraClient->listClients();
}
}$clients = $daftraClient->listClients();$client = $daftraClient->showClient($clientId);use MixCode\DaftraClient\Payloads\ClientPayload;
$payload = new ClientPayload(
name: 'John Doe',
email: '[email protected]'
);
$response = $daftraClient->createClient($payload);use MixCode\DaftraClient\Payloads\ClientPayload;
$payload = new ClientPayload(
name: 'John Doe',
email: '[email protected]'
);
$response = $daftraClient->updateClient($payload);$response = $daftraClient->deleteClient($clientId);$products = $daftraClient->listProducts();$product = $daftraClient->showProduct($productId);use MixCode\DaftraClient\Payloads\ProductPayload;
$payload = new ProductPayload(
name: 'Sample Product',
price: 100.00
);
$response = $daftraClient->createProduct($payload);use MixCode\DaftraClient\Payloads\ProductPayload;
$payload = new ProductPayload(
name: 'Sample Product',
price: 100.00
);
$response = $daftraClient->updateProduct($payload);$product = $daftraClient->deleteProduct($productId);use MixCode\DaftraClient\Payloads\InvoicePayload;
use MixCode\DaftraClient\Payloads\InvoiceItemPayload;
$items = [
new InvoiceItemPayload(productId: 1, quantity: 2, price: 50.00)
];
$invoicePayload = new InvoicePayload(
clientId: 123,
date: now()->toDateString(),
items: $items
);
$invoice = $daftraClient->createInvoice($invoicePayload);use MixCode\DaftraClient\Payloads\InvoicePaymentPayload;
$paymentPayload = new InvoicePaymentPayload(
invoiceId: $invoice->id,
amount: 100.00,
paymentMethod: 'credit_card'
);
$payment = $daftraClient->payInvoice($paymentPayload);use MixCode\DaftraClient\Payloads\InvoicePayload;
use MixCode\DaftraClient\Payloads\InvoiceItemPayload;
$items = [
new InvoiceItemPayload(productId: 1, quantity: 2, price: 50.00)
];
$invoicePayload = new InvoicePayload(
clientId: 123,
date: now()->toDateString(),
items: $items
);
$response = $daftraClient->createAndPayInvoice($invoicePayload, 100.00, 'credit_card');vendor/bin/pestThis package is open-source and available under the MIT License.