2011-11-15 81 views
7

我試圖按照使用Soap連接到magento API的tutorail,但我已經卡住了嗎? SOAP似乎安裝在我的服務器上,因爲我可以瀏覽到?wsld並顯示一個xml文件。使用SOAP連接到Magento API

我已經在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

提前感謝

回答

12

你把這成一個新的空白文件。保存爲name.php UND運行,這是你的服務器上:

<?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(); 
     } 
?> 

問候博提

+0

對延遲的遺憾感到遺憾,所以我只是在瀏覽器中打開這個文件?使用Php_soap ext啓動運行wamp server 2.1我需要任何東西來運行腳本?非常感謝 – Ledgemonkey

+1

是的只能在瀏覽器中運行這個腳本。 ;)您需要在Magento後端添加Webservice用戶和角色。然後腳本應該可以工作:) – boti

+0

您也可以從命令行運行這些PHP SOAP腳本,例如。 php name.php。這在測試時非常有用,因爲您不必使用HTML報告所有內容。 – Pete855217

3
  1. 是的,Soap Client的文件所指的是內置的PHP SoapClient對象。有大量的肥皂客戶用不同的語言書寫。作爲協議的SOAP與語言/平臺無關。 (儘管個別語言/平臺往往有自己的怪癖)。 Magento提供了一個Soap 服務器,它可以通過客戶端進行交互。這是客戶機/服務器體系結構。

  2. 不管你想要什麼,你都可以調用這個腳本。您可以在個人網頁加載它,你可以在命令行$ php script.php運行它,你可以把它放在一個包含文件,你可以將它放在另一個框架的類文件等

+0

謝謝,所以我需要用這個肥皂客戶端做任何事情,我必須加載我不知道它是如何適合的?我寫了一個script.php - 我已經在問題中包含了確切的代碼。所有我回來,如果我放在瀏覽器是代碼減去第一行再次感謝PS我一直在使用你的layoutviewer! – Ledgemonkey

+0

無法編輯問題!這裏是我在腳本文件中使用的代碼<?php $ proxy = new SoapClient('http://127.0.0.1/perform-play/api/soap/?wsdl'); \t \t $ sessionId = $ proxy-> login('soap-user','greeneyed'); $ customerinfo = $ proxy-> customerInfo($ sessionId,1); \t print_r($ customerinfo); – Ledgemonkey

+0

@Ledgemonkey它聽起來像你的網絡服務器沒有設置爲運行PHP腳本。您可能希望在使用SOAP Api之類的東西之前找到一個快速的PHP入門書。 –

3

這幫助了很多感謝

回答11月16日在'11 7:26博提

你把它放到一個新的空白文件中。將其保存爲名稱。PHP UND運行,這是你的服務器上:

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

一個角色,如果你想做到這一點附上所有資源這條路。

這很重要!從

;extension=php_soap.dll 

extension=php_soap.dll 

然後你可以用這個用戶我用這個代碼連接添加這個角色到你剛剛創建

還要確保php.ini中的用戶

$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

0

根據您的問題,我會電話你簡單的步驟,遵循這些步驟,那麼你的Wii獲取的結果,我們需要。 1.登錄到Magento管理面板,然後導航到system-->webservices-->SOAP RPC Roles create SOAP RPC roles 2.導航到system-->webservices-->SOAP RPC users使用角色創建SOAP RPC用戶映射此用戶。 3.在xampp-->htdocs-->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參考URL 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