Comments (9)
Getestet und läuft.
Leider werden aber auch Etiketten erstellt, wenn die Leitcodierung einen Fehler zurück wirft.
Man sollte hier wählen können ob eine Etikette bei einem Leitcodierungs-Fehler gedruckt wird oder nicht.
["statusText":"DHL_Response":private]=> string(30) "Weak validation error occured." ["statusMessage":"DHL_Response":private]=> array(2) { [0]=> string(48) "Der angegebene Ort passt nicht zur Postleitzahl." [1]=> string(48) "Der angegebene Ort passt nicht zur Postleitzahl." }
Etikette wird trotzdem erstellt, kostet halt 0,35€ pro Etikette.
Mein Script sieht so aus.
require_once('includes' . DIRECTORY_SEPARATOR . 'DHL_BusinessShipment.php');
$heute = date("Y-m-d");
$utf_name = utf8_encode($name[$key]);
$utf_namezusatz = utf8_encode($namezusatz[$key]);
$utf_kontakt = utf8_encode($kontakt[$key]);
$utf_strasse = utf8_encode($strasse[$key]);
$utf_hausnummer = utf8_encode($hausnummer[$key]);
$utf_landcode = utf8_encode($landcode[$key]);
$utf_plz = utf8_encode($plz[$key]);
$utf_ort = utf8_encode($ort[$key]);
$utf_email = utf8_encode($email[$key]);
$lap_gewicht = utf8_encode($p_gewicht[$key]);
$testModus = false;
$version = '2.2';
$credentials = new DHL_Credentials();
$credentials->setUser('USER_XXXXXXXXXX'); // DHL-Account (Same as if you Login with then to create Manual-Labels)
$credentials->setSignature('PW_XXXXXXXXXXXX'); // DHL-Account-Password
if($utf_landcode == 'DE'){
$credentials->setEpk('XXXXXXXXX_0102');
$shipmentDetails = new DHL_ShipmentDetails($credentials->getEpk(10) . '0102');
$shipmentDetails->setProduct('V01PAK');
} else {
$credentials->setEpk('XXXXXXXXXXX_5302');
$shipmentDetails = new DHL_ShipmentDetails($credentials->getEpk(10) . '5302');
$shipmentDetails->setProduct('V53WPAK');
}
$credentials->setApiUser('PHPAPPID'); // Your Applications-ID (You can find it in your DHL-Dev-Account)
$credentials->setApiPassword('TOKEN'); // Your Applications-Token (You can find it also where you found the App-Id)
$shipmentDetails->setShipmentDate($heute);
$shipmentDetails->setWeight($lap_gewicht);
$sender = new DHL_Sender();
$sender->setName('Absender');
$sender->setStreetName('Absender Str');
$sender->setStreetNumber('Absender HNr.');
$sender->setZip('Absender PLZ');
$sender->setCity('Absender Stadt');
$sender->setCountry('Germany');
$sender->setCountryISOCode('DE');
$sender->setAddressAddition('Zb. 1 OG');
$sender->setName2('Absender Name2');
$sender->setPhone('Rufnummer');
$sender->setEmail('Absender');
$receiver = new DHL_Receiver();
$receiver->setName($utf_name);
$receiver->setStreetName($utf_strasse);
$receiver->setStreetNumber($utf_hausnummer);
$receiver->setZip($utf_plz);
$receiver->setCity($utf_ort);
$receiver->setCountryISOCode($utf_landcode);
$receiver->setName2($utf_namezusatz);
$receiver->setEmail($utf_email);
$receiver->setContactPerson($utf_kontakt);
$service = new DHL_Service();
$dhl = new DHL_BusinessShipment($credentials);
$dhl->setSender($sender);
$dhl->setReceiver($receiver);
$dhl->setService($service);
$dhl->setShipmentDetails($shipmentDetails);
$dhl->setReceiverEmail($utf_email); // Needed if you want inform the receiver via mail
$dhl->setLabelResponseType('URL');
$response = $dhl->createShipment();
if($response !== false)
var_dump($response);
else
var_dump($dhl->getErrors());
var_dump($dhl->getLastXML());
$sendungsnummer = $response->getShipmentNumber();
$label_url = $response->getLabel(); // Returns the Label URL or Base64-Label-String or null
$label_url2 = $response->getReturnLabel(); // Returns the ReturnLabel (URL/B64) or null
$sepnr = $response->getSequenceNumber(); // Returns your provided sequence number or null
$status_code = $response->getStatusCode(); // Returns the Status-Code (Difference to DHL - Weak-Validation is 1 not 0)
$status_text = $response->getStatusText(); // Returns the Status-Text or null
$status_message = $response->getStatusMessage(); // Returns the Status-Message (More details) or null
echo "<br>
$sendungsnummer <br>
$label_url <br>
$label_url2 <br>
$sepnr <br>
$status_code <br>
$status_text <br>
$status_message <br>
";
// Speichert das Lappel im Ordner label.
file_put_contents("./label/$sendungsnummer.pdf", file_get_contents($label_url));
from dhl-php-sdk.
Please remove the {}
after DHL_ShipmentDetails::
, they where just to show "placeholder"-Values
You don't need the (string)
-Cast, it was just to show the Type of the Value.
I have to use 0101 for national packages, why do you need 0102? Are you sure that this is correct?
Correct is:
// Using my constances:
$shipmentDetails->setProduct(DHL_ShipmentDetails::PRODUCT_TYPE_NATIONAL_PACKAGE);
// OR (If you dont want to use the constances, just the String of your product):
$shipmentDetails->setProduct('V01PAK');
And for the second one:
// Using constances:
$shipmentDetails->setProduct(DHL_ShipmentDetails::PRODUCT_TYPE_INTERNATIONAL_PACKAGE);
// OR as String:
$shipmentDetails->setProduct('V53WPAK');
Please consider using an IDE, it will help you a lot =) (EG: Showing you constances etc)
But I never test it with international packages, please tell me if it works after you fixed the typo =)
May my description in the readme is a little unclear?
from dhl-php-sdk.
thx....
yes a littel unclear ;)
Fatal error: Call to a member function setProduct() on null in /XXX/v2_neues_sdk.php on line 28
#if($utf_landcode == 'DE'){
$credentials->setEpk('xxxxxxxx0102');
$shipmentDetails->setProduct('V01PAK');
#} else {
#$credentials->setEpk('xxxxxxxxxx5302');
#$shipmentDetails->setProduct('V53WPAK');
#}
kann ich auch auf Deutsch antworten?
from dhl-php-sdk.
Ja klar, wenns nicht anders geht^^
Hast du den die ganze Datei (Ohne Zugangsdaten) zb auf Pastebin, damit ich mal sehen kann?
from dhl-php-sdk.
ich hab die if Abfrage nun raus gemacht.
Jetzt bekommen ich -> Fatal error: Call to a member function setProduct() on null..
Hier mal das Script.
Alle Daten sind in einem Array und werden über eine Schleife gefüllt.
#error_reporting(-1);
ini_set('display_errors', TRUE);
error_reporting(E_ERROR | E_WARNING | E_PARSE);
require_once('includes' . DIRECTORY_SEPARATOR . 'DHL_BusinessShipment.php');
$heute = date("Y-m-d");
$utf_name = $name[$key];
$utf_namezusatz = $namezusatz[$key];
$utf_kontakt = $kontakt[$key];
$utf_strasse = $strasse[$key];
$utf_hausnummer = $hausnummer[$key];
$utf_landcode = $landcode[$key];
$utf_plz = $plz[$key];
$utf_ort = $ort[$key];
$utf_email = $email[$key];
$lap_gewicht = $p_gewicht[$key];
$testModus = false;
$version = '2.2';
$credentials = new DHL_Credentials();
$credentials->setUser('xxxxx'); // DHL-Account (Same as if you Login with then to create Manual-Labels)
$credentials->setSignature('xxxxxx'); // DHL-Account-Password
#if($utf_landcode == 'DE'){
$credentials->setEpk('xxxxx');
$shipmentDetails->setProduct('V01PAK');
#} else {
#$credentials->setEpk('xxxxxx');
#$shipmentDetails->setProduct('V53WPAK');
#}
$credentials->setApiUser('DHLAPPID'); // Your Applications-ID (You can find it in your DHL-Dev-Account)
$credentials->setApiPassword('TOKEN'); // Your Applications-Token (You can find it also where you found the App-Id)
$shipmentDetails->setShipmentDate($heute);
$shipmentDetails->setWeight($lap_gewicht);
$sender = new DHL_Sender();
$sender->setName('Firma');
$sender->setStreetName('Strasse');
$sender->setStreetNumber('10');
$sender->setZip('90489');
$sender->setCity('Nürnberg');
$sender->setCountry('Germany');
$sender->setCountryISOCode('DE');
$sender->setAddressAddition('1 OG');
$sender->setName2('Firma');
$sender->setPhone('0911123456789');
$sender->setEmail('[email protected]');
$receiver = new DHL_Receiver();
$receiver->setName($utf_name);
$receiver->setStreetName($utf_strasse);
$receiver->setStreetNumber($utf_hausnummer);
$receiver->setZip($utf_plz);
$receiver->setCity($utf_ort);
$receiver->setCountryISOCode($utf_landcode);
$receiver->setName2($utf_namezusatz);
$receiver->setEmail($utf_email);
$receiver->setContactPerson($utf_kontakt);
$service = new DHL_Service();
$dhl = new DHL_BusinessShipment($credentials);
$dhl->setSender($sender);
$dhl->setReceiver($receiver);
$dhl->setService($service);
$dhl->setShipmentDetails($shipmentDetails);
$dhl->setReceiverEmail($utf_email); // Needed if you want inform the receiver via mail
$dhl->setLabelResponseType('URL');
$response = $dhl->createShipment();
if($response !== false)
var_dump($response);
else
var_dump($dhl->getErrors());
var_dump($dhl->getLastXML());
from dhl-php-sdk.
Naja du greifst auf $shipmentDetails
zu, nirgendwo wurde das deklariert... Daher auch die null-Pointer-Exception
Du musst das Shipment-Detail objekt erstellen^^ (Der Schritt hier)
$shipmentDetails = new DHL_ShipmentDetails($credentials->getEpk(10) . '0101');
Musst die Endung eben noch anpassen, da du ja nicht 0101 nutzt, sondern 0102 bzw 0103^^
from dhl-php-sdk.
Danke.... und Respekt für die schnellen Antworten.
Ich teste weiter und berichte.
Ich werde mein Script wenn es geht hier Posten.
Sorry, bin net der crack in php.
from dhl-php-sdk.
Kein Problem und viel Erfolg weiterhin^^ Sag bescheid, ob das mit dem Internationalen Versand funktioniert, so lange lass ich das mal offen ;)
from dhl-php-sdk.
Super, es läuft =)! Danke dir fürs testen.
Soweit ich weiß, muss man selbst fehlerhafte Etiketten stornieren. Das kannst du mit der Funktion hier tun: (Findest du in der DHL_BusinessShipment
-Klasse, also selbe mit der du das auch erstellt hast)
/**
* Deletes a Shipment
*
* @param string $shipmentNumber - Shipment-Number of the Shipment to delete
* @return bool|DHL_Response - Response
*/
public function deleteShipment($shipmentNumber) { /* (...) */ }
Du könntest das selbstverständlich auch automatisieren, indem du bei einem Weak-Validation-Error einfach automatisch diese funktion mit der Sende-Nummer aufrufst.
zb:
if($response !== false) {
if($response->getStatusCode() === DHL_Response::DHL_ERROR_WEAK_WARNING)
$dhl->deleteShipment($response->getShipmentNumber());
}
Allerdings sind da die Lösungen bei dir, da ich schlecht prüfen kann ob es die Adresse gibt/mit der PLZ übereinstimmt^^ Da kannste ja dich einfach auf die Response verlassen.
Nun gut, super das alles soweit geht, ich schließe das hier mal. Danke fürs testen =)
from dhl-php-sdk.
Related Issues (20)
- Remove redundant Code in BusinessShipment.php
- Unauthorized HOT 6
- validateShipment returning statuscode 1 or 0 on refresh HOT 3
- Cases with wrong weak_warning StatusCode HOT 1
- How to create a multi-package-sending? HOT 2
- Geschäftskundenversand-API 3.0 HOT 15
- Geschäftskundenversand-API 3.0 - shipmentNumber HOT 1
- labelFormat Option HOT 5
- GoGreen used in Version 3? HOT 7
- how to connect to production mode using provided credentials HOT 1
- [INFO] about "doManifest" HOT 2
- PHP Version HOT 2
- Exception in extension function java.lang.IllegalArgumentException: is not known
- Endpoints for .com? HOT 1
- returnLabel is empty HOT 5
- SECURITY_VIOLATION HOT 4
- Release of Version HOT 3
- Stuff to fix until 3.0 is fully supported HOT 1
- Encoding: object has no 'ShipmentOrder' property HOT 2
- Failure: Unauthorized HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dhl-php-sdk.