Перейти к содержанию
Форум поддержки пользователей VamShop

Добавить кэширование в сдэк, boxberry, проверить расчёт!

   (0 отзывов)

support
  • Статус: Pending

Вобщем я жаться не буду, вот мой гениально простой код кеширования, но с вас все же выяснить что там с весом и у меня еще вардамп ошибки давал .хотя он там пхооду не работает на аяксе, тк все же стоимость считается... еще конечно проверить код, но вроде все таки работает он// get HASH ID for filename
//$id=BoxCity
//md5($query);


// cache File Name
$file=SQL_CACHEDIR.'boxcity.vam';
//$gzfile=SQL_CACHEDIR.$id.'.gz';

// file life time
$expire = 24000; // 48 hours

if (file_exists($file) && filemtime($file) > (time() - $expire)) {

// get cached resulst
$data = file_get_contents($file);
}
else {
if (file_exists($file)) @unlink($file);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://api.boxberry.ru/json.php?token=".MODULE_SHIPPING_BOXBERRYPVZ_API_LOGIN."&method=ListCities&CountryCode=643");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$data = curl_exec($curl);
curl_close($curl);

//$stream = $data;
$fp = fopen($file,"w");
fwrite($fp, $data);
fclose($fp);

}
//Получаем список ПВЗ для указанного города
// cache File Name
$file2=SQL_CACHEDIR.'boxPVZ'.$boxberry_city_id.'.vam';
//$gzfile=SQL_CACHEDIR.$id.'.gz';

// file life time
$expire = 18000; // 24 hours

if (file_exists($file2) && filemtime($file2) > (time() - $expire)) {

// get cached resulst
$pvz_data = file_get_contents($file2);
}
else {
if (file_exists($file2)) @unlink($file2);

$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, "https://api.boxberry.ru/json.php?token=".MODULE_SHIPPING_BOXBERRYPVZ_API_LOGIN."&method=ListPoints&prepaid=1&CityCode=".$boxberry_city_id."&CountryCode=643");
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
$pvz_data = curl_exec($curl);

curl_close($curl);

//$stream = $data;
$fp2 = fopen($file2,"w");
fwrite($fp2, $pvz_data);
fclose($fp2);

}
$ret_pvz = json_decode($pvz_data, $assoc=true);
//echo var_dump($ret_pvz);

}Вот этот кусок ваш мне полностью непонятен, тоесть что он делает понятно, на зачем не очень if ($order->delivery['city'] != '') {
if ($_SESSION['cart']->show_total() > $sum_akcii) {
$shipping_skidka = ($shipping_cost / 100) * $skidka;
$shipping_cost = $shipping_cost - $shipping_skidka;
//$shipping_txt_min = '<b>Выберите пункт выдачи:</b>';
} else {
//$shipping_txt_min = 'При сумме товаров от <b>' . $sum_akcii . '</b> руб., на эту доставку действует скидка <font color="red"><b>' . $skidka . '%</b></font>. Осталось добавить товаров мин. на: ' .$min_dozakaz . ' руб. <br /> <b>Выберите пункт выдачи:</b>';
}
}

//if ($_SESSION['cart']->show_total() > $sum_akcii) {
//$skidka_text = ', применена скидка <b>' .$skidka. '%</b> [-' . $shipping_skidka . ' руб.]</b>';
//}

$count_pvz = count($ret_pvz);
$company = 'BoxBerry';

if(isset($_POST['pvz_boxberry'])) {
$_SESSION['pvz_boxberry'] = $_POST['pvz_boxberry'];
} else {
unset($_SESSION['pvz_boxberry']);
}

$check_city_pvz = vam_db_query("select distinct city, lat from markers_geocod where name = '" . $_SESSION['pvz_boxberry'] . "' and company = '" . $company . "'");
$city_pvz = vam_db_fetch_array($check_city_pvz);


// получение списка пвз, занесение в базу
$value = 0;

if ($count_pvz < 10000) { // чтобы вдруг какой нибудь весь огромный список всех городов не загрузился
$name_pvz[] = array('id' => '', 'text' => 'Выберите пункт выдачи заказов');
foreach($ret_pvz as $key => $value) {
if($ret_pvz[$key]['Code'] != '') {
$name_pvz1 = $ret_pvz[$key]['Code'] .': ' . $ret_pvz[$key]['AddressReduce'];
$name_pvz[] = array('id' => $name_pvz1, 'text' => $name_pvz1);
$city = $ret_pvz[$key]['CityName'];
$vremya = $ret_pvz[$key]['DeliveryPeriod'];

$worktime = $ret_pvz[$key]['WorkShedule'];

if ($city_pvz == '' && $_POST['pvz_boxberry'] != '') {
vam_db_query("insert into markers_geocod (name, address, city, company, worktime, telephon, lng, lat) values ('" . $name_pvz1 . "', '" . $ret_pvz[$key]['Address'] . "', '" . $city . "', '" . $company . "', '" . $worktime . "', '" . $ret_pvz[$key]['Phone'] . "', '" . $ret_pvz[$key]['attributes']['GPS'] . "', '" . $ret_pvz[$key]['GPS'] . "')");
}
$value++;
}
}
}

// добавление в файл результатов геокодирования

if (!$_GET['oID'])
require_once('includes/modules/yandex-map/geokoder_yandex_kart.php');По хорошему бы конечно знаете что встроить в эти модули? учет комиссии, тк она довольно большая там около 3% за прием платежей И это уходит в службу доставки тоесть еще зависит от суммы заказаА это дороже чем даже яндекс ща берет (2% на круг за все)Ну и для сдэка нужна опция сменить тариф либо в коде где-то и указание какой параметр передавать, думаю в коде проще всего сделать, но надо в апи посмотреть как эконом тариф выбрать при рассчетеRoman, 12:07сдек кстати при загрузке корзины сразу пишет тариф примерынй на город, а в боксбери модуле стоит 100 руб (стоимость использования модуля) тоже не совсем корректнов выборе адресов


Обратная связь


×
×
  • Создать...