PHP code example of smart-dato / correos-shipping-sdk
1. Go to this page and download the library: Download smart-dato/correos-shipping-sdk library . Choose the download type require .
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
smart-dato / correos-shipping-sdk example snippets
return [
'oauth' => [
'client_id' => env('CORREOS_OAUTH_CLIENT_ID'),
'client_secret' => env('CORREOS_OAUTH_CLIENT_SECRET'),
'token_url' => env('CORREOS_TOKEN_URL', 'https://apioauthcid.correos.es/Api/Authorize/Token'),
'scope' => env('CORREOS_OAUTH_SCOPE', 'AP3 LBS RCG'),
],
'gateway' => [
'client_id' => env('CORREOS_GATEWAY_CLIENT_ID'),
'client_secret' => env('CORREOS_GATEWAY_CLIENT_SECRET'),
],
'base_urls' => [
'preregister' => env('CORREOS_PREREGISTER_URL', 'https://api1.correos.es/admissions/preregister/api/v1'),
'labels' => env('CORREOS_LABELS_URL', 'https://api1.correos.es/support/labels/api/v1'),
'tracking' => env('CORREOS_TRACKING_URL', 'https://api1.correos.es/support/trackpub/api/v2'),
],
'verify_ssl' => env('CORREOS_VERIFY_SSL', true),
'force_ip_resolve' => env('CORREOS_FORCE_IP_RESOLVE'),
];
use SmartDato\CorreosShipping\CorreosShipping;
$correos = app(CorreosShipping::class);
use SmartDato\CorreosShipping\Data\Preregister\DeliveryRequestData;
$request = DeliveryRequestData::from([
'shipments' => [
[
'product' => 'PAFXB',
'deliveryMethod' => 'DOUAOF',
'contractNumber' => '12345678',
'clientNumber' => '1234567890',
'labellerCode' => '0001',
'packagesNumber' => '1',
'sender' => [
'name' => 'My Company',
'address' => 'Calle Sender 1',
'locality' => 'Madrid',
'province' => '28',
'cp' => '28001',
'country' => 'ESP',
],
'addressee' => [
'name' => 'John Doe',
'address' => 'Calle Receiver 2',
'locality' => 'Barcelona',
'province' => '08',
'cp' => '08001',
'country' => 'ESP',
],
'packages' => [
['packageWeightGrams' => '500'],
],
],
],
]);
// Validate before creating
$validation = $correos->preregister()->validateShipments($request);
// Create the shipment
$response = $correos->preregister()->createShipments($request);
$response->fileIdentifier; // "FILE001"
$response->shipments[0]->shipmentCode; // "PQXYZ1234567890"
$response->shipments[0]->packages[0]->packageCode; // "PQ1DR4A0000012345678"
use SmartDato\CorreosShipping\Data\Labels\PrintLabelsRequestData;
$labelRequest = PrintLabelsRequestData::from([
'documentationType' => 1, // 0=All, 1=Label, 2=CN22/CN23
'print' => [
'shipments' => ['PQXYZ1234567890'],
'labelFormat' => 2, // 1=XML, 2=PDF, 3=ZPL
'labelPrintMode' => 1, // 1=A4, 2=Labeler
],
]);
$labels = $correos->labels()->printLabels($labelRequest);
$labels->pdf; // Base64-encoded PDF content
use SmartDato\CorreosShipping\Data\Labels\PrintDocumentsRequestData;
$docRequest = PrintDocumentsRequestData::from([
'documentationType' => 5, // 5=DCAF, 6=DDP
'documentData' => [
'destinationName' => 'France',
'contractNumber' => '12345678',
'clientNumber' => '1234567890',
],
]);
$document = $correos->labels()->printDocuments($docRequest);
$document->pdf; // Base64-encoded PDF
$tracking = $correos->tracking()->searchShipment('PQ1DR4A0000012345678');
$tracking->code; // "PQ1DR4A0000012345678"
$tracking->codProduct; // "PQDOM"
$tracking->remitName; // Sender name
$tracking->destiName; // Addressee name
$tracking->events; // Array of TrackingEventData
foreach ($tracking->events as $event) {
$event->eventDate; // "06/02/2026"
$event->eventCode; // "P010000V"
$event->summaryText; // "Shipment preregistered"
$event->location; // "CTA MADRID"
}
$expedition = $correos->tracking()->getExpedition('EXP001234567890');
$expedition->refExpedition; // "EXP001234567890"
$expedition->serviceDescription; // "Paq Premium"
$expedition->clients; // Array of ExpeditionClientData
$expedition->packages; // Array of ExpeditionPackageData
// Cancel a shipment
$correos->preregister()->cancelShipment(
AnnulmentRequestData::from(['packageCode' => 'PQ1DR4A0000012345678'])
);
// Cancel an expedition
$correos->preregister()->cancelExpedition(
AnnulmentExpeditionRequestData::from(['expeditionCode' => 'EXP001234567890'])
);
// Generate shipment codes
$correos->preregister()->generateShipmentCode(
GenerateShipmentCodeRequestData::from([
'contractNumber' => '12345678',
'clientNumber' => '1234567890',
'labellerCode' => '0001',
'packagesNumber' => '1',
'product' => 'PAFXB',
'deliveryMethod' => 'DOUAOF',
])
);
// Modify a shipment
$correos->preregister()->modifyShipment($deliveryRequestData);
// Query shipments
$correos->preregister()->queryShipments(
QueryRequestData::from(['shipments' => ['PQ1DR4A0000012345678']])
);
// Get expedition packages
$correos->preregister()->getExpeditionPackages('EXP001234567890');
// Search by client reference
$correos->preregister()->getPackagesByReference('MY-REF-001');
// Backoffice queries
$correos->preregister()->getBackofficeShipment('PQXYZ1234567890');
$correos->preregister()->getBackofficeErrors(contractNumber: '12345678');
$correos->preregister()->getBackofficeTotal(dateFrom: '01/01/2026', dateTo: '31/01/2026');
$correos->preregister()->getBackofficeWaiting();
use SmartDato\CorreosShipping\Facades\CorreosShipping;
$response = CorreosShipping::preregister()->createShipments($request);
$labels = CorreosShipping::labels()->printLabels($labelRequest);
$tracking = CorreosShipping::tracking()->searchShipment('PQ1DR4A0000012345678');
use SmartDato\CorreosShipping\Enums\DocumentationType; // All, Label, CN22_CN23, DCAF, DDP
use SmartDato\CorreosShipping\Enums\LabelFormat; // XML, PDF, ZPL
use SmartDato\CorreosShipping\Enums\LabelPrintMode; // A4, Labeler
use SmartDato\CorreosShipping\Enums\LabelOrderType; // InternationalPoBox, Company, LastName, PackageId, ClientReference
use SmartDato\CorreosShipping\Enums\ShipmentType; // Documents, Goods, Gift, Samples, Returns, Other, Dangerous
use SmartDato\CorreosShipping\Enums\DoiType; // European, DNI, NIE, Other, CIF
use SmartDato\CorreosShipping\Enums\AdmissionMethod; // Office, Citypaq, DeliveryUnit
use SmartDato\CorreosShipping\Enums\ErrorCodeLanguage; // Spanish, English
use SmartDato\CorreosShipping\Exceptions\CorreosApiException;
try {
$response = $correos->preregister()->createShipments($request);
} catch (CorreosApiException $e) {
$e->getMessage(); // Error message from the API
$e->getCode(); // HTTP status code
$e->errorCode; // Correos error code
$e->moreInformation; // Additional error details
}
bash
php artisan vendor:publish --tag="correos-shipping-sdk-config"