"CustomerMobilePhoneNumber": "+7 (499) 681-12-52",
"CustomerNumber": "21321321",
"CustomerRegion": "noregion",
"CustomerStreet": "dokukina",
"CustomerStreetType": "st.",
"CustomerSubregion": "X",
"CustomerSurname": "Surname X",
"CustomerZipCode": "101000",
"DirectDistributionCenterCode": "",
"DispatchDate": null,
"ExtraParams": null,
"InsuranceCurrency": "RUB",
"InsuranceValue": 1000,
"OrderPlacementTimestamp": "/Date(1450794905000)/",
"ParcelBarcode": "",
"ParcelHeight": 10,
"ParcelLength": 10,
"ParcelWeight": 1,
"ParcelWidth": 10,
"ParcelshopCode": "935002",
"ReturnDistributionCenterCode": "",
"Services": ["DIRECT_DELIVERY"]
}
]
}';
//check json
//var_dump(json_decode($data, JSON_UNESCAPED_UNICODE));
echo $data;
// set up the request context
$options = array("http" => array(
"method" => "POST",
"header" => array("Authorization: Basic " . $access_token,
"Content-Type: application/json"),
"content" => $data
));
$context = stream_context_create($options);
// make the request
$response = file_get_contents($url, false, $context);
echo "<br/><br/><br/><br/>REST response... <br/><br/>";
echo $response;
}
function GetParcelShops_Soap($user, $pass, $bucode)
{
echo "<br/><br/><br/><br/>SOAP request... <br/><br/>";
$wsdl = "https://test-api. hermes-dpd. ru/WS/WebService. svc? singleWsdl";
$location = "https://test-api. hermes-dpd. ru/WS/";
$options = array("trace" => 1);
$soap = new SoapClient($wsdl, $options);
//security header
$header_part = "<wsse:Security SOAP-ENV:mustUnderstand='1'
xmlns:wsse='http://docs. oasis-open. org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'>
<wsse:UsernameToken wsu:Id='UsernameToken-1'
xmlns:wsu='http://docs. oasis-open. org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd'>
<wsse:Username>".$user."</wsse:Username>
<wsse:Password Type='http://docs. oasis-open. org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText'>".$pass."</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>";
$soap_var_header = new SoapVar($header_part, XSD_ANYXML, null, null, null);
$soap_header = new SoapHeader('https://test-api. hermes-dpd. ru/WS/', 'wsse', $soap_var_header);
$soap->__setSoapHeaders($soap_header);
//available methods
//var_dump($soap->__getFunctions());
// call function defined in soap server
$soap -> GetParcelShops(array("businessUnitCode" => $bucode));
echo "<br/>".htmlspecialchars($soap->__getLastRequest());
echo "<br/><br/>SOAP response... <br/><br/>";
echo "<br/>".htmlspecialchars($soap->__getLastResponse());
}
?>
Убедитесь, что для php включены модули расширения soap и openssl. Запрос можно выполнить на любых онлайн-сервисах, например, на http://phpfiddle. org/
Исходный код доступен по ссылке http://phpfiddle. org/main/code/e8ht-sjbw
Тестовая интеграция для 1С
Тестовый пример расположен в файле

