mix-code / daftra-client
Simple implementation for Daftra
v1.0.0
2025-03-08 21:25 UTC
Requires
- php: ^8.2
- illuminate/support: ^10.0|^11.0
Requires (Dev)
- laravel/pint: ^1.21
- orchestra/testbench: ^9.12
- pestphp/pest: ^3.7
README
A Laravel package for interacting with the Daftra API, supporting clients, products, invoice creation, and invoice payments.
🚀 Features
- 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
‼️ Requirments
- PHP 8.2
- Laravel 10 or Above
📦 Installation
composer require mix-code/daftra-client
⚙️ Configuration
Publish the configuration file:
php artisan vendor:publish --tag=daftra-client
Then update your .env
file:
DAFTRA_API_KEY=your_api_key_here DAFTRA_ENDPOINT=https://api.daftra.com/v2
🛠️ Usage
1️⃣ Daftra Client Directly
You can inject DaftraClient
directly anywhere:
use MixCode\DaftraClient\DaftraClient; class ClientController { public function listClients() { $daftraClient = new DaftraClient(); return $daftraClient->listClients(); } }
2️⃣ Using the Facade
You can also use the DaftraClient
facade:
use MixCode\DaftraClient\DaftraClientFacade as Daftra; $clients = Daftra::listClients();
3️⃣ Using Dependency Injection
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(); } }
📚 API Methods
🔹 Clients
List Clients
$clients = $daftraClient->listClients();
Show Client
$client = $daftraClient->showClient($clientId);
Create Client
use MixCode\DaftraClient\Payloads\ClientPayload; $payload = new ClientPayload( name: 'John Doe', email: 'john@example.com' ); $response = $daftraClient->createClient($payload);
update Client
use MixCode\DaftraClient\Payloads\ClientPayload; $payload = new ClientPayload( name: 'John Doe', email: 'john@example.com' ); $response = $daftraClient->updateClient($payload);
Delete Client
$response = $daftraClient->deleteClient($clientId);
🔹 Products
List Products
$products = $daftraClient->listProducts();
Show Product
$product = $daftraClient->showProduct($productId);
Create Product
use MixCode\DaftraClient\Payloads\ProductPayload; $payload = new ProductPayload( name: 'Sample Product', price: 100.00 ); $response = $daftraClient->createProduct($payload);
Update Product
use MixCode\DaftraClient\Payloads\ProductPayload; $payload = new ProductPayload( name: 'Sample Product', price: 100.00 ); $response = $daftraClient->updateProduct($payload);
Delete Product
$product = $daftraClient->deleteProduct($productId);
🔹 Invoices
Create an Invoice
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);
Pay an Invoice
use MixCode\DaftraClient\Payloads\InvoicePaymentPayload; $paymentPayload = new InvoicePaymentPayload( invoiceId: $invoice->id, amount: 100.00, paymentMethod: 'credit_card' ); $payment = $daftraClient->payInvoice($paymentPayload);
Create and Pay an Invoice
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');
✅ Testing
vendor/bin/pest
📜 License
This package is open-source and available under the MIT License.