Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fiscomm PHP SDK

Official PHP SDK for the Fiscomm Public API. Supports all API-key accessible endpoints for fiscal receipt creation, archive querying, and authentication.

Installation

composer config repositories.fiscomm-sdk vcs https://github.com/Fiscomm/fiscomm-sdk-php
composer require fiscomm/sdk:dev-main

PHP ≥ 8.1 required.

Quick Start

use Fiscomm\Sdk\FiscommClient;
use Fiscomm\Sdk\DTOs\CreateReceiptRequestDto;
use Fiscomm\Sdk\DTOs\ItemDto;
use Fiscomm\Sdk\DTOs\PaymentDto;
use Fiscomm\Sdk\Enums\InvoiceType;
use Fiscomm\Sdk\Enums\TransactionType;

$client = new FiscommClient('your-api-key');

// Create a fiscal receipt
$dto = new CreateReceiptRequestDto(
    orderNumber: 'ORD-2024-001',
    buyerId: '10:123456789',
    items: [
        new ItemDto(
            name: 'Widget A',
            gtin: '3838989123456',
            quantity: 2,
            unitPrice: 500,
            totalAmount: 1000,
            labels: ['A'],
        )
    ],
    metaFields: ['customer_name' => 'John Doe'],
    payments: [
        new PaymentDto(type: 'Cash', amount: 1000)
    ]
);

$result = $client->receipts()->create(
    InvoiceType::Normal,
    TransactionType::Sale,
    $dto
);

echo $result['receipt']['invoiceNumber'];
echo $result['receipt']['invoicePdfUrl'];

Configuration

$client = new FiscommClient(
    apiKey: 'your-api-key',
    baseUrl: 'https://api.fiscomm.rs' // Optional
);

Kako Se Koristi (Produkcija)

Primeri ispod pokrivaju tipicne produkcione tokove.

1) Kreiranje racuna (normal/sale)

use Fiscomm\Sdk\FiscommClient;
use Fiscomm\Sdk\DTOs\CreateReceiptRequestDto;
use Fiscomm\Sdk\DTOs\ItemDto;
use Fiscomm\Sdk\DTOs\PaymentDto;
use Fiscomm\Sdk\Enums\InvoiceType;
use Fiscomm\Sdk\Enums\TransactionType;

$client = new FiscommClient(
    apiKey: getenv('FISCOMM_API_KEY'),
    baseUrl: 'https://api.fiscomm.rs'
);

$created = $client->receipts()->create(
    InvoiceType::Normal,
    TransactionType::Sale,
    new CreateReceiptRequestDto(
        orderNumber: 'ORDER-' . time(),
        buyerId: '10:123456789',
        items: [
            new ItemDto(
                name: 'Proizvod A',
                gtin: '8600000000001',
                quantity: 1,
                unitPrice: 1200,
                totalAmount: 1200,
                labels: ['F']
            ),
        ],
        metaFields: [],
        payments: [new PaymentDto(type: 'Cash', amount: 1200)]
    )
);

echo $created['receipt']['invoiceNumber'];

2) Advance finalize tok

$finalized = $client->receipts()->finalizeAdvance(
    new \Fiscomm\Sdk\DTOs\AdvanceFinalizeRequestDto(
        orderNumber: 'ADV-FIN-' . time(),
        buyerId: '10:123456789',
        items: [
            new ItemDto(
                name: 'Advance stavka',
                gtin: '8600000000002',
                quantity: 1,
                unitPrice: 1000,
                totalAmount: 1000,
                labels: ['E']
            )
        ],
        metaFields: [],
        payments: [new PaymentDto(type: 'Cash', amount: 1000)]
    )
);

echo $finalized['refundReceipt']['invoiceNumber'];
echo $finalized['finalReceipt']['invoiceNumber'];

3) Preporuke za bezbednost

  • Ne upisujte API kljuceve direktno u kod.
  • Koristite env varijable (npr. FISCOMM_API_KEY).
  • Uvek koristite produkcioni baseUrl: https://api.fiscomm.rs.

API Reference

Receipts & Drafts ($client->receipts())

Create a receipt (sync)

$result = $client->receipts()->create($invoiceType, $transactionType, $dto);

Create a receipt (async)

$result = $client->receipts()->createAsync($invoiceType, $transactionType, $dto);

Create bulk receipts

$result = $client->receipts()->createBulk($invoiceType, $transactionType, $dto);

Drafts

// Create
$client->receipts()->createDraft($dto);
// List
$client->receipts()->listDrafts(['page' => 1]);
// Get
$client->receipts()->getDraft($id);
// Update
$client->receipts()->updateDraft($id, $dto);
// Delete
$client->receipts()->deleteDraft($id);

Archive ($client->archive())

List receipts

$client->archive()->listReceipts(['startDate' => '2024-01-01']);

Get single receipt

$client->archive()->getReceipt('INV-123');

Authentication ($client->auth())

Verify token

$result = $client->auth()->verifyToken(); // returns ['isValid' => true/false]

Error Handling

Throws Fiscomm\Sdk\Exceptions\FiscommApiException on non-2xx responses.

try {
    $client->receipts()->create(...);
} catch (FiscommApiException $e) {
    echo $e->getStatusCode(); // 401, 403, 404, etc.
    print_r($e->getResponseBody());
}

Development

composer install
composer test

License

Released under the MIT License.

About

Official PHP SDK for the Fiscomm API (PURS e-fiscalization)

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages