I've tested your for WS-I compliance disabled and here are the results.
The wsdl is correct and it (almost) works.
First change this in your config.xml
.
<helpers>
<syncreports>
<class>Mycompany_Syncreports_Helper</class>
</syncreports>
</helpers>
To this:
<helpers>
<mycompany_syncreports>
<class>Mycompany_Syncreports_Helper</class>
</mycompany_syncreports>
</helpers>
Next: I see that in your api.xml
you declared only an info
method, but in the wsdl
you have 2 other methods syncreportsSyncCreate
, syncreportsSyncCreate
.
Add those methods to api.xml
otherwise you will get an invalid path error message.
<methods>
<info translate="title" module="mycompany_syncreports">
<title>Retrieve synchronization info</title>
<acl>syncreports/sync/info</acl>
<method>info</method>
</info>
<create translate="title" module="mycompany_syncreports">
<title>Create synchronization</title>
<acl>syncreports/sync/create</acl>
<method>create</method>
</create>
<items translate="title" module="mycompany_syncreports">
<title>List items</title>
<acl>syncreports/sync/list</acl>
<method>items</method>
</items>
</methods>
Also add the methods to your api model (v2 also if needed).
Now it seams to work.
This is what I send:
<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:syncreportsSyncCreate soapenv:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
<sessionId xsi:type="xsd:string">SESSION KEY HERE</sessionId>
</urn:syncreportsSyncCreate>
</soapenv:Body>
</soapenv:Envelope>
This is what I get.
<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="urn:Magento" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Body>
<ns1:syncreportsSyncCreateResponse>
<result xsi:type="xsd:string">This is the message:</result>
</ns1:syncreportsSyncCreateResponse>
</SOAP-ENV:Body>
</SOAP-ENV:Envelope>
So I guess the method works.
When I enable the WS-I compliance I don't get any result from any call. Not even from login
. If I find something I will edit the answer. But you can at least test for WS-I compliance off.
[Edit]
I think I found the issue with your wsi
file also.
You have declared the type syncreportsSyncItemsResponse
twice and the declaration for syncreportsSyncCreateResponse
is missing. I assume it was a copy/paste/replace error (you forgot the replace).
Change this:
<wsdl:message name="syncreportsSyncItemsResponse">
<wsdl:part name="parameters" element="typens:syncreportsSyncCreateResponseParam" />
</wsdl:message>
To this:
<wsdl:message name="syncreportsSyncCreateResponse">
<wsdl:part name="parameters" element="typens:syncreportsSyncCreateResponseParam" />
</wsdl:message>
A side note...you may also want to change the definition of <xsd:element name="syncreportsSyncCreateResponseParam">
to fit in with the response type of the method. Now you declare that you return an array
, but in the end I assume you will return a boolean
or a string.
If payment method doesn't support online capturing (like Paypal Standard) there is no way to get a full order creation flow like on Checkout via Magento API interface. It is impossible to change the order state and process payments. As a workaround try the following:
- create
an order with "pending" status
- then get order info using
sales_order.info API method
- use order info to validate all the necessary data as described here. It should be done on the Mobile App side.
- if it passed the validation step then create an invoice and capture it
UPD
Some Payment methods support online capturing (i.e. Authorize or Paypal Payments Pro). In theory it means that, you can create a cart via API, add payment method data to it (i.e. CC details), create an order and capture it online. So all the order processing steps (including payment validation) will be on Magento side.
Best Answer
First,You need to
check available shipping methods for current cart/Quote using Soap api function
shoppingCartShippingList()
.See at link .If you havemultiple store view/stores /websites
then you need to send store id/code as it parmas.Just like: $result = $proxy->shoppingCartShippingList($sessionId, 10,'default');
In order to get shipping methods list for a cart
you Should save customer shipping address for calculated before getting shipping methods