Приложение
Список статусов посылок
Название на русском | Название на английском | Комментарий |
Новая | NEW | Информация корректно загружена. |
Доставлена на терминал (для доставки) | ARRIVED_AT_TERMINAL_PICKUP | Склад Hermes подтвердил получение посылки. |
Отправлена в пункт выдачи | OUT_FOR_DELIVERY | Посылка прошла сортировку и покинула склад перевозчика. |
Доставлена в пункт выдачи | DELIVERED_TO_DESTINATION | Посылка доставлена в пункт выдачи. |
Принята в пункте выдачи | ARRIVED_AT_PARCEL_SHOP | Посылка принята оператором пункта выдачи. |
Выдана | RECEIVED | Посылка выдана получателю. |
Просрочена | NON_PICKED | Истек срок хранения в пункте выдачи. Посылка находится в ПВЗ и ждет отправки. |
Отказ | REFUSED_BY_CUSTOMER | Отказ получателя от посылки. |
Отправлена на терминал (возврат) | UNDELIVERED | Посылка покинула пункт выдачи по истечению срока хранения. |
Доставлена на терминал (возврат) | ARRIVED_AT_TERMINAL_PICKUP_RETURN_WAY | Возврат. Посылка на доставке в промежуточном терминале. |
Отправлена поставщику | OUT_FOR_DELIVERY_RETURN_WAY | Возврат. Посылка в течение дня будет возвращена на складе Клиента. |
Получена поставщиком | DELIVERED_TO_DESTINATION_RETURN_WAY | Возврат. Посылка принята на складе Клиента. |
Ошибочно доставлена в пункт выдачи | MISROUTED | Посылка доставлена не по тому адресу пункта выдачи. |
Перенаправлена в другой пункт выдачи | MISDIRECTED | Посылка перенаправляется в ближайший пункт выдачи. |
В пути между терминалами | ON_ROAD_BETWEEN_TERMINALS | Посылка находится на доставке в пункт выдачи между региональными терминалами. Промежуточный статус доставки. |
Доставлена на транзитный терминал | ARRIVED_AT_TERMINAL_TRANSIT | Посылка находится в транзитном терминале. Промежуточный статус доставки. |
Доставлена на терминал доставки | ARRIVED_AT_TERMINAL_DELIVERY | Отправление находится в терминале доставки. Промежуточный статус доставки. |
Доставка не состоялась | DELIVERY_NOT_DONE | Доставка в пункт выдачи не состоялась. Причину нужно смотреть индивидуально по каждой посылке. |
Потеряна при доставке | LOST_DELIVERY | Потеря посылки в момент доставки. |
Проблемы при доставке | PROBLEM_DELIVERY | Проблемы при доставке. Причину необходимо уточнить. |
Возвращена с маршрута | RETURNED_FROM_DELIVERY | Доставка в пункт выдачи не удалась, посылка вернулась на терминал. |
В пути между терминалами (возврат) | ON_ROAD_BETWEEN_TERMINALS_RETURN_WAY | Посылка возвращается на склад Клиента и находится на доставке между региональными терминалами. |
Доставлена на транзитный терминал (возврат) | ARRIVED_AT_TERMINAL_TRANSIT_RETURN_WAY | Возвращаемая посылка находится в транзитном терминале. |
Доставлена на терминал доставки (возврат) | ARRIVED_AT_TERMINAL_DELIVERY_RETURN_WAY | Возвращаемая посылка находится на терминале города Клиента. |
Доставка не состоялась (возврат) | DELIVERY_NOT_DONE_RETURN_WAY | Доставка посылок на склад Клиента не состоялась. |
Потеряна при доставке (возврат) | LOST_DELIVERY_RETURN_WAY | Возвращаемая посылка потеряна в момент доставки. |
Проблемы при доставке (возврат) | PROBLEM_DELIVERY_RETURN_WAY | Проблемы при доставке возвращаемых посылок. |
Возвращена с маршрута (возврат) | RETURNED_FROM_DELIVERY_RETURN_WAY | По не были переданы на складе Клиента и были возвращены на склад Hermes. |
Возврат поставщику подтвержден | RETURN_CONFIRMED | Возвращаемые посылки переданы отправителю. |
Принята в пункте выдачи (клиентский возврат) | CUSTOMER_RETURN_RECEIVED | C2B – Пункт выдачи принял посылку у получателя. |
Отправлена на терминал (клиентский возврат) | PICKED_UP_BY_COURIER_CUSTOMER_RETURN | C2B – Посылка отправлена из пункта выдачи. |
Доставлена на терминал (клиентский возврат) | ARRIVED_AT_TERMINAL_PICKUP_CUSTOMER_RETURN | C2B – Посылка проходит сортировку на складе перевозчика. |
В пути между терминалами (клиентский возврат) | ON_ROAD_BETWEEN_TERMINALS_CUSTOMER_RETURN | C2B – Посылка покинула склад перевозчика и находится в между терминалами перевозчика. |
Доставлена на транзитный терминал (клиентский возврат) | ARRIVED_AT_TERMINAL_TRANSIT_CUSTOMER_RETURN | C2B - Промежуточный статус доставки между терминалами перевозчика. |
Доставлена на терминал доставки (клиентский возврат) | ARRIVED_AT_TERMINAL_DELIVERY_CUSTOMER_RETURN | C2B – Посылка находится в терминале города Клиента |
Отправлена поставщику (клиентский возврат) | OUT_FOR_DELIVERY_CUSTOMER_RETURN | C2B – Посылка будет возвращена сегодня на склад Клиента |
Доставка не состоялась (клиентский возврат) | DELIVERY_NOT_DONE_CUSTOMER_RETURN | C2B – Возврат посылки на складе Клиента не состоялся. |
Потеряна при доставке (клиентский возврат) | LOST_DELIVERY_CUSTOMER_RETURN | C2B – Посылка потеряна в момент доставки на склад Клиента |
Проблемы при доставке (клиентский возврат) | PROBLEM_DELIVERY_CUSTOMER_RETURN | C2B – Проблемы при доставке посылки на склад Клиента |
Возвращена с маршрута (клиентский возврат) | RETURNED_FROM_DELIVERY_CUSTOMER_RETURN | C2B – Посылка возвращена на склад перевозчика из-за проблем в момент доставки на склад Клиента |
Получена поставщиком (клиентский возврат) | DELIVERED_TO_DESTINATION_CUSTOMER_RETURN | C2B – Посылка возвращена на склад Клиенту |
Возврат поставщику подтвержден (клиентский возврат) | CUSTOMER_RETURN_CONFIRMED | C2B - Склад Клиента подтвердил прием посылки от Hermes |
Инвентаризирована | INVENTORIED | В пункте выдачи проходит инвентаризация, посылка успешно прошла инвентаризацию и находится в ПВЗ. |
Потеряна | MISSING | Потеря посылки в пункте выдачи после инвентаризации. Статус не окончательный и требует дальнейшего разбирательства. |
Окончательно потеряна | LOST | По посылке было разбирательство, ее искали, но не нашли. Это означает, что она утеряна, по ней можно выставить претензию. |
Список причин отказа получателя от посылки
Название на русском (RefuseReasonName) | Название на английском (RefuseReasonSystemName) |
Отказ платить | REFUSED_BY_CUSTOMER_REFUSED_TO_PAY |
Посылка повреждена | REFUSED_BY_CUSTOMER_DAMAGED |
Повторная посылка | REFUSED_BY_CUSTOMER_DUPLICATE_PARCELS |
Неверное содержимое | REFUSED_BY_CUSTOMER_WRONG_CONTENT |
Формат даты в ответе сервисов
В некоторых случаях при вызове методов формат даты может быть в формате /Date(1449672181000+0300)/. В текущей версии API используется майкрософтовский сериализатор, он так выполняет сериализацию дат https://msdn. /ru-ru/library/bb412170(v=vs.110).aspx
Это число миллисекунд в часовом поясе GMT по-обычному (не летнему) времени, прошедшее с 1 января 1970 г. Это число может быть отрицательным для представления более раннего времени. Часть строки "+0500" является необязательной и показывает, что это время в формате Local, т. е. при десериализации оно должно быть преобразовано в местный часовой пояс. Если эта часть строки отсутствует, время десериализуется как UTC. Собственно, число (в данном случае "0500") и его знак (+ или -) игнорируются."
Т. е. дата 2015-12-22T14:35:05.000+0300 будет /Date(1450784105000+0300)/
В следующей версии API это уже исправлено, будет использоваться сериализатор Newtonsoft. Json и формат ISO 8601
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 |


