Los métodos de envío del carrito de compras no están disponibles

8

Tengo que establecer el método de envío en el carrito de compras, y puedo mostrar todos los métodos de envío disponibles, y he dado un método de envío válido como parámetro de entrada para el método de servicio web SOAP "shoppingCartShippingMethod", por lo que para esto, ¿hay alguna necesidad de cambiar la configuración en el panel de administración de 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" => "[email protected]",
"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);
?>

ingrese la descripción de la imagen aquí

Sudhir Belagali
fuente
Intente agregar un producto al carrito
mkutyba
El producto se puede agregar al carrito, pero estoy intentando un jabón para verificar los métodos de envío disponibles, me está dando una matriz vacía
Sudhir Belagali
Pero si agrega algo al carrito, ¿los métodos están disponibles o todavía están vacíos?
mkutyba
Sin nada en su carrito, no se mostrarán métodos de envío si accede a los datos a través del marco del carrito
Robbie Averill
He agregado información del producto, información del cliente e información de la dirección del cliente en el carrito, pero aún no puedo configurar el método de envío al carrito
Sudhir Belagali

Respuestas:

1

Intente configurar el Sistema> Configuración> Métodos de envío> "Mostrar método si no corresponde" en Sí desde el "No" predeterminado en el Panel de administración de Magento.

ingrese la descripción de la imagen aquí

La ignorancia es grata
fuente
s señor, nos da la lista de métodos de envío disponibles y todavía no puedo configurar el método de envío para el carrito existente actualmente
Sudhir Belagali
Por favor publíquelo como una pregunta separada.
IgnoranceIsBliss
1

Sí, incluso yo solía enfrentar este problema ... Intenta hacerlo, funcionó en mi caso:

REFERENCIA DE JABÓN - CART.CREATE Desde crear carrito, agregar producto al carrito, configurar el cliente al carrito, agregar la dirección al carrito todo, incluir un parámetro llamado "store_id". Sé que no se muestra correctamente para SOAP v2 para muchos de el SOAP llama ... Pero puede tomar la referencia de SOAP v1 y agregar este parámetro como este a continuación para todos los casos:

En primer lugar, para obtener la identificación de la tienda: haga lo siguiente en la parte superior de su código, creo que podría estar usando este archivo fuera del entorno de magento manteniéndolo en el directorio raíz de magento.

require_once ("aplicación / Mage.php");

umask (0);

Mage :: app ();

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

session_start ();

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

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

Ahora use esta tienda-id en las siguientes llamadas como esta:

$ resultado = $ 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);

Ahora intenta hacer esta llamada:

$ resultado = $ cliente-> shoppingCartShippingList ($ sesión, $ cart_id, $ storeid);

Estoy seguro de que le devolverá las direcciones de envío.

Además, asegúrese de proporcionar el mismo país en su dirección para el que ha mantenido habilitado el método de envío.

Helly
fuente
0

Prueba esto

// 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);
Diego Borba
fuente
S señor He intentado esto, pero aún no ha trabajado para mí
Sudhir Belagali
Si realiza un pago normalmente, ¿se muestra el método de envío?
Diego Borba
Me muestra solo en el sitio web, pero no me muestra a través de la llamada SOAP
Sudhir Belagali