I am trying to integrate a solution to create shipments, add tracking and create invoices for orders, but I cannot find any examples of correctly formatted xml SOAP requests.
For example, I have this xml request that was generated from the WSDL, but it isn't right, because it fails. Even if it were right I have no idea how I would correctly format multiple arguments. this request only has one, but AddTracking for example, will have at least two arguments. I would like to find some correct examples of how to format this.
<?xml version='1.0' encoding='UTF-8'?>
<ns1:call xmlns:ns1="urn:Magento">
<sessionId>95a25c1a92ca930452936c16a7a8bdfd</sessionId>
<resourcePath>sales_order_shipment.create</resourcePath>
<args>600002002</args>
</ns1:call>
Solved! Go to Solution.
So it turns out that I AM able to use V2 soap calls. Which solves my whole problem. I'm not sure why no one just told me that I was wrong to think I couldn't make them. No one really answered my original question because I don't think anyone really understood what I was asking. since I can make soap v2 calls I get properly formatted xml for everything I need so I'm all set.
For reference, the issue was that I didn't realize that soap v2 had a different url endpoint than soap v1. I knew the WSDL was different, I didn't know the API endpoint was different. Once that was corrected soap v2 started working correctly.
Refer to below wiki. You may need to put your server host
new SoapClient('http://<Your_Host>/api/soap/?wsdl');
in order to get the exact format of all available SOAP API's format in Magento for "Sales Order Shipment".
http://devdocs.magento.com/guides/m1x/api/soap/sales/salesOrderShipment/salesOrderShipment.html
Yes I have been looking at this. You'll notice that nothing at that location is in xml format. So it is not what I would call the exact request. I'm looking for the exact xml request.
Here is complete code to call Magento API V1 services. You may need to change the values
highlighted italic values with the original one.
$api_url_v1 = "http://<Your_Host>/api/soap/?wsdl=1"; // If somestuff requires api authentification, $username = '<API_USER>'; //example: demouser $password = '<API_KEY>'; //example: demokey $cli = new SoapClient($api_url_v1); //retreive session id from login $session_id = $cli->login($username, $password); //call your API V1 Method like "customer.list" or "sales_order.list" etc. $result = $cli->call($session_id, '<API_METHOD>', array(array()));
I think I'm figuring some of this out. Give me a bit to review and I'll reply when I have it. Thanks for your help Ravindra!
So it turns out that I AM able to use V2 soap calls. Which solves my whole problem. I'm not sure why no one just told me that I was wrong to think I couldn't make them. No one really answered my original question because I don't think anyone really understood what I was asking. since I can make soap v2 calls I get properly formatted xml for everything I need so I'm all set.
For reference, the issue was that I didn't realize that soap v2 had a different url endpoint than soap v1. I knew the WSDL was different, I didn't know the API endpoint was different. Once that was corrected soap v2 started working correctly.