Esempio n. 1
0
<?php

/**
 * Регистрация модуля на сервере MultiShip
 */
require '../header.php';
require '../lib.inc.php';
/**
 * В файле config.php находится массив идентичныйы $config, только перед ним стоит return
 */
$preInitApiConfig = (require 'config.php');
// URL для регистрации модуля на сервере MultiShip
$initApiUrl = INIT_API_URL . 'init';
// Конфигурация POST-параметров, необходимых для метода InitAPI::init()
$config = ['login' => $preInitApiConfig['login'], 'password' => $preInitApiConfig['password'], 'cmsName' => $preInitApiConfig['cmsName'], 'cmsVersion' => $preInitApiConfig['cmsVersion'], 'domain' => $preInitApiConfig['domain'], 'callbackUrl' => $preInitApiConfig['callbackUrl']];
// Отправляем запрос и получаем ответ
$result = sendRequestViaCurl($initApiUrl, $config);
// Вызываем обработчика ответа от CURL.
// В качестве второго параметра передаём функцию, которая произведёт запись полученной конфигурации в файл config.json
curlAnswerHandler($result, function () use($result) {
    file_put_contents('../config.json', $result['data']);
});
require '../footer.php';
require '../header.php';
require '../lib.inc.php';
// Файл с функцией, генерирующей secret_key
require 'sign.php';
// Название метода, к которому производится обращение
$method = 'confirmSenderOrders';
// Константа OPEN_API_URL определяется в lib.inc.php
$openApiUrl = OPEN_API_URL . $method;
try {
    // Читаем конфигурацию, сохранённую во время выполнения скрипта initApi/init.php
    // http://docs.multishipinitapiv1.apiary.io/
    $jsonConfig = readConfig();
    $postData = array('client_id' => $jsonConfig->config->clientId);
    //Читаем данные, полученные при создании заказа, чтобы "взять" order_id
    $jsonOrder = readConfig('createOrder.json');
    $postData['order_id'] = $jsonOrder->data->order_id;
    //планируемая дата отгрузки заказов в UNIX формате
    $postData['date_shipment'] = 1402401322;
    // Генерируем secret_key
    $secretKey = sign($jsonConfig->config->methodKeys->{$method}, $postData);
    // Добавляем полученный secret_key к массиву, который будет передан методом POST
    $postData['secret_key'] = $secretKey;
    $result = sendRequestViaCurl($openApiUrl, $postData);
    //Формируем файл, чтобы потом получить номер парсела для распечатки сопроводительных документов
    curlAnswerHandler($result, function () use($result) {
        file_put_contents('parcel_id.json', $result['data']);
    });
} catch (Exception $e) {
    echo '<p>Произошла неисправимая ошибка: ' . $e->getMessage() . '</p>';
}
require '../footer.php';
    $postData['order_delivery_cost'] = $searchDeliveryListAnswer->data[0]->cost_with_rules;
    // Если у клиента в системе MultiShip несколько магазинов, то нужно указать правильный набор из
    // магазина/реквизитов/склада
    $postData['order_sender'] = $jsonConfig->config->senders[0];
    $postData['order_requisite'] = $jsonConfig->config->requisites[0];
    $postData['order_warehouse'] = $jsonConfig->config->warehouses[0];
    // Предположено, что на сайте есть три разных поле. Если есть только одно, то recipient_last_name и
    // recipient_middle_name можно оставить пустыми, НО при этом нужно будет установить $postData['order_user_status_id']
    // в значение "-2"!
    $postData['recipient_first_name'] = 'Иван';
    // Получено от покупателя
    // direction_id из ответа OpenAPI::searchDeliveryList() у нужной СД
    $postData['delivery_direction'] = $searchDeliveryListAnswer->data[0]->direction_id;
    // delivery_id из ответа OpenAPI::searchDeliveryList() у нужной СД
    $postData['delivery_delivery'] = $searchDeliveryListAnswer->data[0]->delivery_id;
    // Раз не были указаны все обязательные поля, то это черновик
    $postData['order_user_status_id'] = -2;
    // Генерируем secret_key
    $secretKey = sign($jsonConfig->config->methodKeys->{$method}, $postData);
    // Добавляем полученный secret_key к массиву, который будет передан методом POST
    $postData['secret_key'] = $secretKey;
    // Отправляем запрос на сервер через CURL
    $result = sendRequestViaCurl($openApiUrl, $postData);
    // Вызываем обработчика ответа от CURL
    curlAnswerHandler($result, function () use($result) {
        file_put_contents('createOrder.json', $result['data']);
    });
} catch (Exception $e) {
    echo '<p>Произошла неисправимая ошибка: ' . $e->getMessage() . '</p>';
}
require '../footer.php';
Esempio n. 4
0
require '../lib.inc.php';
// Файл с функцией, генерирующей secret_key
require 'sign.php';
// Название метода, к которому производится обращение
$method = 'getIndex';
// Константа OPEN_API_URL определяется в lib.inc.php
$openApiUrl = OPEN_API_URL . $method;
try {
    // Читаем конфигурацию, сохранённую во время выполнения скрипта initApi/init.php
    // http://docs.multishipinitapiv1.apiary.io/
    $jsonConfig = readConfig();
    // Список необходимых параметров для каждого метода можно посмотреть на странице http://docs.multiship.apiary.io/
    $postData = array('client_id' => $jsonConfig->config->clientId);
    // Название города
    $postData['city'] = 'Волгоград';
    // Название улицы ( ул. или улица, пл. или площадь и прочие указания на то, что это, обязательны )
    $postData['street'] = 'ул. Циолковского';
    // Номер ( число ) дома
    $postData['house'] = '37';
    // Генерируем secret_key
    $secretKey = sign($jsonConfig->config->methodKeys->{$method}, $postData);
    // Добавляем полученный secret_key к массиву, который будет передан методом POST
    $postData['secret_key'] = $secretKey;
    // Отправляем запрос на сервер через CURL
    $result = sendRequestViaCurl($openApiUrl, $postData);
    // Вызываем обработчика ответа от CURL
    curlAnswerHandler($result);
} catch (Exception $e) {
    echo '<p>Произошла неисправимая ошибка: ' . $e->getMessage() . '</p>';
}
require '../footer.php';
    // Список необходимых параметров для каждого метода можно посмотреть на странице http://docs.multiship.apiary.io/
    $postData = array('client_id' => $jsonConfig->config->clientId);
    $postData['city_from'] = 'Москва';
    $postData['city_to'] = 'Тверь';
    // Суммарный вес заказа рассчитать не сложно, поэтому предположим, что он расчитан
    $postData['weight'] = '2.25';
    // Предположим, что есть три товара со следующими габаритами
    $itemDimensions = [[12, 10, 14], [14, 23, 2], [5, 12, 17]];
    // Рассчитываем общие габариты заказа
    $orderDimensions = dimensionAlgorithm($itemDimensions);
    $postData['height'] = $orderDimensions['A'];
    $postData['width'] = $orderDimensions['B'];
    $postData['length'] = $orderDimensions['C'];
    // Предположим, что нужно получить все СД, которые готовы доставить заказ прямо к заказчику
    $postData['delivery_type'] = 'todoor';
    // Лучше укащать, чтобы были дополнительные данные по страховке и кассовому сбору
    $postData['total_cost'] = 3280;
    // Генерируем secret_key
    $secretKey = sign($jsonConfig->config->methodKeys->{$method}, $postData);
    // Добавляем полученный secret_key к массиву, который будет передан методом POST
    $postData['secret_key'] = $secretKey;
    // Отправляем запрос на сервер через CURL
    $result = sendRequestViaCurl($openApiUrl, $postData);
    // Вызываем обработчика ответа от CURL
    curlAnswerHandler($result, function () use($result) {
        file_put_contents('searchDeliveryList.json', $result['data']);
    });
} catch (Exception $e) {
    echo '<p>Произошла неисправимая ошибка: ' . $e->getMessage() . '</p>';
}
require '../footer.php';