Авторизация в модуле "Доставка "СДЭК""

#
Re: Авторизация в модуле "Доставка "СДЭК""
это понятно...
95-я строка это:

$oResponse = $this->_getData(array('version'=>'1.0','dateExecute'=>$this->dateExecute,'authLogin'=>$this->_authLogin,'secure'=>$this->_getSecureAuthPassword(),tariffId'=>$tariffId,'senderCityPostCode'=>$this->_from,'receiverCityPostCode'=>$this->_postcode,'goods'=>array(0=>array('weight'=>$fOrderWeight,'volume'=>(($this->_volume) ? $this->_volume * pow(10, -9) : 1)))));

вот мне интересно это ошибка в коде или логин/пароль не верный?
#
Re: Авторизация в модуле "Доставка "СДЭК""
zefs,
написано же синтаксическая ошибка у тарифа

кто кавычку то в начале будет ставить

правильный код
<?php
class Shop_Delivery_HandlerXXX extends Shop_Delivery_Handler
{
   private $_authLogin = 'ЛОГИН_МНОГО_БУКВ_ЦИФР_КОТОРЫЙ_ДАЕТ_САМ_СДЭК';
   private $_authPassword = 'ПАРОЛЬ_МНОГО_БУКВ_ЦИФР_КОТОРЫЙ_ДАЕТ_САМ_СДЭК';
   public $dateExecute;
   // местоположение магазина (отправки), почтовый индекс, Ростов-на-Дону
   private $_from='344000';
   // весовой коэффициент (расчет ведется в килограммах)
   private $_coefficient = 0.001;
   // список тарифов
   private $_tariffList = array(
      1=>'Экспресс лайт дверь-дверь',
      3=>'Супер-экспресс до 18',
      4=>'Рассылка',
      5=>'Экономичный экспресс склад-склад',
      7=>'Международный экспресс документы',
      8=>'Международный экспресс грузы',
      10=>'Экспресс лайт склад-склад',
      11=>'Экспресс лайт склад-дверь',
      12=>'Экспресс лайт дверь-склад',
      15=>'Экспресс тяжеловесы склад-склад',
      16=>'Экспресс тяжеловесы склад-дверь',
      17=>'Экспресс тяжеловесы дверь-склад',
      18=>'Экспресс тяжеловесы дверь-дверь',
      57=>'Супер-экспресс до 9',
      58=>'Супер-экспресс до 10',
      59=>'Супер-экспресс до 12',
      60=>'Супер-экспресс до 14',
      61=>'Супер-экспресс до 16',
      62=>'Магистральный экспресс склад-склад',
      63=>'Магистральный супер-экспресс склад-склад',
      66=>'Блиц-экспресс 01',
      67=>'Блиц-экспресс 02',
      68=>'Блиц-экспресс 03',
      69=>'Блиц-экспресс 04',
      70=>'Блиц-экспресс 05',
      71=>'Блиц-экспресс 06',
      72=>'Блиц-экспресс 07',
      73=>'Блиц-экспресс 08',
      74=>'Блиц-экспресс 09',
      75=>'Блиц-экспресс 10',
      76=>'Блиц-экспресс 11',
      77=>'Блиц-экспресс 12',
      78=>'Блиц-экспресс 13',
      79=>'Блиц-экспресс 14',
      80=>'Блиц-экспресс 15',
      81=>'Блиц-экспресс 16',
      82=>'Блиц-экспресс 17',
      83=>'Блиц-экспресс 18',
      84=>'Блиц-экспресс 19',
      85=>'Блиц-экспресс 20',
      86=>'Блиц-экспресс 21',
      87=>'Блиц-экспресс 22',
      88=>'Блиц-экспресс 23',
      89=>'Блиц-экспресс 24'
   );
  
   private function _getData($aParams)
   {
      $ch = curl_init();
      curl_setopt($ch, CURLOPT_URL, 'http://api.edostavka.ru/calculator/calculate_price_by_json.php');
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json'));
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($aParams));
      curl_setopt($ch, 156, 5000);
      $oResponse = curl_exec($ch);
      curl_close($ch);
      return json_decode($oResponse);
   }
  
   public function execute()
   {
      $this->dateExecute = date('Y-m-d');

      $fOrderWeight = $this->_weight * $this->_coefficient;

      if($fOrderWeight == 0)
      {
         throw new Exception("Неправильный вес (Вес равен нулю)");
      }
      
      if($this->_postcode == '')
      {
         throw new Exception("Индекс места назначения не указан");
      }
      
      $aRetObjs = array();
      
      if(!is_null($this->_shopCountry->id) && $this->_shopCountry->id == 175)
      {
         foreach($this->_tariffList as $tariffId => $tariffDescription)
         {
            $oResponse = $this->_getData(array('version'=>'1.0','dateExecute'=>$this->dateExecute,'authLogin'=>$this->_authLogin,'secure'=>$this->_getSecureAuthPassword(),'tariffId'=>$tariffId,'senderCityPostCode'=>$this->_from,'receiverCityPostCode'=>$this->_postcode,'goods'=>array(0=>array('weight'=>$fOrderWeight,'volume'=>(($this->_volume) ? $this->_volume * pow(10, -9) : 1)))));

            if(is_object($oResponse) && property_exists($oResponse, 'result'))
            {
               $oCurrentDeliveryType = new StdClass();
               $oCurrentDeliveryType->price = floatval($oResponse->result->price);
               $oCurrentDeliveryType->description = $tariffDescription . " Минимальный срок доставки: {$oResponse->result->deliveryPeriodMin}, максимальный: {$oResponse->result->deliveryPeriodMax} дней";
               $aRetObjs[] = $oCurrentDeliveryType;
            }
         }
      }
      
      return $aRetObjs;
   }

   private function _getSecureAuthPassword()
   {
      return md5($this->dateExecute . '&' . $this->_authPassword);
   }
}
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Авторизация в модуле "Доставка "СДЭК""
а я ваш код взял и что тоне посмотрел)) спасибо! работает!
Только тарифов "посылка" нет, видимо нужен код тарифа, кто нибудь знает?

