Способы доставки в корзине недоступны

8

Я должен установить метод доставки для корзины покупок, и я могу отобразить все доступные методы доставки, и я указал действительный метод доставки в качестве входного параметра для метода веб-службы SOAP "shoppingCartShippingMethod", так что для этого есть ли необходимость изменить конфигурацию в панели администратора Magento?

<?php
$proxy = new SoapClient('http://127.0.0.1/magento/index.php/api/v2_soap/?wsdl');

$sessionId = $proxy->login('cats', 'sudhir123');
echo "\nSession Id = ";
var_dump($sessionId);

$cartId = $proxy->shoppingCartCreate($sessionId, '3');
echo "\nCart Id = ";
var_dump($cartId);

$customerData = array(
"firstname" => "testFirstname",
"lastname" => "testLastName",
"email" => "testEmail@mail.com",
"mode" => "guest",
"website_id" => "0"
  );
$resultCustomerSet = $proxy->shoppingCartCustomerSet($sessionId, $cartId, $customerData);
echo "\nCustomer Set to Shopping Cart = ";
var_dump($resultCustomerSet);

$customeraddress = $proxy->shoppingCartCustomerAddresses($sessionId,     $cartId, array(array(
'mode' => 'billing',
'firstname' => 'Sudhir',
'lastname' => 'Belagali',
'street' => 'street address',
'city' => 'city',
'region' => 'region',
'postcode' => 'postcode',
'country_id' => 'US',
'telephone' => '123456789',
'is_default_billing' => 1
)));   
echo "\nCustomer Address Set to Shopping Cart = ";
var_dump($customeraddress);

$shoppingcartproduct = $proxy->shoppingCartProductAdd($sessionId,    $cartId, array(array(
'product_id' => '917',
'sku' => 'cricketbat',
'qty' => '5',
'options' => null,
'bundle_option' => null,
'bundle_option_qty' => null,
'links' => null
)));   
echo "\nProduct has been added to cart = ";
var_dump($shoppingcartproduct);


$cartInfo = $proxy->shoppingCartInfo($sessionId, $cartId);
echo "\nCart Information for this Cart Id is ( ".$cartId." )";
var_dump($cartInfo);


$result = $proxy->shoppingCartShippingList($sessionId, $cartId);   
echo "\nAvailable Shipping methods = ";
var_dump($result);
?>

введите описание изображения здесь

Судхир Белагали
источник
Попробуйте добавить товар в корзину
mkutyba
Продукт может быть добавлен в корзину, но я пытаюсь мыло проверить доступные способы доставки, он дает мне пустой массив
Sudhir Belagali
Но если вы добавите что-то в корзину, методы доступны или все еще пусты?
mkutyba
Если в вашей корзине ничего нет, никакие способы доставки не будут отображаться, если вы получите доступ к данным через структуру корзины
Робби Аверилл,
я добавил информацию о продукте, информацию о клиенте и адрес клиента в корзину, но все еще не могу установить способ доставки в корзину
Судхир Белагали

Ответы:

1

Попробуйте установить «Система»> «Конфигурация»> «Способы доставки»> «Показать метод, если не применимо» в значение «Да» по умолчанию «Нет» в панели администратора Magento.

введите описание изображения здесь

IgnoranceIsBliss
источник
Сэр, он дает нам список доступных способов доставки, и я все еще не могу установить способ доставки для существующей в данный момент корзины
Судхир Белагали,
Пожалуйста, опубликуйте это как отдельный вопрос.
IgnoranceIsBliss
1

Да, даже раньше я сталкивался с этой проблемой ... Попробуйте сделать это, в моем случае это сработало:

SOAP REFERENCE - CART.CREATE От создания корзины, добавления товара в корзину, установки покупателя в корзину, добавления адреса в корзину, всего, включая параметр «store_id». Я знаю, что для SOAP v2 он не отображается должным образом для многих из SOAP вызывает .. Но вы можете взять ссылку из SOAP v1 и добавить этот параметр, как показано ниже для всех случаев:

Прежде всего, чтобы получить идентификатор магазина: сделайте следующее в верхней части своего кода, я думаю, вы можете использовать этот файл вне среды magento, сохраняя его в корневом каталоге magento ..

require_once ("app / Mage.php");

Umask (0);

Mage :: приложение ();

$ url = Mage :: getBaseUrl (Mage_Core_Model_Store :: URL_TYPE_WEB);

session_start ();

Mage :: getSingleton ("core / session", array ("name" => "frontend"));

$ storeid = Mage :: app () -> getStore () -> getStoreId ();

Теперь используйте этот store-id для следующих вызовов:

$ result = $ proxy-> shoppingCartCreate ($ sessionId, $ storeid);

$ result = $ proxy-> shoppingCartProductAdd ($ sessionId, $ quote_id, array (array ('product_id' => $ product_id, 'sku' => $ sku, 'qty' => $ qty, 'options' => null, )), $ StoreID);

$ resultCustomerSet = $ proxy-> shoppingCartCustomerSet ($ sessionId, $ result, $ customerData, $ storeid);

$ result = $ client-> shoppingCartCustomerAddresses ($ session, $ cart_id, $ address, $ storeid);

Теперь попробуйте сделать этот звонок:

$ result = $ client-> shoppingCartShippingList ($ session, $ cart_id, $ storeid);

Я уверен, что он вернет вам адреса доставки.

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

Хелли
источник
0

Попробуй это

// get list of shipping methods

$resultShippingMethods = $proxy->shoppingCartShippingList($sessionId, array($shoppingCartId))

// set shipping method

$randShippingMethodIndex = rand(0, count($resultShippingMethods)-1 );
$shippingMethod = $resultShippingMethods[$randShippingMethodIndex]["code"];

$resultShippingMethod = $proxy->shoppingCartShippingMethod($sessionId,  array($shoppingCartId), $shippingMethod);
Диего Борба
источник
Сэр, я попробовал это, но у меня не
получилось
Если вы делаете заказ нормально, способ доставки показывает?
Диего Борба
Он показывает мне только на веб-сайте ,, но не показывает меня через вызов SOAP
Судхир Белагали