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.