dokan-e-commerce / compliance-laravel-sdk
Laravel SDK for Dokan ZATCA Phase 2 Compliance API - Streamline your e-invoicing compliance
v1.0.1
2025-04-05 07:13 UTC
Requires
- php: ^8.0|^8.1|^8.2|^8.3
- guzzlehttp/guzzle: ^7.0
- illuminate/support: ^9.0|^10.0
Requires (Dev)
- orchestra/testbench: ^7.0|^8.0
- phpunit/phpunit: ^9.0|^10.0
README
A Laravel SDK for interacting with the Dokan Compliance API. an easy way to integreate with zatca-phase-2.
Installation
You can install the package via composer:
composer require dokan-e-commerce/compliance-laravel-sdk
Setup
- Publish the config file (Optional):
php artisan vendor:publish --provider="Dokan\Compliance\ComplianceServiceProvider" --tag="compliance-config"
- Add these variables to your
.env
file:
DOKAN_COMPLIANCE_API_KEY=your-api-key
- Get your API token:
- Visit Dokan Compliance Portal
- Sign in to your account / register
- Create business entity if you dont have, and onboard your business
- Navigate to the API Tokens section
- Create a new API token
- Copy the generated token and use it as your
DOKAN_COMPLIANCE_API_KEY
Usage
Get Business Details
$client = app(\Dokan\Compliance\ComplianceClient::class); $businessDetails = $client->getBusinessDetails();
Create Invoice
use Dokan\Compliance\DTOs\CreateInvoiceRequest; use Dokan\Compliance\DTOs\Client; use Dokan\Compliance\DTOs\LineItem; $invoiceRequest = new CreateInvoiceRequest( business_config_id: '9dekebab-4bab-4e0a-af2c-f3shawarma', invoice_identifier: 'INV-1234', type: 'simplified', type_code: 388, currency: 'SAR', payment_status: 'Paid', nature: 'Sale', invoice_date: '2025-04-24 12:00:00', client: new Client( email: 'ahmed@dev.dokan.sa', type: 'individual', name: 'Ahmed A', phone: "+96655555555" // optional ), lineItems: [ new LineItem( label: 'Chicken Shawarma', price: 6, quantity: 2, is_vat_inclusive: true ), new LineItem( label: 'Meat Shawarma', price: 8, quantity: 2, is_vat_inclusive: true ) ] // Optional parameters: // instant_report: bool|null // custom_attributes: array|null ); // Direct creation $response = $client->createInvoice($invoiceRequest->toArray()); // Queue creation (with automatic retries) $client->createInvoice($invoiceRequest->toArray(), queue: true);
Get Invoice Details
$invoiceDetails = $client->getInvoiceDetails(123);
Queue Configuration (Optional)
If you plan to use queued invoice creation:
- Configure queue in
.env
:
QUEUE_CONNECTION=redis # or database, sqs, etc.
- Run queue worker:
php artisan queue:work
The queue system includes:
- 3 retry attempts
- 5-second delay between retries
- Automatic handling of API errors
- Retries only on connection issues or server errors
Support
- PHP: ^8.0|^8.1|^8.2|^8.3
- Laravel: ^9.0|^10.0
License
MIT License