Well now I am discussing how to create webservice method in magento.There is a lot of existing webservice in magneto Api ,its divide in different section like (Sales,catalog ect).
Here I am extending sales module and add new web method “getTicketPrice ()”on sales api.
Step 1:First we have register our module
Add the following file in magento/app/etc/modules/Msa_Sales.xml
- <?xml version=“1.0″?>
- <config>
- <modules>
- <Msa_Sales>
- <active>true</active>
- <codePool>local</codePool>
- </Msa_Sales>
- </modules>
- </config>
Step 2: Add a new file api.xml, which is contain the all the method name description and module resource alias. Here Method name node have all the custom method name list.
magento/app/local/Msa/Sales/etc/api.xml
- <?xml version=“1.0″?>
- <config>
- <api>
- <resources>
- <sales_order translate=“title” module=“sales”>
- <methods>
- <getTicketPrice translate=“title” module=“sales”>
- <title>get ticket</title>
- <acl>sales/order/getticket</acl>
- </getTicketPrice>
- </resources>
- <resources_alias>
- <resourcename>sales_order</resourcename>
- </resources_alias>
- </api>
- </config>
Step3:Add a fileconfig.xml in etc folder. Here we tells the module name, object model and override class name to magento
magento/app/local/Msa/Sales/etc/config.xml
- <?xml version=“1.0″?>
- <config>
- <modules>
- <Msa_Sales>
- <version>0.1.0</version>
- </Msa_Sales>
- </modules>
- <global>
- <models>
- <sales>
- <rewrite>
- <order_api>Msa_Sales_Model_Order_Api</order_api>
- </rewrite>
- </sales>
- </models>
- </global>
- </config>
Step4:finally give the method definition of getTicketPrice.
- public function getTicketPrice()
- {
- //create connection
- $read = Mage::getSingleton(‘core/resource’)->getConnection(‘core_read’);
- //write sql query
- $sql=“Select * from ticket”;
- //return $sql;
- $res=$read->fetchAll($sql);
- if($res)
- {
- //if success then return result set
- return $res;
- }else
- {
- If not then return message
- $msg[]=“No records Found”;
- return $msg;
- }
- }
}
Now you will be able use this webservice method with resource name and method name.
$result1=$client->call($session, ‘sales_order.getTicketPrice’, array());