SoapFault - faultcode: "1062" faultstring: "Способ доставки недоступен"

Привет, я разрабатываю приложение для Android, которое использует Magento в качестве бэкэнд, и я использую web-сервис SOAP magento, я добавил всю информацию о продукте, клиенте и клиенте в корзину, но когда я пытаюсь добавить метод доставки в корзину, я получаю эту ошибку


SoapFault - faultcode: "1062" faultstring: "Способ доставки недоступен"

Это код, который я пытаюсь использовать. Пожалуйста, помогите мне решить эту проблему.

SoapObject availableShippingMethods = new SoapObject(MAGENTO_NAMESPACE, "shoppingCartShippingList");
availableShippingMethods.addProperty("sessionId", sessionId);
availableShippingMethods.addProperty("quoteId", quoteId);
env.setOutputSoapObject(availableShippingMethods);
androidHttpTransport.call("", env);
Object resultForAvailableShippingMethods = env.getResponse();
Log.d("AvailableShippingMethods",resultForAvailableShippingMethods.toString());

Это даст нам этот выход


D/AvailableShippingMethods: shoppingCartShippingMethodEntityArray {item = shoppingCartShippingMethodEntity {code = flatrate_error; Носитель = Flatrate; carrier_title= Flat Rate; цена = 0; }; }

ниже приведен код, который устанавливает способ доставки в CartId

 SoapObject shippingmethod = new SoapObject(MAGENTO_NAMESPACE, "shoppingCartShippingMethod");
 shippingmethod.addProperty("sessionId", sessionId);
 shippingmethod.addProperty("quoteId", quoteId);
 shippingmethod.addProperty("shippingMethod", "flatrate_error");//Code for Flatrate shipping method and it is enabled in magento site
 env.setOutputSoapObject(shippingmethod);
 androidHttpTransport.call("", env);
 Log.d("shippingMethod", shippingmethod.toString());
 Object resultforShippingMethod = env.getResponse();
 Log.d("ShippingMethod", resultforShippingMethod.toString());

Ответ 1

Я знаю, что уже поздно отвечать... но это может помочь кому-то в будущем...

Проблема заключается в документации на magento soap v2... Когда я прошел через ссылку wsdl, я заметил что-то вроде ниже...

<message name="shoppingCartShippingMethodRequest">
<part name="sessionId" type="xsd:string"/>
<part name="quoteId" type="xsd:int"/>
<part name="method" type="xsd:string"/>
<part name="storeId" type="xsd:string"/>
</message>

Как видите, существует свойство метод. На самом деле, мы должны добавить способ доставки... Так что вам нужно изменить код ur, как показано ниже...

SoapObject shippingmethod = new SoapObject(MAGENTO_NAMESPACE,"shoppingCartShippingMethod");
shippingmethod.addProperty("sessionId", sessionId);
shippingmethod.addProperty("quoteId", quoteId);
shippingmethod.addProperty("method", "flatrate_error");
env.setOutputSoapObject(shippingmethod);
androidHttpTransport.call("", env);
Log.d("shippingMethod", shippingmethod.toString());
Object resultforShippingMethod = env.getResponse();
Log.d("ShippingMethod", resultforShippingMethod.toString());

Ответ 2

Возможно, это связано с неправильным идентификатором страны. После ввода правильной информации я получаю два способа доставки (freeshipping_freeshipping и flatrate_flatrate).

Ответ 3

Перед настройкой способа доставки вам необходимо сначала установить адреса клиентов, а в адресах клиентов вам нужно ввести идентификатор страны.