Skip to content

Instantly share code, notes, and snippets.

@kalbac
Last active February 5, 2021 12:57
Show Gist options
  • Select an option

  • Save kalbac/98dfd418abaa89c6f5cef3e9834074ac to your computer and use it in GitHub Desktop.

Select an option

Save kalbac/98dfd418abaa89c6f5cef3e9834074ac to your computer and use it in GitHub Desktop.
Формирования печатной формы этикетки для упаковки в формате pdf [API СДЭК версии 1.5]
<?php
/*
* Сниппет предназначен для отправки XML запроса на сервер СДЭК для получения этикети ШК-места.
* Имейте ввиду, что данный код не будет работать сам по себе, его нужно обернуть в какое то событие (хук) для его последующего вызова.
* По вопросам обращайтесь на емайл [email protected] или через контактную форму https://woodev.ru/support
* Нижеприведённый код необходимо вставить в файл functions.php вашей активной темы.
* Автор кода не несёт отвественности в случае возникновеня каких либо проблем при использовании данного кода.
* Любые изменения которые вы вносите в код вашего сайта, вы делаете это на свой страх и риск.
* Код представлен для ознакомления как есть. Вы должны понимать что с этим кодом нужно делать. Если нет то обатитесь к профессионалам.
*/
$order_id = 0; //ID нужного заказа. Ноль нужно заменить на нужное значение. А вообще оно должно быть динамическое.
$order = new WC_Edostavka_Orders( $order_id );
$current_date = date('Y-m-d');
$tracking_code = method_exists( $order, 'get_meta' ) ? $order->get_meta( '_edostavka_tracking_code' ) : $order->edostavka_tracking_code; //Получаем трек код из заказа
/*
* Формируем данные для формирования XML запроса
*/
$xml_data = array(
'OrdersPackagesPrint' => array(
'@attributes' => array(
'Date' => $current_date,
'Account' => $order->login,
'Secure' => md5( $date . '&' . $order->secret ),
'OrderCount' => 1,
'CopyCount' => 1,
'PrintFormat' => 'A4'
),
'Order' => array(
'@attributes' => array(
'DispatchNumber' => $tracking_code
)
)
)
);
/*
* Отпраляем данные на сервер СДЭК
*/
$response = wp_safe_remote_post( 'https://integration.cdek.ru/ordersPackagesPrint', array(
'body' => array( 'xml_request' => $order->xml->generate_response( $xml_data ) )
) );
if( ! is_wp_error( $response ) && wp_remote_retrieve_response_code( $response ) == 200 ) {
$body = wc_edostavka_xml_to_array( wp_remote_retrieve_body( $response ) ); //Переменная $body будет содержать ответ от сервера СДЭК
}
?>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment