@ZolotarevKirill

PHP кто то писал модуль интеграции со СДЭК?

Добрый день!

Столкнулся с проблемой написания модуля интеграции со СДЭК. Честно говоря сложно понять документацию. Хотя видел я их не мало. Если кто то сталкивался с такой задачей, поделитесь п-та наработками ну или подскажите с чего начать? 28 листов их документации на умные мысли не навели.
  • Вопрос задан
  • 7382 просмотра
Пригласить эксперта
Ответы на вопрос 5
Думаю, что нужно по теме написать, что для интеграции(в том числе для калькуляции по ряду тарифов) необходимо иметь договор с СДЕК. Логина и пароля в ЛК не достаточно для интеграции, получив логин и пароль от ЛК СДЕК далее требуется написать на почту integrator@cdek.ru с почты указанной в договоре, в письме указать свой логин в ЛК СДЕК и попросить выдать секретные данные для интеграции интернет магазина с API СДЕК. Если у Вас секретных данных для API нет, то от библиотек толку особо не будет.

Без секретных данных можно считать например на тарифе с Id=1.

______________________________________________________________________________________
Пример если собираетесь написать свою библиотеку ниже
______________________________________________________________________________________
Вот пример объекта JSON(в виде строки) для запроса:

$query = '{"version":"1.0","dateExecute":"' . date("Y-m-d",time()+5500000) . '","senderCityId":"164","receiverCityId":"44","currency":"RUB","tariffList":[{"id":1}],"goods":[{"weight":"15","length":"40","width":"50","height":"60"}]}';

В авторизованном режиме так же требуется добавить в запрос "authLogin":"ЛогинВСДЕК" и "secure":"СекретныйКлючь" перед версией.

Эта информация пересылается по HTTPS на api.cdek.ru/calculator/calculate_tarifflist.php с обязательным указанием заголовка запроса Content-Type: application/json;charset=utf-8 (я использовал curl)

В ответ получаем объект в виде строки JSON, var_dump которого выглядит следующим образом:

object(stdClass)#4 (1) { ["result"]=> array(1) { [0]=> object(stdClass)#2 (3) { ["tariffId"]=> int(1) ["status"]=> bool(true) ["result"]=> object(stdClass)#3 (6) { ["price"]=> string(4) "2210" ["deliveryPeriodMin"]=> int(1) ["deliveryPeriodMax"]=> int(1) ["tariffId"]=> int(1) ["priceByCurrency"]=> int(2210) ["currency"]=> string(3) "RUB" } } } }
Ответ написан
Комментировать
alexkbs
@alexkbs
Попробуйте такую библиотеку: https://github.com/sanmai/cdek-sdk

Устанавливается очень просто:

composer require sanmai/cdek-sdk

Документация. Там же есть примеры. Есть телеграм-канал для поддержки.
Ответ написан
sabramovskikh
@sabramovskikh
Куча решений под всякие CMS, смотрите их
Ответ написан
Комментировать
kalbac
@kalbac
Wordpress Developer Full-Stack
@ebodrov
Разработчик-фрилансер
Коллеги, надеюсь кому-то сократит время на поиски быстрого решения. В качестве отсутствующего в официальной документации примера:

$myCurl = curl_init();
// подставляем свои значения в CURLOPT_URL (для client_id и client_secret)
curl_setopt_array($myCurl, array(
  CURLOPT_URL => "https://api.cdek.ru/v2/oauth/token?grant_type=client_credentials&client_id=...&client_secret=...",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => http_build_query(array('Content-Type: application/x-www-form-urlencoded'))
));

$result = curl_exec($myCurl);
curl_close($myCurl);
$result = json_decode($result, true);

$myCurl = curl_init("https://api.cdek.ru/v2/deliverypoints?region_code=81"); // тут меняем запросы и параметры, это, например, запрос информации о ПВЗ

curl_setopt($myCurl, CURLOPT_HTTPHEADER, array('Authorization: Bearer '. $result["access_token"]));
curl_setopt($myCurl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($myCurl, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($myCurl, CURLOPT_HEADER, false);


$result = curl_exec($myCurl);
$data = json_decode($result, true); // теперь в $data принятый массив со значениями
curl_close($myCurl);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы