dividebv / postnl
Library to connect to PostNL's SOAP service called CIF
Installs: 329 421
Dependents: 1
Suggesters: 0
Security: 0
Stars: 31
Watchers: 11
Forks: 40
Open Issues: 5
Requires
- php: >=7.0
- ext-dom: *
- ext-soap: *
Requires (Dev)
- apigen/apigen: ^4.1
- squizlabs/php_codesniffer: 2.*
This package is auto-updated.
Last update: 2024-12-17 16:11:27 UTC
README
This is a library to interface with the SOAP services offered by PostNL, called CIF.
New authorization
Since version 2.0 of this library, the new authorization method (using tokens instead of username/password) is used.
Installation
Install the latest version with
composer require dividebv/postnl
Implementation Status
This library is not complete. This table lists which services are implemented and which aren't. The list of existing services is taken from PostNL's developer center.
Example
use DivideBV\Postnl\Postnl; use DivideBV\Postnl\ComplexTypes; // Create client class using credentials received from PostNL. $client = new Postnl( 12345678, // Customer number 'ABCD', // Customer code 'Acme BV', // Customer name 'xxxxxxxx', // API key 123456, // Collection location 'CD1234', // Globalpack true // Whether to use PostNL's sandbox environment. ); /** * Jan Smit * Smit & Zonen * Hoofdstraat 1A * 1234 AB Heikant * The Netherlands */ $receiverAddress = ComplexTypes\Address::create() ->setAddressType('01') ->setFirstName('Jan') ->setName('Smit') ->setCompanyName('Smit & Zonen') ->setStreet('Hoofdstraat') ->setHouseNr('1') ->setHouseNrExt('A') ->setZipcode('1234AB') ->setCity('Heikant') ->setCountrycode('NL'); $senderAddress = ComplexTypes\Address::create() ->setAddressType('02') ->setFirstName('Robert') ->setName('Jansen') ->setCompanyName('Jansen & Janssen') ->setStreet('Hoofdstraat') ->setHouseNr('999') ->setHouseNrExt('B') ->setZipcode('1234AB') ->setCity('Heikant') ->setCountrycode('NL'); // Request a barcode from PostNL. $barcode = $client->generateBarcodeByDestination($receiverAddress->getCountryCode()); // Create a shipment. $shipment = ComplexTypes\Shipment::create() ->setAddresses(new ComplexTypes\ArrayOfAddress([ $receiverAddress, $senderAddress, ])) ->setBarcode($barcode) ->setDimension(ComplexTypes\Dimension::create() ->setWeight(5000) // Weight in g ->setWidth(215) // Width in mm ->setLength(305) // Length in mm ->setHeight(280) // Height in mm ) ->setProductCodeDelivery('3085'); // Generate label and confirm shipment. $result = $client->generateLabel($shipment); // Save the label PDF locally. $label = $result->getLabels()[0]; $file = new \SplFileObject("label.pdf", 'w'); $file->fwrite($label->getContent());