【问题标题】:Connecting to Magento API with SOAP使用 SOAP 连接到 Magento API
【发布时间】:2011-11-15 15:52:16
【问题描述】:

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

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

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

  1. 选择一个soap客户端,在本教程中,我们将假设使用PHP SoapClient。 这是什么,我在哪里可以找到它
  2. 使用 SOAP 客户端进行日志记录

“让我们创建一个简单的 PHP 脚本,允许我们通过 SOAP 登录到 Magento。这里的逻辑是,我们首先需要初始化一个新的 SoapClient 对象,并将 Magento SOAP URL 作为参数。”

 // 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

在此先感谢

【问题讨论】:

    标签: magento soap soap-client


    【解决方案1】:

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

    问候博蒂

    【讨论】:

    • 抱歉延迟回复,所以我只是在浏览器中打开这个文件吗?在启用 Php_soap ext 的情况下运行 wamp server 2.1 我需要任何东西来运行脚本吗?非常感谢
    • 是的,仅在您的浏览器中运行此脚本。 ;) 您需要在 Magento 后端添加一个 Web 服务用户和角色。然后脚本应该可以工作:)
    • 您也可以从命令行运行这些 PHP SOAP 脚本,例如。 php 名​​称.php。这在测试时很有用,因为您不必在 HTML 中报告所有内容。
    • 如果我使用上面的代码运行,我会收到错误:==> 错误:错误找不到参数 mycode:justpaste.it/2pdue 谢谢....
    【解决方案2】:
    1. 是的,文档中提到的Soap Client 是PHP 内置的SoapClient 对象。有大量的肥皂客户用大量不同的语言编写。 SOAP 作为一种协议,是独立于语言/平台的。 (尽管个别语言/平台往往有自己的怪癖)。 Magento 提供了一个 Soap Server,可以通过客户端进行交互。这是客户端/服务器架构。

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

    【讨论】:

    • 谢谢,所以我需要对这个肥皂客户端做任何事情吗?我是否必须加载我不确定它是否适合?我写了一个 script.php - 我在问题中包含了确切的代码。如果我在浏览器中加载它,我得到的只是减去第一行的代码,再次感谢 PS 我一直使用你的 layoutviewer!
    • 无法编辑问题!这是我在脚本文件中使用的代码 127.0.0.1/perform-play/api/soap/?wsdl'); $sessionId = $proxy->login('soap-user', 'greeneyed'); $customerinfo = $proxy->customerInfo($sessionId, 1); print_r($customerinfo);
    • @Ledgemonkey 听起来您的网络服务器未设置为运行 PHP 脚本。在开始使用 SOAP Api 之类的东西之前,您可能需要快速查找 PHP 入门。
    • 再次感谢,抱歉回复延迟(格林威治标准时间),我需要一些快速的建议,我有一个客户希望在客户注册他的商店时收到一个 http 帖子,可以这很容易完成吗?有没有更好的方法来通过soap magento api来做到这一点?正如这个线程中所讨论的 - 非常感谢
    【解决方案3】:

    这帮助很大,谢谢

    回答于 2011 年 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
    

    并且!!!!

    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
    

    我希望这对其他人有所帮助,因为我失去了半天的时间来理解这个简单的事情,因为一个地方没有足够的详细信息。

    人力资源

    【讨论】:

      【解决方案4】:

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

      【讨论】:

      • 非常感谢,我需要安装这个吗,它如何适合连接到 magento API?
      【解决方案5】:

      根据您的问题,我会告诉您简单的步骤,按照这些步骤操作,然后您将获得我们需要的结果。 1. 登录 Magento 管理面板,然后导航到 system--&gt;webservices--&gt;SOAP RPC Roles create SOAP RPC roles 2. 导航到system--&gt;webservices--&gt;SOAP RPC users create SOAP RPC user 将此用户映射到角色。 3. 在xampp--&gt;htdocs--&gt;folder(project name) 中创建一个PHP 文件,命名为magentoapi.php。 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 是你的店铺地址,$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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-06-23
        相关资源
        最近更新 更多