creativefactoryrv / delera-api-client
Essential client library for Delera CRM API
Package info
github.com/CreativeFactory-di-Riva-Vigano/delera-api-client
pkg:composer/creativefactoryrv/delera-api-client
Requires
- php: ^7.4
Requires (Dev)
- guzzlehttp/guzzle: ^7.0
- phpunit/phpunit: ^9.0
README
Libreria PHP per inviare eventi (ordine, cliente, lead, spedizione, carrello abbandonato, ecc.) a endpoint remoti tramite webhook.
Questo README mostra come installare e usare la libreria. Gli esempi sono tratti dal file index.php presente nella root del progetto.
Requisiti
- PHP 7.4+
- Client HTTP che implementa
ClientInterface(es.GuzzleHttp\Client) - Composer
Installazione
Aggiungi il pacchetto al tuo progetto (se pubblicato su Packagist usare il nome del pacchetto). In locale puoi includere il repository direttamente nel composer.json del progetto principale e poi eseguire composer install.
Esempio rapido
1) Autoload e setup
require 'vendor/autoload.php'; use GuzzleHttp\Client; use CreativeFactoryRV\Delera\ApiClient; use CreativeFactoryRV\Delera\Api\{ AbandonedCartApi, CustomerApi, DeliveryApi, LeadApi, OrderApi, OrderStatusApi, ShippingApi }; $client = new Client(); $endpoints = [ AbandonedCartApi::class => 'https://example.com/webhook/abandoned-cart', CustomerApi::class => 'https://example.com/webhook/customer', DeliveryApi::class => 'https://example.com/webhook/delivery', LeadApi::class => 'https://example.com/webhook/lead', OrderApi::class => 'https://example.com/webhook/order', OrderStatusApi::class => 'https://example.com/webhook/order-status', ShippingApi::class => 'https://example.com/webhook/shipping', ]; $apiClient = new ApiClient($endpoints, $client);
2) Invio dati ai webhook di Delera
use CreativeFactoryRV\Delera\Customer\Customer; use CreativeFactoryRV\Delera\Customer\Address; use CreativeFactoryRV\Delera\Order\{Item, Items, AbandonedCart, Order, Shipping, Delivery, OrderStatus}; use CreativeFactoryRV\Delera\Lead\Lead; // Esempi di costruzione degli oggetti $customerId = 10; $cartId = 1000; $orderId = 100; $leadId = 10000; $customer = new Customer($customerId, 'Anita', 'Gobbetti', null, 'IT', 'anita@email.it', '1234567890'); $items = [ new Item(1, 101, 'Product 1', 9.99, 2), new Item(2, 202, 'Product 2', 19.99, 1), ]; $abandonedCart = new AbandonedCart( $cartId, $customer, new Items(...$items), new DateTime('now'), 200.99, 'https://www.website.com/checkout?id=1', 'google', 'cpc' ); $apiClient->abandonedCart->send($abandonedCart); // Lead $billingAddress = new Address(null, null, null, null, 'Italia', 'Lombardia', 'MI', 'Milano', '20100', 'Via Roma 5', null, null, null); $customer = new Customer(null, 'Anita', 'Gobbetti', null, 'IT', 'anita@email.it', '1234567890', $billingAddress); $lead = new Lead($leadId, new DateTime(), 'Messaggio di prova', $customer, 'https://example.com', 'google', 'cpc'); $apiClient->lead->send($lead); // Ordine $shippingAddress = new Address('Marco Rossi', null, null, null, 'Italia', 'Lombardia', 'MI', 'Milano', '20100', 'Piazza Mazzini 11', null, null, 'Note di test'); $billingAddress = new Address(null, 'Azienda', 'CF123456789', '123456789', 'Italia', 'Lombardia', 'MI', 'Milano', '20100', 'Via Roma 5', 'test@pec.it', 'SDI12345', null); $customer = new Customer($customerId, 'Anita', 'Gobbetti', null, 'IT', 'anita@email.it', '1234567890', $billingAddress, $shippingAddress); $order = new Order(1, $customer, new Items(...$items), new DateTime('now'), 'Bonifico bancario anticipato', 'In attesa di pagamento', 200.99, 10.50, 'NATALE2025', 'google', 'cpc'); $apiClient->order->send($order); // Spedizione $shipping = new Shipping($orderId, new DateTime('now'), new DateTime('+5 days'), 'DHL', 'TRACK12345', 'https://tracking.example.com/TRACK12345'); $apiClient->shipping->send($shipping); // Consegna $delivery = new Delivery($orderId, new DateTime('+5 days')); $apiClient->delivery->send($delivery); // Aggiornamento stato ordine $orderStatus = new OrderStatus(1, 'Cancellato'); $apiClient->orderStatus->send($orderStatus); // Aggiornamento anagrafica cliente $customer = new Customer($customerId, 'Anita', 'Gobbetti', null, 'IT', 'anita@email.it', '+39 1234567890'); $apiClient->customer->send($customer);
Note su eccezioni e gestione errori
Tutte le chiamate possono sollevare eccezioni; raccomandiamo di avvolgere gli invii in un blocco try/catch e gestire i messaggi di errore/loggandoli.
Licenza
Consulta il file LICENSE nella root del pacchetto.