使用SOAP连接到Magento API

时间:2011-11-15 15:52:17

标签: magento soap soap-client

我正在尝试使用Tutorail连接到使用Soap的magento API,但我已经被卡住了? SOAP似乎安装在我的服务器上,因为我可以浏览到?wsld并显示一个xml文件。

我已在magento admin webservices中设置用户和角色。

我对教程中的两件事感到困惑

  1. 选择soap客户端,在本教程中,我们将假设使用PHP SoapClient。 这是我在哪里找到它
  2. 使用SOAP客户端进行日志记录
  3. “所以让我们创建一个简单的PHP脚本,允许我们通过SOAP登录Magento。逻辑在这里,我们首先需要使用Magento SOAP URL作为参数初始化一个新的SoapClient对象。”

     // 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 个答案:

答案 0 :(得分:13)

你把它放到一个新的空白文件中。将其保存为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();
        }
?>

关心boti

答案 1 :(得分:3)

  1. 是的,文档引用的Soap Client是内置的PHP SoapClient对象。有大量的肥皂客户端用多种不同的语言写成。 SOAP作为协议,与语言/平台无关。 (虽然个别语言/平台往往有自己的怪癖)。 Magento提供Soap 服务器,可以通过客户端进行交互。这是客户端/服务器架构。

  2. 您可以根据需要调用此脚本。您可以在单个网页中加载它,您可以从命令行$ php script.php运行它,您可以将它放在包含文件中,您可以将它放在另一个框架的类文件中等。

    < / LI>

答案 2 :(得分:3)

这有点非常感谢

  

11月16日回复,时间是7:26 boti

你把它放到一个新的空白文件中。将其保存为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

AND !!!!

Auto-redirect to Base URL = NO

然后从

添加用户
System -> Web Services-> Users

让用户使用soapclient

然后从

开始扮演角色
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"));

从forgesource下载soapui 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 :(得分:1)

它们指的是PHP的标准SOAP客户端功能(提供,我无法读取您发布的链接,但我假设它是)。请查看此处了解更多信息:http://php.net/manual/en/class.soapclient.php

答案 4 :(得分:0)

根据您的问题,我将通过简单的步骤通知您,按照这些步骤,您可以根据需要获得结果。 1.登录Magento管理面板,然后导航至system-->webservices-->SOAP RPC Roles create SOAP RPC roles  2.导航到system-->webservices-->SOAP RPC users使用角色创建SOAP RPC用户映射此用户。  3.在magentoapi.php内创建一个PHP文件名为xampp-->htdocs-->folder(project name)。  在这里,我举一个例子,如何获取客户信息。  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是您的商店网址,$api_user = api用户名,$api_pwd = api密码     将此值传递给customerInfo函数。我们将获得有关特定客户的完整信息

为所有功能做同样的事情 以下是API参考网址http://devdocs.magento.com/guides/m1x/api/soap/customer/customer.list.html

最后在浏览器中运行以下网址,您将获得结果

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