forked from ekyna/Dpd
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcreate-reverse-inverse-shipment-with-labels.php
113 lines (86 loc) · 3.5 KB
/
create-reverse-inverse-shipment-with-labels.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<?php
require __DIR__ . '/../vendor/autoload.php';
use Ekyna\Component\Dpd\Exception;
use Ekyna\Component\Dpd\EPrint;
/* ---------------- Client and API ---------------- */
require __DIR__ . '/config.php';
$api = new Eprint\Api($ePrintConfig);
/* ---------------- Create request ---------------- */
// Shipment request
$request = new EPrint\Request\ReverseShipmentLabelRequest();
$request->customer_centernumber = $centerNumber;
$request->customer_countrycode = $countryCode;
$request->services = new EPrint\Model\ReverseInverseServices();
if ($usePredict) {
// Predict
$request->customer_number = $predictNumber;
// Predict contact
$request->services->contact = new EPrint\Model\Contact();
$request->services->contact->type = EPrint\Enum\ETypeContact::PREDICT;
$request->services->contact->sms = '0611111111';
} else {
// Classic
$request->customer_number = $classicNumber;
}
// Receiver address
$request->receiveraddress = new EPrint\Model\Address();
$request->receiveraddress->name = 'Example';
$request->receiveraddress->countryPrefix = 'FR';
$request->receiveraddress->zipCode = '22100';
$request->receiveraddress->city = 'Dinan';
$request->receiveraddress->street = '3 rue sainte-clare';
$request->receiveraddress->phoneNumber = '0633333333';
// (Optional) Receiver address optional info
$request->receiverinfo = new EPrint\Model\AddressInfo();
$request->receiverinfo->vinfo1 = 'Complément adresse';
// Shipper address
$request->shipperaddress = new EPrint\Model\Address();
$request->shipperaddress->name = 'John Doe';
$request->shipperaddress->countryPrefix = 'FR';
$request->shipperaddress->zipCode = '35000';
$request->shipperaddress->city = 'Rennes';
$request->shipperaddress->street = '2 rue saint-louis';
$request->shipperaddress->phoneNumber = '0622222222';
// Shipment weight and expire offset
$request->weight = 1.2; // kg
$request->expire_offset = 7; // days (from shippingdate, min 7)
$request->refasbarcode = true;
// (Optional) Theoretical shipment date ('d/m/Y' or 'd.m.Y')
$request->shippingdate = (new \DateTime('+1 day'))->format('d/m/Y');
// (Optional) References and comment
$request->referencenumber = 'return_ref_1';
/* ---------------- Get response ---------------- */
// Use API helper
try {
/** @var \Ekyna\Component\Dpd\EPrint\Response\CreateReverseInverseShipmentWithLabelsResponse $response */
$response = $api->CreateReverseInverseShipmentWithLabels($request);
} catch (Exception\ExceptionInterface $e) {
echo "Error: " . $e->getMessage();
if ($debug && $e instanceof Exception\ClientException) {
echo "\nRequest:\n" . $e->request;
echo "\nResponse:\n" . $e->response;
}
exit();
}
echo get_class($response) . "\n";
// Result
/** @var \Ekyna\Component\Dpd\EPrint\Model\ShipmentWithLabels $result */
$result = $response->CreateReverseInverseShipmentWithLabelsResult;
echo get_class($result) . "\n";
// Shipment
$shipment = $result->shipment;
echo "Tracking URL: {$shipment->getTrackingUrl()}\n";
// Labels
/** @var \Ekyna\Component\Dpd\EPrint\Model\Label $label */
$idx = 0;
foreach ($result->labels as $label) {
$idx++;
echo "Label#$idx: " . strlen($label->label) . " (" . $label->type . ")\n";
if (false === $im = imagecreatefromstring($label->label)) {
throw new \Exception("Failed to retrieve the shipment label data.");
}
$filename = $labelDir . DIRECTORY_SEPARATOR . sprintf('%s_%s.png', 'reference', $idx);
if (file_exists($filename)) unlink($filename);
imagepng($im, $filename);
imagedestroy($im);
}