-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathgetDHLRetoure.php
118 lines (91 loc) · 3.88 KB
/
getDHLRetoure.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
114
115
116
117
118
<?php
function postDHLRetoure($sandbox, $dhl_base64, $dhl_api_base64, $receiver_id, $order_data, $labelName){
// Generated by curl-to-PHP: http://incarnate.github.io/curl-to-php/
$ch = curl_init();
$requestUrl = 'https://cig.dhl.de/services/production/rest/returns/';
if($sandbox){ $requestUrl = 'https://cig.dhl.de/services/sandbox/rest/returns/'; }
$xml = generateRetoureXML($receiver_id, $order_data);
curl_setopt($ch, CURLOPT_URL, $requestUrl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $xml);
$headers = array();
$headers[] = 'Accept: application/json';
$headers[] = 'Authorization: Basic ' . $dhl_api_base64;
$headers[] = 'Dpdhl-User-Authentication-Token: ' . $dhl_base64;
$headers[] = 'Content-Type: application/xml';
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$result = curl_exec($ch);
if (curl_errno($ch)) {
echo 'Error:' . curl_error($ch);
}
curl_close($ch);
$json = json_decode($result, true);
//var_dump, when error
if(!isset($json["labelData"])){
var_dump($result);
}
else{
saveShipmentLabel($json["labelData"], $labelName . '_' . $json["shipmentNumber"]);
}
return $json["shipmentNumber"];
}
//TODO Country
function generateRetoureXML($receiver_id, $order_data){
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<ReturnOrder>
<receiverId>' . $receiver_id . '</receiverId>
<customerReference>' . $order_data["orderNumber"] . '</customerReference>
<senderAddress>
<name1>' . $order_data["deliveryAddress"]["firstName"] . " " . $order_data["deliveryAddress"]["lastName"] . '</name1>
<name2></name2>
<name3></name3>
<streetName>' . $order_data["deliveryAddress"]["street"] . '</streetName>
<houseNumber>' . $order_data["deliveryAddress"]["houseNumber"] . '</houseNumber>
<postCode>' . $order_data["deliveryAddress"]["zipCode"] . '</postCode>
<city>' . $order_data["deliveryAddress"]["city"] . '</city>
<country>
<countryISOCode>DE</countryISOCode>
</country>
</senderAddress>
<email>maik.riedlsperger@loechel-industriebedarf.de</email>
<returnDocumentType>BOTH</returnDocumentType>
</ReturnOrder>';
$xml = preg_replace('/\t+/', ' ', $xml); //Remove tab
$xml = str_replace('\\r\\n', ' ', $xml); //Remove line breaks
return $xml;
}
function generateRetoureXMLTest($receiver_id){
$xml = '<?xml version="1.0" encoding="UTF-8"?>
<ReturnOrder>
<receiverId>' . $receiver_id . '</receiverId>
<customerReference>2219820821</customerReference>
<shipmentReference>cbn4bggmw3</shipmentReference>
<senderAddress>
<name1>Wolfgang Rodriguez</name1>
<name2></name2>
<name3></name3>
<streetName>Am Erlenborn</streetName>
<houseNumber>14</houseNumber>
<postCode>63633</postCode>
<city>Birstein</city>
<country>
<countryISOCode>DE</countryISOCode>
</country>
</senderAddress>
<email>maik.riedlsperger@loechel-industriebedarf.de</email>
<returnDocumentType>BOTH</returnDocumentType>
</ReturnOrder>';
$xml = preg_replace('/\t+/', ' ', $xml); //Remove tab
$xml = str_replace('\\r\\n', ' ', $xml); //Remove line breaks
return $xml;
}
function saveShipmentLabel($base64, $fileName){
$data = base64_decode($base64);
$filePath = 'pdf/' . $fileName . '.pdf';
//Save locally
file_put_contents($filePath, $data);
//Upload to ftp
require_once 'FTPConnector.php';
saveToFTP($filePath);
}