Пример для работы с методами API для языка PHP


Для работы примера Вам необходимо:
1. Загрузить библиотеку NuSOAP
2. Загрузить библиотеку для облегчения взаимодействия с api системы apishops.com


<?
    set_time_limit(180);

    //Подключаем NuSOAP
    require_once('nusoap.php');
    //Подключаем библиотеку ApiShops
    require_once('api.lib.php');

    //инициируем клиента
    $asapi = new AS_API("ВАШ_ЛОГИН_В_АПИШОПС", "ХЕШ_ПАРОЛЯ_В_MD_5", "http://api.apishops.com/services/API?wsdl", "ID_ВАШЕГО САЙТА");

    ///////////////////////
    // получим список всех валют
    $curs = $asapi->getCurrencies();
    foreach ($curs as $id => $name) {
      print "\nid: " . $id . " name=" . $name;
    }

    ///////////////////////
    // получим список всех регионов
    $regs = $asapi->getRegions();
    foreach ($regs as $id => $name) {
      print "\nid: " . $id . " name=" . $name;
    }

    ///////////////////////
    // получим список регионов для определенного id товара
    $regs = $asapi->getRegionsForProducts('24067149');
    foreach ($regs as $id => $name) {
      print "\nid: " . $id . " name=" . $name;
    }

    ///////////////////////
    // получим список всех типов платежей
    $pays = $asapi->getPaymentTypes();
    foreach ($pays as $id => $name) {
      print "\nid: " . $id . " name=" . $name;
    }

    ///////////////////////
    // получим список всех типов доставки
    $dels = $asapi->getDeliveryTypes();
    foreach ($dels as $id => $name) {
      print "\nid: " . $id . " name=" . $name;
    }

    ///////////////////////
    // получим список всех пунктов самовывоза для id региона
    $sd = $asapi->getSelfDeliveriesForRegion(50);
    foreach ($sd as $v) {
      print "\n-----\nid: " . $v->getId();
      print "\nname=" . $v->getName();
      print "\naddress=" . $v->getAddress();
      print "\nphone=" . $v->getPhone();
      print "\nwork time=" . $v->getWorkTime();
      print "\ndeliveryTime=" . $v->getDeliveryTime();
    }

    ///////////////////////
    // получим список всех своих сайтов
    $states = $asapi->getOrderStates();
    foreach ($states as $id => $name) {
        print "\n" . $name . " id=" . $id;
    }

    ///////////////////////
    // получим список всех своих сайтов
    $sites = $asapi->getSites();
    foreach ($sites as $id => $url) {
        print "\n" . $url . " id=" . $id;
    }

    ///////////////////////
    // получим категории своего сайта (дочерние для id категории параметра)
    $cats = $asapi->getProductCategories(537);
    foreach ($cats as $id => $name) {
        print "\n" . $name . " id=" . $id;
    }

    ///////////////////////
    // получим товары в заданной категории с ценами в указанной валюте
    $prods = $asapi->getProducts(180, 0);
    foreach ($prods as $p) {
        print "\n" . $p->name . " id=" . $p->pid . ' price=' . $p->price;
    }

    ///////////////////////
    // получим товары в заданной категории с указанными id
    $prods = $asapi->getProductsByIds(180, '553779,635636');
    foreach ($prods as $p) {
        print "\n" . $p->name . " id=" . $p->id . " pid=" . $p->pid;
        print ' price=' . $p->price . ' url=' . $p->url;
    }

    ///////////////////////
    // получим цены для товаров из корзины в указанной валюте
    $items = $asapi->getCartItems('635636-1', 0);
    foreach ($items as $it) {
        print "\n" . $it->name . " qty=" . $it->count;
        print ' price=' . $it->price;
    }

    ///////////////////////
    // получим цены для доступных вариантов доставки и оплаты для товаров из корзины в указанной валюте и для выбранного региона
    $items = $asapi->getCartDelivery('635636-1', 0, 77);
    foreach ($items as $it) {
        print "\nitem id=" . $it->getPid() . " qty=" . $it->getCount();
        foreach ($it->getDeliveries() as $d) {
          print "\n+delivery id=" . $d->getId();
          foreach ($d->getPayments() as $p) {
            print "\n++payment id=" . $p->getId() . " sum=" . $p->getSum();
          }
        }
    }

    ///////////////////////
    // проверка заказа по корзине с товарами с указанными типами доставки и оплаты, в указанной валюте и для выбранного региона
    $check = $asapi->checkOrder('635636-1-0-0-0', 0, 77);
    if ($check->getOrder()) {
        print "order checked:\nprice=" . $check->getPrice();
        print "\ndelivery=" . $check->getDelivery();
        print "\nsum=" . $check->getSum();
        foreach ($check->getItems() as $it) {
          print "\n-----\n+product id=" . $it->getPid();
          print "\n+qty=" . $it->getCount();
          print "\n+price=" . $it->getPrice();
          print "\n+delivery=" . $it->getDelivery();
          print "\n+sum=" . $it->getSum();
          print "\n+days=" . $it->getDays();
          print "\n+date=" . $it->getDate();
        }
    } else {
        print "order check failed";
    }

    ///////////////////
    // отправка заказа
    $recipient = new AS_RECIPIENT(
        "ФИО (обязательно)",
        "Адрес (обязательно)",
        "Телефон (обязательно)",
        "Время, когда можно позвонить (обязательно)",
        "Дополнительный телефон",
        "Время когда можно позвонить по дополнительному телефону",
        "Комментарии к адресу доставки",

        //дальнейшие данные нужны для оформления товара на юр лицо, в противном случае их необходимо передавать пустыми
        "Юридический адрес",
        "Наименование банка",
        "Город банка",
        "БИК",
        "ИНН",
        "КПП",
        "Корреспондентский счет",
        "Наименование организации",
        "Код ОКПО",
        "Код ОКВЭД",
        "Расчетный счет",
        1,   //1 - Юридическое лицо, 2 - Индивидуальный предприниматель

        //Почта указывается как для физ так и для юр лиц
        "email"
    );

    //Примем произвольные входные данные для работы
    // артикул товара с сайта
    $articul = 12345678;
    // кол-во товара
    $count = 2;

    // Выбираем нужный регион, например
    $regionId = 5;

    // Выбираем способы доставки и оплаты, например
    $delivery = 0; // тип доставки
    $payment = 6;  // тип оплаты
    $sd = '';      // ID пункта самовывоза (если есть)

    //в случае доставки почтой для оформления доставки будет необходим индекс покупателя
    $zip = 214000;

    //формируем карточку заказа
    $cart = $id . "-" . $count . "-" . $delivery . "-" . $payment . "-" . $sd;

    $sum = 850.0; // возьмем из $checkOrder->getSum()
    $date = '20-05-2014'; // возьмем из $checkOrder->getDate()
    $np = null; // заменить на временную цену, если надо

    //Теперь все готово и проверено и  можно отправить сам заказ
    $submitOrder = $asapi->submitOrder($cart, 0, $regionId, $zip, $sum, $date, false, $recipient, "", "", null, null, $np);

    //выводим номер заказа
    echo($submitOrder->getOrderId());

    ///////////////////////
    // отправка заказа (быстрая форма)
    $np = null; // заменить на временную цену, если надо
    $orderId = $asapi->submitFastOrder('24598246', 1, 'Gandalf the Grey', '0-000-000', 'Valinor', '', '', '', '', '', '', null, $np);
    print "\nfast order, order id: " . $orderId;

    ////////////////////////////
    // получение списка заказов
    $orders = $asapi->getOrders(0, 5); // get 5 latest orders
    foreach ($orders as $o) {
      print "\n-----\norder id=" . $o->getId();
      print "\naddress=" . $o->getAddress();
      print "\nphone=" . $o->getPhone();
      print "\nemail=" . $o->getEmail();
      print "\npostId=" . $o->getPostId();
      foreach ($o->getItems() as $it) {
        print "\n+++\n+order item id=" . $it->getId();
        print "\n+statusId=" . $it->getStatusId();
        print "\n+count=" . $it->getCount();
        print "\n+commission=" . $it->getCommission();
      }
    }

    /////////////////////
    // получение списка заказов по их id
    $orders = $asapi->getOrdersInfo('964363, 1097468');
    foreach ($orders as $o) {
      print "\n-----\norder id=" . $o->getId();
      print "\nconfirmed=" . $o->getConfirmed();
      print "\naddress=" . $o->getAddress();
      print "\naddressCity=" . $o->getAddressCity();
      print "\nphone=" . $o->getPhone();
      print "\nemail=" . $o->getEmail();
      print "\npostId=" . $o->getPostId();
      foreach ($o->getItems() as $it) {
        print "\n+++\n+order item id=" . $it->getId();
        print "\n+statusId=" . $it->getStatusId();
        print "\n+productId=" . $it->getProductId();
        print "\n+articul=" . $it->getArticul();
        print "\n+count=" . $it->getCount();
        print "\n+commission=" . $it->getCommission();
      }
    }

    ///////////////////////////////////////
    // получение финансовой информации о пользователе
    $ui = $asapi->getFinancialInfo();
    print "\nbalance=" . $ui->getBalance();
    print "\navailable=" . $ui->getAvailable();
    print "\nblocked=" . $ui->getBlocked();
    print "\ncampaign expenses 24h=" . $ui->getCampaignExpense24h();
    print "\nwebsite profit 24h=" . $ui->getWebsiteProfit24h();
    print "\nreferral profit 24h=" . $ui->getReferralProfit24h();
    print "\nprofit 24h=" . $ui->getProfit24h();

    //////////////////////////
    // поиск производителей товара по имени
    $wpps = $asapi->searchWebmasterProductProducer('DAKINE');
    foreach ($wpps as $wpp) {
      print "\n-----\nwpp id=" . $wpp->getId();
      print "\nproductProducerId=" . $wpp->getProductProducerId();
      print "\nname=" . $wpp->getName();
      print "\nlatName=" . $wpp->getLatName();
      print "\ndesc=" . $wpp->getDesc();
      print "\nmeta keywords=" . $wpp->getMetaKeywords();
      print "\nmeta description=" . $wpp->getMetaDescription();
    }

    //////////////////////////
    // получим список товаров из категории

    $wpps = $asapi->searchWebmasterProductByWebCategoryId(555800);
    foreach ($wpps as $wp) {
      print "\n-----\nwp id=" . $wp->getId();
      print "\nname=" . $wp->getName();
      print "\nlatName=" . $wp->getLatName();
      print "\narticul=" . $wp->getArticul();
      print "\nmodel=" . $wp->getModel();
      print "\ntext=" . $wp->getText();
      print "\nshort name=" . $wp->getShortName();
      print "\nprice=" . $wp->getPrice();
      print "\nwebmaster category id=" . $wp->getWebmasterCategoryId();
      print "\ncategory id=" . $wp->getCategoryId();
      print "\nwebsite id=" . $wp->getWebsiteId();
      print "\nproduct id=" . $wp->getProductId();
      print "\nproducer id=" . $wp->getProducerId();
      print "\nnot for sale=" . $wp->getNotForSale();
      print "\ndesc=" . $wp->getDesc();
      print "\nkeywords=" . $wp->getKeywords();
      print "\nsort val=" . $wp->getSortVal();
      print "\ncreate date=" . $wp->getCreateDate();
      print "\nneed to upload=" . $wp->getNeedToUpload();
      print "\nimage url=" . $wp->getImgUrl();
      print "\ndefault image url=" . $wp->getDefaultImg();
      print "\nwebmaster product picture url=" . $wp->getWebmasterProductPictureUrl();
      print "\nwebmaster category url=" . $wp->getWebmasterCategoryUrl();
      print "\nwebmaster category name=" . $wp->getWebmasterCategoryName();
      print "\nwebmaster category lat name=" . $wp->getWebmasterCategoryLatName();
    }

    ////////////////////////////////////
    // получим список товаров через поиск по имени

    $wpps = $asapi->searchWebmasterProduct('iRobot Roomba 620');
    foreach ($wpps as $wp) {
      print "\n-----\nwp id=" . $wp->getId();
      print "\nname=" . $wp->getName();
      print "\nlatName=" . $wp->getLatName();
      print "\narticul=" . $wp->getArticul();
      print "\nmodel=" . $wp->getModel();
      print "\ntext=" . $wp->getText();
      print "\nshort name=" . $wp->getShortName();
      print "\nprice=" . $wp->getPrice();
      print "\nwebmaster category id=" . $wp->getWebmasterCategoryId();
      print "\ncategory id=" . $wp->getCategoryId();
      print "\nwebsite id=" . $wp->getWebsiteId();
      print "\nproduct id=" . $wp->getProductId();
      print "\nproducer id=" . $wp->getProducerId();
      print "\nnot for sale=" . $wp->getNotForSale();
      print "\ndesc=" . $wp->getDesc();
      print "\nkeywords=" . $wp->getKeywords();
      print "\nsort val=" . $wp->getSortVal();
      print "\ncreate date=" . $wp->getCreateDate();
      print "\nneed to upload=" . $wp->getNeedToUpload();
      print "\nimage url=" . $wp->getImgUrl();
      print "\ndefault image url=" . $wp->getDefaultImg();
      print "\nwebmaster product picture url=" . $wp->getWebmasterProductPictureUrl();
      print "\nwebmaster category url=" . $wp->getWebmasterCategoryUrl();
      print "\nwebmaster category name=" . $wp->getWebmasterCategoryName();
      print "\nwebmaster category lat name=" . $wp->getWebmasterCategoryLatName();
    }

    /////////////////////////////////////
    // получим список товаров через поиск по свойствам [prop-id1{val1|..|valn}][..]

    $wpps = $asapi->productSearch(555805, '[1238{big|small}]');
    foreach ($wpps as $wp) {
      print "\n-----\nwp id=" . $wp->getId();
      print "\nname=" . $wp->getName();
      print "\nlatName=" . $wp->getLatName();
      print "\narticul=" . $wp->getArticul();
      print "\nmodel=" . $wp->getModel();
      print "\ntext=" . $wp->getText();
      print "\nshort name=" . $wp->getShortName();
      print "\nprice=" . $wp->getPrice();
      print "\nwebmaster category id=" . $wp->getWebmasterCategoryId();
      print "\ncategory id=" . $wp->getCategoryId();
      print "\nwebsite id=" . $wp->getWebsiteId();
      print "\nproduct id=" . $wp->getProductId();
      print "\nproducer id=" . $wp->getProducerId();
      print "\nnot for sale=" . $wp->getNotForSale();
      print "\ndesc=" . $wp->getDesc();
      print "\nkeywords=" . $wp->getKeywords();
      print "\nsort val=" . $wp->getSortVal();
      print "\ncreate date=" . $wp->getCreateDate();
      print "\nneed to upload=" . $wp->getNeedToUpload();
      print "\nimage url=" . $wp->getImgUrl();
      print "\ndefault image url=" . $wp->getDefaultImg();
      print "\nwebmaster product picture url=" . $wp->getWebmasterProductPictureUrl();
      print "\nwebmaster category url=" . $wp->getWebmasterCategoryUrl();
      print "\nwebmaster category name=" . $wp->getWebmasterCategoryName();
      print "\nwebmaster category lat name=" . $wp->getWebmasterCategoryLatName();
    }

    //////////////////////////
    // сравнение нескольких товаров по свойствам

    $compare = $asapi->compareWebmasterProduct('24176705|23523344', false);
    foreach ($compare->getWebmasterProducts() as $wp) {
      print "\n-----\nwp id=" . $wp->getId();
      print "\nname=" . $wp->getName();
      print "\nimage url=" . $wp->getImageUrl();
    }
    print "\n-----\nProperties:";
    foreach ($compare->getValues() as $v) {
      print "\nname=" . $v->getName();
      $a = $v->getValues();
      for ($i=0;$i<count($a);$i++) {
        print "\nvalue (" . $i . ")=" . $a[$i];
      }
    }

    /////////////////////////
    // получение свойств для категории

    $flds = $asapi->categoryFields(555805);
    print "\n-----\nProperties:";
    foreach ($flds as $v) {
      print "\nname=" . $v->getName();
      $a = $v->getValues();
      for ($i=0;$i<count($a);$i++) {
        print "\n+value (" . $i . ")=" . $a[$i];
      }
    }

    ///////////////////////
    // создание тикета в поддержку

    $id = $asapi->createOrderTicket('John Carter','carter@mustdie.com','Your message here');
    if ($id) {
      print "\norder ticket created, id = " . $id;
    } else {
      print "\norder ticket not created";
    }

    ///////////////////////
    // получим системный id товара по его артикулу

    $id = $asapi->getProductIdForArticul(23523444);
    if ($id) {
      print "\nproduct id = " . $id;
    } else {
      print "\noperation failed";
    }

    ///////////////////////
    // переместим заказ в верх очереди на прозвон

    $r = $asapi->recallOrder(1234567);
    if ($r) {
      print "\ndone";
    } else {
      print "\noperation failed";
    }

    ////////////////////////
    // добавим товар к заказу

    $r = $asapi->addProductToOrder(1234567, 888888, 777777, 1);
    if ($r) {
      print "\ndone";
    } else {
      print "\noperation failed";
    }

    ////////////////////////
    // получим стоимость доставки для заказа

    $r = $asapi->getOrderDeliveryPrice(1097496, 78, 0, 0);
    if ($r) {
      print "\ntotal sum: " . $r->getTotalSum() . "\ndelivery sum: " . $r->getDeliverySum();
    } else {
      print "\noperation failed";
    }

    ////////////////////////
    // отмена заказа

    $r = $asapi->cancelOrder(12345673, 'your comments here');
    if ($r) {
      print "\ndone";
    } else {
      print "\noperation failed";
    }

    //////////////////////
    // подтверждение заказа

    $r = $asapi->confirmOrder(12345673, 72, '', 0, 0, 0,
        "Чапаев Василий Иванович", "chapai@mail.ru",
        "89109876543", "", "", 72, "", "Томск",
        "ул", "Новая", "15", "", "", "кв.", "16", 250, "комментарии оператора");

    if ($r) {
      print "\ndone";
    } else {
      print "\noperation failed";
    }

    //////////////////////
    // получение списка регионов для доставки по почте

    $regions = $asapi->getAddrRegions();
    foreach ($regions as $id => $name) {
      print "\n" . $name . " (id=" . $id . ")";
    }

    //////////////////////
    // получим список звонков по данному заказу

    $calls = $asapi->getCalls(1234567);
    foreach ($calls as $call) {
      print "\n------\nid=" . $call->getId();
      print "\ndate=" . $call->getDate();
      print "\nduration=" . $call->getDuration();
      print "\nphone=" . $call->getPhone();
      print "\nrate=" . $call->getRate();
      print "\nmp3=" . $call->getMp3();
    }

    ///////////////////////
    // поставим оценку за звонок

    $r = $asapi->rateCall(1234567, 'E10ADC3949BA59ABBE56E057F20F883E', 5);
    if ($r) {
      print "\ndone";
    } else {
      print "\noperation failed";
    }


?>

*Приведенный код охватывает базовые методы взаимодействия с апи, в нем отсутствует обработка ошибок и много других деталей, но для понятия принципов работы и оформления заказов этого достаточно

Пример, как с одностраничника передавать быстрый заказ


<?
    set_time_limit(180);
    require_once('nusoap.php');
    require_once('api.lib.php');

    $articul = ВАШ_АРТИКУЛ_ТОВАРА;
    $count = КОЛ_ВО_ТОВАРА;

    $asapi = new AS_API("ВАШ_ЛОГИН_В_АПИШОПС", "ХЕШ_ВАШЕГО_ПАРОЛЯ_В_MD_5", "http://api.apishops.com/services/API?wsdl", , "ID_ВАШЕГО САЙТА");
    $np = null; // присвоить тут временную цену товара, если надо
    $orderId = submitFastOrder($articul, $count, "fio", "89997776655", "utochnit pri zvonke", null, null, null, null, null, null, null, $np) {

    //выводим номер заказа
    echo($orderId);
?>