Os métodos de envio do carrinho de compras não estão disponíveis

8

Preciso definir o método de envio como carrinho de compras, e posso exibir todos os métodos de envio disponíveis e forneci o método de envio válido como o parâmetro de entrada para o método de serviço da web SOAP "shoppingCartShippingMethod". Portanto, para isso, é necessário alterar a configuração no painel de administração do 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);
?>

insira a descrição da imagem aqui

Sudhir Belagali
fonte
Tente adicionar um produto ao carrinho
mkutyba 24/10
O produto pode ser adicionado ao carrinho, mas estou tentando sabão para verificar os métodos de envio disponíveis, ele está me dando um array vazio
Sudhir Belagali
Mas se você adicionar algo ao carrinho, os métodos estão disponíveis ou ainda estão vazios?
Mkutyba # 25/15
Com nada no carrinho, nenhum método de envio será exibido se você acessar os dados através da estrutura do carrinho
Robbie Averill
i ter adicionado informações sobre o produto, informações do cliente e informações de endereço do cliente no carro, mas ainda assim eu sou incapaz de definir o método de transporte para carrinho
Sudhir Belagali

Respostas:

1

Tente definir Sistema> Configuração> Métodos de entrega> "Mostrar método se não aplicável" como Sim no padrão "Não" no painel de administração do Magento.

insira a descrição da imagem aqui

Ignorância é uma benção
fonte
s senhor, ele nos fornece a lista de métodos de envio disponíveis e eu ainda não consigo definir o método de envio para o carrinho existente
Sudhir Belagali
Envie isso como uma pergunta separada.
IgnoranceIsBliss
1

Sim, mesmo eu costumava enfrentar esse problema ... Tente fazer isso, funcionou no meu caso:

REFERÊNCIA DE SOAP - CART.CREATE De criar carrinho, adicionar produto ao carrinho, definir cliente ao carrinho, adicionar endereço ao carrinho, inclua um paramater chamado "store_id". Sei que não é mostrado corretamente para o SOAP v2 para muitos o SOAP chama .. Mas você pode obter referência do SOAP v1 e adicionar este parâmetro como este abaixo para todos os casos:

Primeiro de tudo, para obter o ID da loja: faça o seguinte na parte superior do seu código, acho que você pode estar usando esse arquivo fora do ambiente magento, mantendo-o no diretório raiz do magento.

require_once ("app / Mage.php");

umask (0);

Mage :: app ();

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

session_start ();

Mage :: getSingleton ("núcleo / sessão", matriz ("nome" => "front-end"));

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

Agora use esse ID da loja nas chamadas a seguir:

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

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

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

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

Agora tente fazer esta ligação:

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

Tenho certeza de que ele retornará os endereços de entrega.

Além disso, certifique-se de fornecer o mesmo país em seu endereço para o qual você manteve o método de envio ativado.

Helly
fonte
0

Tente isto

// 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
fonte
S senhor Eu tentei isso, mas não tivemos funcionou para mim
Sudhir Belagali
Se você faz um checkout normalmente, o método de envio está sendo exibido?
Diego Borba
Ele está me mostrando apenas no website ,, Mas não me mostrando através de chamada SOAP
Sudhir Belagali