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" => "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);
?>

insira a descrição da imagem aqui


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


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.


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);

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.