17=>'Экспресс тяжеловесы дверь-склад',
      18=>'Экспресс тяжеловесы дверь-дверь',
      57=>'Супер-экспресс до 9',
#
Re: Авторизация в модуле "Доставка "СДЭК""
zefs,
ну всякое бывает, когда на форуме пишешь, что то упустил

у меня клиенты пользуются обычно этими
136=>'"СДЭК": доставка до отделения (Посылка склад-склад)',
137=>'"СДЭК": доставка до двери (Посылка склад-дверь)',


тут все есть
API для интеграции с интернет-магазинами (только для клиентов с договором): скачать.
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Авторизация в модуле "Доставка "СДЭК""
alexpimnev,
спасибо большое! работает! правда показывает на 15-35% дороже чем в личном кабинете, но это уже не принципиально.
Спасибо!
#
Re: Авторизация в модуле "Доставка "СДЭК""
Добрый день,
Подскажите, пожалуйста, если этот код ошибок не выдает, но при этом ничего и не считает, то какой-то параметр в карточке товара не указан?
Модуль из магазина приложений работает нормально, но "Посылку" не считает, а этот модуль не считает вообще тот же заказ.
#
Re: Авторизация в модуле "Доставка "СДЭК""
Shanti002 писал(а):

ошибок на сайте может не быть, ответ должен быть, в ответе может быть ошибка, посмотрите что возвращает сдэк
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
#
Re: Авторизация в модуле "Доставка "СДЭК""
alexpimnev писал(а):

ошибок на сайте может не быть, ответ должен быть, в ответе может быть ошибка, посмотрите что возвращает сдэк
Все в порядке, я просто не внимательно читала, что логин и пароль нужно отдельно запрашивать другой.
Спасибо большое за код!
#
Re: Авторизация в модуле "Доставка "СДЭК""
Пришло письмо от СДЭК в связи с ФЗ 54. Придётся переписывать модуль.

Цитата:
Уважаемые партнеры!

В API CDEK внесены изменения:


1. В связи с изменениями в законе ФЗ-54, которые вступают в силу 01.07.2017, необходимо внести изменения в интеграционные модули. Для этого в протокол добавлены атрибуты:
- ставка НДС за единицу товара
- сумма НДС за единицу товара,
- ставка НДС за «дополнительный сбор за доставку с получателя»,
- сумма НДС с «доп. сбора за доставку с получателя».
Ставка НДС может содержать значения: БЕЗ НДС,  0%, 10%, 18%.
Условие применяется только для заказов с доставкой в РФ (получатель находится в РФ).
Просьба ко всем партнерам добавить это в свои модули, тогда СДЭК сможет в чеках получателям отображать суммы и отправлять эту информацию в ОФД.

2. Добавлены новые атрибуты в список список пунктов выдачи заказов (PvzList): страна, регион, есть ли примерочная, есть ли терминал оплаты, ближайшая остановка транспорта, сайт ПВЗ на странице СДЭК, ближайшая станция метро, график работы на неделю, все фото офиса, картинка «Как доехать») и 5 атрибутов для фильтров (по городу, региону, наличию терминала оплаты, по приему наложенного платежа, наличию примерочной, по максимальному весу, который можно отправить).
https://www.beregusha.com https://www.coffemol.ru
#
Re: Авторизация в модуле "Доставка "СДЭК""
Разработано новое решение
www.morozovpimnev.ru - создание, поддержка и продвижение сайтов | Наш канал https://asmp.su/channel
Авторизация