Подключение к Magento API с помощью SOAP - PullRequest
7 голосов
/ 15 ноября 2011

Я пытаюсь проследить туториал при подключении к magento API с помощью Soap, но я уже застрял?Кажется, на моем сервере установлен SOAP, так как я могу найти файл? Wsld, и он отображает файл xml.

Я настроил пользователя и роль в веб-сервисах администратора magento.

i 'В этом уроке меня смущают 2 вещи:

  1. Выбор мыльного клиента. В этом уроке мы будем предполагать использование PHP SoapClient. что это, где я могу его найти ?
  2. Вход с помощью SOAP-клиента

"Итак, давайте создадим простой PHP-скрипт, который позволит нам войти вMagento через SOAP. Логика заключается в том, что сначала нам нужно инициализировать новый объект SoapClient с аргументом URL-адреса Magento SOAP. "

 // Magento login information 
 $mage_url = 'http://MAGENTO/api/?wsdl'; 
$mage_user = 'soap_user'; 
$mage_api_key = '********'; 
// Initialize the SOAP client 
$soap = new SoapClient( $mage_url ); 
// Login to Magento 
$session_id = $soap->login( $mage_user, $mage_api_key );

Где вы создаете этот скрипт - это простойphp файл?и как вы на самом деле делаете звонок - вы просто просматриваете его?

http://blog.opensourcenetwork.eu/tutorials/guru/connecting-through-soap-with-magento-1

Большое спасибо заранее

Ответы [ 5 ]

13 голосов
/ 16 ноября 2011

Вы помещаете это в новый пустой файл.Сохраните это как name.php и запустите это на вашем сервере:

<?php
        $host = "127.0.0.1/magento/index.php"; //our online shop url
        $client = new SoapClient("http://".$host."/api/soap/?wsdl"); //soap handle
        $apiuser= "user"; //webservice user login
        $apikey = "key"; //webservice user pass
        $action = "sales_order.list"; //an action to call later (loading Sales Order List)
        try { 

          $sess_id= $client->login($apiuser, $apikey); //we do login


        print_r($client->call($sess_id, $action));
        }
        catch (Exception $e) { //while an error has occured
            echo "==> Error: ".$e->getMessage(); //we print this
               exit();
        }
?>

С уважением Боти

3 голосов
/ 06 октября 2013

это очень помогло спасибо

ответил 16.11.11 в 7:26 боти

Вы помещаете это в новый пустой файл. Сохраните это как name.php и запустите это на вашем сервере:

<?php
        $host = "127.0.0.1/magento/index.php"; //our online shop url
        $client = new SoapClient("http://".$host."/api/soap/?wsdl"); //soap handle
        $apiuser= "user"; //webservice user login
        $apikey = "key"; //webservice user pass
        $action = "sales_order.list"; //an action to call later (loading Sales Order List)
        try { 
      $sess_id= $client->login($apiuser, $apikey); //we do login


    print_r($client->call($sess_id, $action));
    }
    catch (Exception $e) { //while an error has occured
        echo "==> Error: ".$e->getMessage(); //we print this
           exit();
    }
?>

Привет все,

Решение:

из админ панели Magento ...

System -> Configuration -> Web -> Url Options -> Add Store Code to Urls = NO

И !!!!

Auto-redirect to Base URL = NO

Затем добавьте пользователя с

System -> Web Services-> Users

Заставить пользователя использовать мыльный клиент

Тогда сделайте роль из

System -> Web Services -> Roles

Присоедините все ресурсы, если вы хотите сделать это таким образом.

Это важно! добавьте эту роль только что созданному пользователю

Также убедитесь, что PHP.ini из

;extension=php_soap.dll

до

extension=php_soap.dll

Тогда вы можете связаться с этим пользователем, я использую этот код

$proxy = new SoapClient(’http://localhost/api/soap/?wsdl’,array( 
$apiuser = "user", 
$apikey = "key"));

скачать soapui с forgesource http://sourceforge.net/projects/soapui/?source=directory

<soapenv:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:Magento">
   <soapenv:Header/>
   <soapenv:Body>
      <urn:login soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
         <username xsi:type="xsd:string">username</username>
         <apiKey xsi:type="xsd:string">password</apiKey>
      </urn:login>
   </soapenv:Body>
</soapenv:Envelope>

Получите ссылку нашего сервера со ссылкой ниже и сохраните как magentoV2.wsdl

http://localhost/index.php/api/v2_soap?wsdl

Я надеюсь, что это поможет другим, потому что я потерял пол дня, чтобы понять эти простые вещи, потому что не было достаточно подробной информации в одном месте.

HR

3 голосов
/ 15 ноября 2011
  1. Да, Soap Client, на который ссылаются документы, это встроенный объект PHP SoapClient.Существует множество мыльных клиентов, написанных на множестве разных языков.SOAP, как протокол, не зависит от языка / платформы.(хотя отдельные языки / платформы, как правило, имеют свои причуды).Magento предоставляет Soap Server , с которым можно взаимодействовать через клиента.Это архитектура клиент / сервер.

  2. Вы называете этот скрипт, как хотите.Вы можете загрузить его на отдельной веб-странице, запустить из командной строки $ php script.php, поместить во включаемые файлы, поместить в файлы классов другого фреймворка и т. Д.

1 голос
/ 15 ноября 2011

Они ссылаются на стандартную функциональность клиента SOAP в PHP (при условии, что я не могу прочитать опубликованную вами ссылку, но я предполагаю, что это так).Посмотрите здесь больше: http://php.net/manual/en/class.soapclient.php

0 голосов
/ 12 января 2017

По вашему вопросу я расскажу вам простые шаги, следуйте этим шагам, и вы получите результат, который мы требуем 1. Войдите в админ панель Magento, затем перейдите к system-->webservices-->SOAP RPC Roles create SOAP RPC roles 2. Перейдите к system-->webservices-->SOAP RPC users создать пользовательскую карту SOAP RPC этого пользователя с ролями. 3. Создайте одно имя PHP-файла как magentoapi.php внутри xampp-->htdocs-->folder(project name). 4. Здесь я приведу один пример, как получить информацию о клиенте. 5. Откройте файл magentoapi.php, создайте одну функцию с именем customerInfo

Ниже приведен код:

    function customerInfo($api_url, $api_user, $api_pwd) {

        $websites = '' . $api_url . "/index.php/api/soap/?wsdl";
        try {
            $client = new SoapClient($websites);
            $session = $client->login($api_user, $api_pwd);

            $result = $client->call($session, 'customer.info', '1');
            print_r($result);
        } catch (\SoapFault $e) {
            echo $e->getMessage();
        }
    }

Здесь, $api_url - это URL вашего магазина, $api_user = имя пользователя API, $api_pwd = пароль API. передайте это значение в функцию customerInfo. Мы получим полную информацию о конкретном клиенте

сделать то же самое для всех функций Вот справочный URL API http://devdocs.magento.com/guides/m1x/api/soap/customer/customer.list.html

Наконец, запустив приведенный ниже URL в браузере, вы получите результаты

http://localhost/yourprojectname/magentoapi.php?functionName=customerLogout&store_url=http://127.0.0.1/magento19&api_username=magento&api_key=123456

...