php Хелпердляслужбы$ b $bдоставкиСдэк,обновляеттолькоПВЗ,Безсинхронизациигородов

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了php Хелпердляслужбы$ b $bдоставкиСдэк,обновляеттолькоПВЗ,Безсинхронизациигородов相关的知识,希望对你有一定的参考价值。

<?php
namespace Artmix\Classes\Helpers;

use COption;

\cmodule::includeModule('sale');

class SdekHelper
{
    static $MODULE_ID = "ipol.sdek";
    public static $tableName = 'ipol_sdekcities';

    private function zajsonit($handle)
    {
        if (LANG_CHARSET !== 'UTF-8') {
            if (is_array($handle))
                foreach ($handle as $key => $val) {
                    unset($handle[$key]);
                    $key = self::zajsonit($key);
                    $handle[$key] = self::zajsonit($val);
                }
            else
                $handle = $GLOBALS['APPLICATION']->ConvertCharset($handle, LANG_CHARSET, 'UTF-8');
        }
        return $handle;
    }

    private function getBySId($sid)
    {
        global $DB;
        $sid = $DB->ForSql($sid);
        $strSql =
            "SELECT * " .
            "FROM " . self::$tableName . " " .
            "WHERE SDEK_ID = '" . $sid . "'";
        $res = $DB->Query($strSql, false, "File: " . __FILE__ . "<br>Line: " . __LINE__);

        return $res->Fetch();
    }

    private function sendToSDEK($XML = false, $where = false, $get = false)
    {
        if (!$where) return false;
        $where .= '.php' . (($get) ? "?" . $get : '');
        $ch = curl_init();
        if ($where == 'new_orders.php' && COption::GetOptionString(self::$MODULE_ID, 'crazyHosters', 'N') != 'Y')
            curl_setopt($ch, CURLOPT_URL, 'http://proxy.apiship.ru/cdek/new_orders.php');
        else {
            if (COption::GetOptionString(self::$MODULE_ID, 'useOldServer', 'N') == 'Y') {
                curl_setopt($ch, CURLOPT_URL, 'http://gw.edostavka.ru/' . $where);
                curl_setopt($ch, CURLOPT_PORT, 11443);
            } else
                curl_setopt($ch, CURLOPT_URL, 'http://int.cdek.ru/' . $where);
        }
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
        if ($XML) {
            curl_setopt($ch, CURLOPT_POST, TRUE);
            curl_setopt($ch, CURLOPT_POSTFIELDS, self::zajsonit(array('xml_request' => $XML)));
        }

        $result = curl_exec($ch);
        $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);

        return array(
            'code' => $code,
            'result' => $result
        );
    }

    public static function UpdateListPvz()
    {

        $errors = false;
        $request = self::sendToSDEK(false, 'pvzlist', 'type=ALL');
        if ($request['code'] == 200) {
            $arList = array();
            $xml = simplexml_load_string($request['result']);
            foreach ($xml as $key => $val) {
                $cityCode = (string)$val['CityCode'];
                if(!self::getBySId($cityCode))
                    continue;
                $type = (string)$val['Type'];
                $city = (string)$val["City"];
                if (strpos($city, '(') !== false)
                    $city = trim(substr($city, 0, strpos($city, '(')));
                if (strpos($city, ',') !== false)
                    $city = trim(substr($city, 0, strpos($city, ',')));
                $code = (string)$val["Code"];
                $arList[$type][$city][$code] = array(
                    'Name' => (string)$val['Name'],
                    'WorkTime' => (string)$val['WorkTime'],
                    'Address' => (string)$val['Address'],
                    'Phone' => (string)$val['Phone'],
                    'Note' => (string)$val['Note'],
                    'cX' => (string)$val['coordX'],
                    'cY' => (string)$val['coordY'],
                );
                if ($val->WeightLimit) {
                    $arList[$type][$city][$code]['WeightLim'] = array(
                        'MIN' => (float)$val->WeightLimit['WeightMin'],
                        'MAX' => (float)$val->WeightLimit['WeightMax']
                    );
                }
            }
        } else {
            $strInfo = $request['code'] . ".";
            $errors = true;
        }

        file_put_contents($_SERVER["DOCUMENT_ROOT"] . "/bitrix/js/" . self::$MODULE_ID . "/list.php", json_encode($arList));
        if ($strInfo && COption::GetOptionString(self::$MODULE_ID, 'logged', false)) {
            $file = fopen($_SERVER["DOCUMENT_ROOT"] . "/bitrix/js/" . self::$MODULE_ID . "/hint.txt", "a");
            fwrite($file, "<br><br><strong>" . date('d.m.Y H:i:s') . "</strong><br>" . $strInfo);
            fclose($file);
        }

        if (!COption::GetOptionString(self::$MODULE_ID, 'logged', false) && $request['code'] != 200)
            return array('code' => $request['code']);
        return !$errors;
    }
}

以上是关于php Хелпердляслужбы$ b $bдоставкиСдэк,обновляеттолькоПВЗ,Безсинхронизациигородов的主要内容,如果未能解决你的问题,请参考以下文章

php Вебсерверсклоненияпопадежамсловрусскихслов

scss Анимацияпульсациидляформы$ b $bИдляформыдобавляемперспективу,чтобы3Dбыло

La Sylphide 仙女

csharp Расчетиотображениепроцентовдляследующихлет

vbscript МакросдляOfficeудаляющийвселичныеданные(Инспектор)вовсехфайлахвыбраннойпапки。

text Проходпоспискувложеныхобъектов