Download the PHP package kennzeichenservices/dropshipping-sdk without Composer
On this page you can find all versions of the php package kennzeichenservices/dropshipping-sdk. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download kennzeichenservices/dropshipping-sdk
More information about kennzeichenservices/dropshipping-sdk
Files in kennzeichenservices/dropshipping-sdk
Package dropshipping-sdk
Short Description Production-ready PHP SDK for the Dropshipping API
License proprietary
Informations about the package dropshipping-sdk
Dropshipping SDK
A PHP SDK for the Kennzeichen Services Dropshipping API. It provides typed request/response objects, webhook processing with middleware pipeline support, and async queue integration.
Features
- Typed endpoints for orders, shipments, products, webhooks, GKS configurations, and vehicle deregistrations
- Immutable DTOs for all requests and responses
- Webhook processing with configurable middleware pipeline (signature validation, payload validation, deserialization)
- Async webhook processing via queue abstraction
- HMAC-SHA256 webhook signature verification
- Multipart file upload support for emission sticker orders
- PSR-18 HTTP client / PSR-17 HTTP factory compatible (bring your own HTTP client)
- Built-in request/response debug logging via
KS_DROPSHIPPING_DEBUGconstant
Requirements
- PHP 8.2 or higher
- A PSR-18 HTTP client implementation (e.g.
guzzlehttp/guzzle,symfony/http-client) - A PSR-17 HTTP factory implementation (e.g.
guzzlehttp/psr7,nyholm/psr7)
Installation
Configuration
Usage
Creating the Client
The client requires a PSR-18 HTTP client and PSR-17 request/stream factories. Example using Guzzle:
Using DS
Instead of importing individual DTO classes, use Dropshipping\DS as a single entry point for all request objects:
The only imports you need are Dropshipping\DS and the enums you use (e.g. Gender, LicensePlateType). See the examples/ directory for complete runnable scripts.
The client exposes six endpoint groups as public readonly properties:
$client->orders-- Order operations$client->shipments-- Shipment operations (license plate reservations)$client->products-- Product operations (availability checks)$client->webhooks-- Webhook operations$client->gksConfigurations-- GKS configuration management (KBA interface)$client->vehicleDeregistrations-- Vehicle deregistration operations
Examples
Ready-to-run PHP scripts are available in the examples/ directory. Each example has an accompanying Markdown file that explains what it does.
| Example | Description |
|---|---|
| docs | Create a standard order with a license plate item |
| docs | Create an emission sticker order with file upload |
| docs | Create a reshipped order for a returned delivery |
| docs | Check available license plate numbers at a registration office |
| docs | Reserve a license plate |
| docs | Create, update, list, and get GKS configurations |
| docs | Submit a vehicle deregistration and handle the XKFZ webhook with file download |
| docs | Process incoming webhooks with the middleware pipeline |
| docs | Enqueue and process webhooks asynchronously via a queue |
Creating an Order
Creating an Emission Sticker Order
Creating a Reshipped Order
Checking License Plate Availability
Reserving a License Plate
Managing GKS Configurations
Submitting a Vehicle Deregistration
Downloading a Deregistration File
Files attached to a VEHICLE_DEREGISTRATION_XKFZ_EVENT webhook can be downloaded using the fileAccessKey from the event:
Handling Webhooks
Set up a webhook receiver with the built-in middleware pipeline:
Async Webhook Processing
For high-throughput scenarios, queue webhooks for background processing:
Architecture Overview
The SDK follows these patterns:
- Immutable DTOs -- All request and response objects are
final readonlyclasses. - Static factories -- Response DTOs provide
fromArray()constructors; request DTOs providetoArray()for serialization. - Middleware pipeline -- Webhook processing uses composable middleware (signature validation, payload validation, deserialization).
- PSR compliance -- No HTTP client is bundled. The SDK depends on PSR-18 (HTTP Client), PSR-17 (HTTP Factories), and PSR-7 (HTTP Messages).
Key Components
Endpoints
| Endpoint | Method | Description |
|---|---|---|
$client->orders->create() |
POST /orders | Create a standard order |
$client->orders->createEmissionStickerOrder() |
POST /orders/emissionStickerOrders | Create emission sticker order (multipart) |
$client->orders->createReshippedOrder() |
POST /orders/reshippedOrders | Create reshipped order |
$client->shipments->createLicensePlateReservation() |
POST /licensePlateReservations/reservations | Reserve a license plate |
$client->products->checkLicensePlateAvailability() |
POST /licensePlateReservations/availabilityChecks | Check license plate availability |
$client->gksConfigurations->create() |
POST /gksConfigurations | Create a GKS configuration |
$client->gksConfigurations->update() |
PUT /gksConfigurations/{id} | Update a GKS configuration |
$client->gksConfigurations->getOverviews() |
GET /gksConfigurations/overviews | List all GKS configurations |
$client->gksConfigurations->getOverview() |
GET /gksConfigurations/overviews/{id} | Get a single GKS configuration |
$client->vehicleDeregistrations->createDeregistration() |
POST /vehicleDeregistrations/deregistrations | Submit a vehicle deregistration |
$client->vehicleDeregistrations->downloadFileContent() |
GET /vehicleDeregistrations/files/content/{fileAccessKey} | Download a file from a VEHICLE_DEREGISTRATION_XKFZ_EVENT webhook |
Webhook Event Types
| Event | Class | Description |
|---|---|---|
PING |
PingEvent |
Connection test |
DELIVERY_SHIPMENT |
DeliveryShipmentEvent |
Delivery shipped with tracking code |
DELIVERY_RETURN |
DeliveryReturnEvent |
Delivery returned with reason and reshipping offer |
DELIVERY_CANCELLATION |
DeliveryCancellationEvent |
Delivery cancelled |
LICENSE_PLATE_RESERVATION_APPROVAL |
LicensePlateReservationApprovalEvent |
Reservation approved with PIN and price |
LICENSE_PLATE_RESERVATION_REJECTION |
LicensePlateReservationRejectionEvent |
Reservation rejected with alternatives |
LICENSE_PLATE_RESERVATION_TIMEOUT |
LicensePlateReservationTimeoutEvent |
Reservation timed out |
VEHICLE_DEREGISTRATION_XKFZ_EVENT |
VehicleDeregistrationXkfzEvent |
Vehicle deregistration XKFZ status update — includes status, derivedStatus, optional files (with fileAccessKey for download), optional costBreakdown, and optional messages |
Enums
| Enum | Values |
|---|---|
Gender |
FEMALE, MALE, UNSPECIFIED |
VehicleType |
CAR, MOTORCYCLE |
LicensePlateType |
REGULAR, REGULAR_SEASON, ELECTRIC, ELECTRIC_SEASON, HISTORICAL, HISTORICAL_SEASON |
LicensePlateUsageType |
EURO, PARKING |
ProductType |
LICENSE_PLATE, VEHICLE_DEREGISTRATION, OTHER |
VehicleDeregistrationVehicleType |
CAR, LIGHT_MOTORCYCLE, MOTORCYCLE, OTHER, TRACTOR, TRAILER, TRUCK |
VehicleDeregistrationLicensePlateType |
REGULAR, REGULAR_SEASON, ELECTRIC, ELECTRIC_SEASON, HISTORICAL, HISTORICAL_SEASON |
VehicleDeregistrationXkfzEventStatus |
ACCEPTED, APPROVED, APPROVED_WITH_DOCUMENTS, FAILED, FORWARDED, PROCESSED, REJECTED, REJECTED_WITH_DOCUMENTS, UNKNOWN |
VehicleDeregistrationXkfzEventFilePurposeType |
CERTIFICATE, RECEIPT, APPLICATION, UNSPECIFIED |
Extensibility
- Custom HTTP client -- Pass any PSR-18 compliant HTTP client to
ApiClient. - Custom serializer -- Implement
SerializerInterfaceand pass it toApiClientto replace the defaultArrayMapper. - Custom webhook handlers -- Implement
WebhookHandlerInterfaceand register withWebhookDispatcher. - Custom queue backend -- Implement
WebhookQueueInterfacefor async webhook processing with any queue system. - Custom middleware -- Implement
WebhookMiddlewareInterfaceto add processing steps to the webhook pipeline.
Security Considerations
- API authentication uses HTTP Basic Auth. Credentials are added to every request by
ApiKeyAuthenticator. - Webhook payloads are verified using HMAC-SHA256 signatures via the
X-Signatureheader. TheSignatureValidationMiddlewarerejects requests with invalid signatures. - Store API credentials and webhook secrets outside of version control.
Debugging
The SDK supports request/response logging via PHP constants. Define KS_DROPSHIPPING_DEBUG before making API calls to write detailed logs:
By default, logs are written to dropshipping-debug.log in the current working directory. To use a custom log file path:
The debug log includes:
- Timestamp, HTTP method and URL
- Request headers (Authorization is masked)
- Request body
- Response status code and headers
- Response body
- Exception details on transport failures
Example log output:
Error Handling
All exceptions extend DropshippingException:
| Exception | When |
|---|---|
DropshippingException |
Request DTO field validation failure (e.g. string too long, invalid email, empty required field). Thrown before any HTTP request is made. |
ApiException |
Non-expected HTTP status code from the API. Provides getStatusCode() and getTraceId() for debugging. |
HttpClientException |
PSR-18 client-level transport failure. Wraps the original ClientExceptionInterface. |
WebhookException |
Webhook signature verification or payload validation failure. |
All request DTOs validate their fields against the API spec constraints when constructed. Invalid values throw a DropshippingException with a descriptive message including the field name and the provided value:
License
Proprietary
All versions of dropshipping-sdk with dependencies
psr/http-client Version ^1.0
psr/http-message Version ^2.0
psr/http-factory Version ^1.0
psr/log Version ^3.0
guzzlehttp/guzzle Version ^7.9