1. Import

This commit is contained in:
2026-03-29 10:34:57 +02:00
parent b0e00c1259
commit a1129565af
4899 changed files with 3007593 additions and 0 deletions

View File

@@ -0,0 +1,437 @@
<?php
/*=======================================================================
*
* auto_response_HLS.php
*
* CUSTOMER: HHA => HLS
*
=======================================================================*/
// Special implementation for customer
function sendResponse($stateEvent, $timestamp, $jbId, $trId, $trSort, $tr1CommissionNo = "", $crId = "", $crSid, $trSignName, $trSign, $gdc_01 = "", $gdc_02 = "", $gdc_03 = "", $gdc_04 = "", $gdc_05 = "") {
global $server, $port;
$isProductive = true;
$callback = trim($gdc_03); // "shipments", "tours", ....
if ($callback == "") :
// Different servers for differenz stateEvents
if ($stateEvent == "0" || $stateEvent == "1") :
$callback = "shipments";
$numOfStations = getCountOfTable("tour", "jb_id = '" . $jbId . "'");
if ($numOfStations != "" && is_numeric($numOfStations) && $numOfStations >= 3) :
$callback = "tours";
endif;
elseif ($stateEvent == "2") :
$callback = "shipments";
endif;
endif;
$callback .= "/"; // Add final slash
if ($isProductive) :
$server = "https://www.hls.com/api/courier_company/v1/" . $callback; // Productive
else :
$server = "https://staging.hls.com/api/courier_company/v1/" . $callback; // Test
endif;
// $crEid = "";
// if ($crId != "" && $crId != "0") :
// $crEid = getFieldValueFromId("courier","cr_id",$crId,"cr_eid");
// endif;
$shipmentId = $gdc_01; // Init
// if ($jbId != "" && $trSort != "") :
if ($trId != "") :
// $shipmentId = getFieldValueFromClause("genericdatacontainer", "gdc_content", "gdc_obj_type = 'tr' AND gdc_gen_fieldname = 'info_0' AND gdc_obj_id = '" . $jbId . "' AND gdc_context = '" . $trSort . "'");
$shipmentId = getFieldValueFromClause("genericdatacontainer", "gdc_content", "gdc_obj_type = 'tr' AND gdc_gen_fieldname = 'info_0' AND gdc_obj_id = '" . $trId . "'");
if ($shipmentId == "") :
$shipmentId = $gdc_01;
if ($shipmentId == "") :
$shipmentId = getFieldValueFromClause("genericdatacontainer", "gdc_content", "gdc_obj_type = 'jb' AND gdc_gen_fieldname = 'info_0' AND gdc_obj_id = '" . $jbId . "'");
endif;
endif;
endif;
// $courierId = $crEid;
$courierId = $crSid;
if ($courierId == "") :
$courierId = $gdc_02;
if ($courierId == "") :
$courierId = "5329aaec8e06c724ec000002";
endif;
endif;
// Select API-Key from headquarters of the courier
$currHq = "";
if ($crId != "") :
$currHq = getFieldValueFromId("courier","cr_id",$crId,"hq_id");
endif;
$apiKey = "533183292ad6210fd500001700000000OiEV3a6pl3AdL5qDQ79aCl22nBR6roCE";
if ($currHq == "1") :
$apiKey = "53319500e26daf03a300001b00000000clbCnJ3K9XjQ6XSbSPZNgmSoiKNO9LNh";
$courierId = "5335a7f8e26daf03a300008f00000000";
elseif ($currHq == "2") :
$apiKey = "53354a542ad6210fd500006000000000VXBWIEM9q5Dh6SJcoYb1PRTfGAB9ehzV";
// $courierId = "54116e80281ec24aff000143";
$courierId = "54116e80281ec24aff00014300000000";
elseif ($currHq == "3") :
$apiKey = "ynPIWypFHvyQuykyU84SK77iOT_Xkl9u2BS9ExTwsY1F_cBx3OUi-DREjoBSxQpO";
$courierId = "tHp_T3IsLKbTILsuBamACbmDGRonkwx_";
elseif ($currHq == "4") :
$apiKey = "53318d0b2ad6210fd500001900000000-uBBN9P_218rgLiex9lonWn2-NO1YxaC";
$courierId = "5335a6b4e26daf03a300008e00000000";
elseif ($currHq == "5") :
$apiKey = "7SKbzWxaW9lcos49v2T6tASVBGeE7bSLtIfdp8zOfhFxGHNKPvLQYD0cIML3a3ZO";
$courierId = "mlw2UpV--RkiqIvK1Vf9I1Pjkd2sY-hw";
elseif ($currHq == "6") :
$apiKey = "";
$courierId = "";
elseif ($currHq == "7") :
$apiKey = "5331922de26daf03a300001900000000R0jD-YV20LTyFMbz1GaU1LRv1iejXSg2";
$courierId = "5335a5de2ad6210fd500006b";
elseif ($currHq == "8") :
$apiKey = "";
$courierId = "";
elseif ($currHq == "9") :
$apiKey = "XV2xAbdXu9qvEkmy7bt5-O_4fR1rlToUR4OjgyKf7437si404snx5oZyazUtVprB";
$courierId = "XV2xAbdXu9qvEkmy7bt5-O_4fR1rlToU";
elseif ($currHq == "10") :
$apiKey = "";
$courierId = "";
elseif ($currHq == "11") :
if ($isProductive) :
$apiKey = "533183292ad6210fd500001700000000OiEV3a6pl3AdL5qDQ79aCl22nBR6roCE";
$courierId = "5335a5152ad6210fd500006a";
else :
$apiKey = "I1PDEq_wy1zLKNYblJklO-k-42W02rOI5Ei6YK22mV_CYJm8jDoRAmCBzNw8RSbQ"; // 5335a5152ad6210fd500006a00000000JM6QrjNtF6snXEZEabRrthrOX7pcvkcq I1PDEq_wy1zLKNYblJklO-k-42W02rOI5Ei6YK22mV_CYJm8jDoRAmCBzNw8RSbQ
$courierId = "5335a5152ad6210fd500006a00000000";
endif;
elseif ($currHq == "90") :
$apiKey = "";
$courierId = "";
endif;
// Convert timestamp from localtime to UTC [2014-03-01 10:00:00 20140301100000]
$timestamp = gmdate("Y-m-d H:i:s", mktime(substr($timestamp, 11, 2), substr($timestamp, 14,2), substr($timestamp, 17, 2), substr($timestamp, 5, 2), substr($timestamp, 8,2), substr($timestamp, 0, 4)));
$timestamp = substr($timestamp,0,10). "T" . substr($timestamp,11) . "Z";
$requestHeader = "";
$requestBody = "";
if ($stateEvent != "2" || $shipmentId != "") :
// Define header request
$requestHeader .= "PUT /" . $shipmentId . " HTTP/1.1\r\n";
$requestHeader .= "Host: " . $server . "\r\n";
// $requestHeader .= "Host: " . $server . $shipmentId . "\r\n";
$requestHeader .= "Content-Type: application/json; charset=utf-8\r\n";
$requestHeader .= "API-Key: " . $apiKey . " \r\n";
$requestHeader .= "Content-Length: LENGTH\r\n";
/*
{
"CCIMessageHeader":
{
"SenderOrganisation": "<Homepage of the message sender>",
"SenderGLN"*: "<Global location number (GS1) sender>",
"ReceiverOrganisation": "<Homepage of the message receiver>",
"ReceiverGLN"*: "<Global location number (GS1) receiver>",
"MessageType": "CCI_DEPOSIT_ADVICE",
"MessageTime": "<Timestamp when the message was sent>"
},
"CCIDepositAvis":
[
{
"DepartmentGLN": "<Global location number (GS1) CIT department>",
"CustomerOrganisation": "<Homepage of the customer>",
"CustomerGLN"*: "<Global location number (GS1) customer>",
"BranchNo": "<customer branch or device number>",
"BranchName"*: "<customer branch or device description>",
"LocationCode"*: "<unique CIT location code",
"Barcode": "<ID of package / safebag>",
"Amount": <declared amount>,
"ContainerType"*: "<Container code, defined by a codelist>",
"PickupTime": "<Timestamp for the requested pickup time>"
}
...
]
}
BEISPIEL:
POST https://<webamis>:3310/webamis/CCI20/depositadvice HTTP/1.1.
content-type: application/json
Authorization: Basic <username> <password>
{
"CCIMessageHeader":
{
"SenderOrganisation": "www.mycustomer.de",
"ReceiverOrganisation": "www.itkompetenz.de",
"ReceiverGLN": "4399901967878",
"MessageType": "CCI_DEPOSIT_ADVICE",
"MessageTime": "2017-07-16T13:22:45Z"
},
"CCIDepositAdvice":
[
{
"DepartmentGLN": "4399901967878",
"CustomerOrganisation": "www.mycustomer.de",
"BranchNo": 105,
"BranchName": "Testshop 105",
"Barcode": "00340356584051566423",
"LocationCode": "10078881"
"Amount": 1200.00,
"ContainerType": "SB",
"PickupTime": "2017-07-18T10:00:00Z"
},
{
"DepartmentGLN": "4399901967878",
"CustomerOrganisation": "www.mycustomer.de",
"BranchNo": 88103,
"BranchName": "ATM Mainstation",
"Barcode": "00340356584051566447",
"LocationCode": "10078895"
"Amount": 4500.00,
"ContainerType": "AC",
"PickupTime": "2017-07-18T10:30:00Z"
}
]
}
*/
$shipments = array();
$tmp_array = array();
if ($stateEvent == "0") {
$tmp_array['stateEvent'] = "accept";
// $tmp_array['waybillNr'] = $tr1CommissionNo;
$tmp_array['courierId'] = $courierId;
// $tmp_array['timestamps'] = array('acceptedAt' => $timestamp);
$tmp_array['acceptedAt'] = $timestamp;
}
else if ($stateEvent == "1") {
$tmp_array['stateEvent'] = "pickup";
// $tmp_array['waybillNr'] = "A-" . $tr1CommissionNo;
$tmp_array['courierId'] = $courierId;
// $tmp_array['timestamps'] = array('pickedupAt' => $timestamp);
$tmp_array['pickedupAt'] = $timestamp;
}
else if ($stateEvent == "2") {
// Get event state from GDC
$eventReason = getFieldValueFromClause("genericdatacontainer", "gdc_content", "gdc_obj_type = 'tr' AND gdc_gen_fieldname = 'del_code' AND gdc_obj_id = '" . $trId . "'");
if ($eventReason == "" || $eventReason == "0" || ($eventReason >= "100" && $eventReason <= "199")) :
// OK <=> dropoff
if ($eventReason == "101") :
$eventText = "with_contact";
elseif ($eventReason == "102") :
$eventText = "with_neighbour";
elseif ($eventReason == "103") :
$eventText = "in_safe_place";
else :
$eventText = "";
endif;
$tmp_array['stateEvent'] = "dropoff";
$tmp_array['finalConsignee'] = utf8_encode($trSignName);
$tmp_array['courierId'] = $courierId;
$tmp_array['dropOffSignature'] = $trSign;
// $tmp_array['dropOffSignatureUrl'] = "";
// $tmp_array['waybillNr'] = "A-" . $tr1CommissionNo;
// $tmp_array['waybillNrConfirmation'] = "A-" . $tr1CommissionNo;
// $tmp_array['timestamps'] = array('droppedoffAt' => $timestamp);
$tmp_array['droppedoffAt'] = $timestamp;
if ($eventText != "") :
$tmp_array['dropOffOutcome'] = $eventText;
endif;
elseif ($eventReason >= "1" && $eventReason <= "5") :
// Reasons
if ($eventReason == "1") :
$eventText = "address_not_found";
elseif ($eventReason == "2") :
$eventText = "recipient_not_found_at_address";
elseif ($eventReason == "3") :
$eventText = "recipient_not_there";
elseif ($eventReason == "4") :
$eventText = "acceptance_refused";
elseif ($eventReason == "5") :
$eventText = "allowed_time_exceeded";
else :
$eventText = "recipient_not_there";
endif;
$tmp_array['stateEvent'] = "undeliverable";
$tmp_array['undeliverableReason'] = $eventText;
// $tmp_array['courierId'] = $courierId;
// $tmp_array['dropOffSignature'] = $trSign;
// $tmp_array['dropOffSignatureUrl'] = "";
// $tmp_array['timestamps'] = array('undeliverableAt' => $timestamp);
$tmp_array['undeliverableAt'] = $timestamp;
elseif ($eventReason == "6") :
// Return to sender
$tmp_array['stateEvent'] = "returnedToSender";
$tmp_array['returnedToSenderContactName'] = "<Vorname Name>";
$tmp_array['returnedToSenderSignature'] = "<base 64 encoded image>";
$tmp_array['returnedToSenderSignatureUrl'] = "<URL alternativ>";
// $tmp_array['timestamps'] = array('returnedToSenderAt' => $timestamp);
$tmp_array['returnedToSenderAt'] = $timestamp;
endif;
}
$frameArray = array();
$frameArray['shipment'] = $tmp_array;
$shipments[] = $frameArray;
$requestBody .= json_encode($shipments);
// $requestBody .= array_to_json($shipments);
$requestBody = substr($requestBody,1,-1); // Remove "[" and "]"
// $requestBody = urlencode($requestBody);
$requestBodyLen = strlen($requestBody);
$requestHeader = str_replace("LENGTH", $requestBodyLen, $requestHeader);
endif;
$requestConfigArray = array();
if ($requestBody != "") :
$requestConfigArray["CURLOPT_URL"] = $server . $shipmentId;
$requestConfigArray["CURLOPT_HTTPHEADER"] = array('Content-Type: application/json', 'API-Key: ' . $apiKey);
$requestConfigArray["CURLOPT_RETURNTRANSFER"] = true;
$requestConfigArray["CURLOPT_CUSTOMREQUEST"] = "PUT";
$requestConfigArray["CURLOPT_POSTFIELDS"] = $requestBody; // JSON
$requestConfigArray["CURLOPT_PUT"] = true;
endif;
return $requestConfigArray;
}
/*
EVENT-RESPONSES [JSON]
// ACCEPT (Annahme des Auftrags durch den Fahrer)
{
"shipment":
{
"stateEvent":"accept",
"courierId":"<FAHRZEUG_NR>",
"acceptedAt":"<ZEITSTEMPEL_UTC>"
}
}
// PICKUP (Abholung)
{
"shipment":
{
"stateEvent":"pickup",
"courierId":"<FAHRZEUG_NR>",
"pickedupAt":"<ZEITSTEMPEL_UTC>"
}
}
// DROP-OFF (Anlieferung)
// [CASE DELIVERED]
{
"shipment":
{
"stateEvent":"dropoff",
"finalConsignee":"<KUNDENNAME_UNTERSCHRIFT_KLARTEXT>",
"courierId":"<FAHRZEUG_NR>",
"dropOffSignature":"<OPTIONAL::UNTERSCHRIFT_BASE_64_ENCODED_>",
"droppedoffAt":"<ZEITSTEMPEL_UTC>",
"dropOffOutcome":"<with_contact|with_neighbour|in_safe_place>",
}
}
// [CASE NOT DELIVERED]
{
"shipment":
{
"stateEvent":"dropoff",
"courierId":"<FAHRZEUG_NR>",
"stateEvent":"undeliverable",
"undeliverableReason'":"<address_not_found|recipient_not_found_at_address|recipient_not_there|acceptance_refused|allowed_time_exceeded|recipient_not_there>"
"undeliverableAt'":"<ZEITSTEMPEL_UTC>"
}
}
// ---------------------------------------------------------------
BEISPIEL:
// ACCEPT
{
"shipment":
{
"stateEvent":"accept", <= konstant
"courierId":"E1044", <= Stadtbote-Fahrzeugnummer
"acceptedAt":"2017-01-17T08:31:00Z" <= Annahmezeitpunkt
}
}
// PICKUP
{
"shipment":
{
"stateEvent":"pickup", <= konstant
"courierId":"E1044", <= Stadtbote-Fahrzeugnummer
"pickedupAt":"2017-01-17T08:55:16Z" <= Abholzeitpunkt
}
}
// DROP-OFF
// [CASE DELIVERED]
{
"shipment":
{
"stateEvent":"dropoff", <= konstant
"finalConsignee":"Meier", <= Klartext der unterschreibenden Person
"courierId":"E1044", <= Stadtbote-Fahrzeugnummer
"dropOffSignature":"iVBORw0KGgoAAAANSUhEUgAAAoAAAAEKAQMAAAC4wHZDAAAABlBM........",
"droppedoffAt":"2017-01-17T15:36:15Z", <= Auslieferzeitpunkt
"dropOffOutcome":"with_contact" <= einer der erfolgreichen Übergabearten
}
}
// [CASE NOT DELIVERED]
{
"shipment":
{
"stateEvent":"dropoff", <= konstant
"courierId":"E444", <= Stadtbote-Fahrzeugnummer
"stateEvent":"undeliverable", <= konstant
"undeliverableReason'":"recipient_not_there", <= einer der Gründe für die Nichtzustellunh
"undeliverableAt'":"2017-01-17T15:36:15Z" <= Zeitpunkt
}
}
---------------------------------------------------------------------------------
PRODUKTIVSYSTEM:
<auth>
<customer>STExxxxxx</customer>
<account>STExxxxxx</account>
<password>Eyyyyy</password>
<session_id>6759432675943265432564935643295643956439563</session_id>
<costcenter_name></costcenter_name>
</auth>
----
TESTSYSTEM:
https://mps1.assecutor.de/test_sb/tools/order_request.php
<auth>
<customer>STS910195</customer>
<account>STS910195</account>
<password>S10195_TEST</password>
<session_id>4e9800998ecf8427d04f1621a119799fd3d7545d3dc81e728d9d41802d63508455ca9038f00b20db4e74220d41d8ea6cd98c2f636f067f89cc14862c8d34e6d8</session_id>
<costcenter_name></costcenter_name>
</auth>
*/
?>