2011-10-13 11 views
8

Viene visualizzato un errore piuttosto strano quando si tenta di creare un nuovo ordine tramite l'API Magento V1.0. Ecco il flusso di lavoro di base del mio codice:La creazione dell'ordine tramite API non riesce in Magento

  1. Creare il carrello acquisti utilizzando il metodo cart.create.
  2. Impostare un cliente come "ospite" utilizzando il metodo cart_customer.set.
  3. Aggiungi prodotti al carrello utilizzando il metodo cart_product.add.
  4. Creare l'ordine utilizzando il metodo cart.order.

A questo punto, il metodo cart.order genera un'eccezione SoapFault con il messaggio "Chiamata a un setFinalPrice funzione membro() su un non-oggetto". La stessa eccezione viene generata se si sostituisce il metodo cart.order con altri metodi come cart.info o cart_product.list.

Dal momento che il messaggio dell'eccezione non sembra molto descrittivo, mi chiedevo se qualcun altro si fosse mai imbattuto in questo.

Grazie.

UPDATE: Il problema è dovuto al fatto che sto aggiungendo prodotti al carrello utilizzando gli SKU quando si chiama il metodo cart_product.add. L'eccezione non viene più generata quando si utilizzano gli ID prodotto anziché gli SKU (ho il sospetto che questo potrebbe essere un bug). Tuttavia, a questo punto il metodo cart.order restituisce false, pertanto l'ordine non viene ancora creato.

+0

Quale versione di magento avete? C'è stato un errore con ids/sku (quando sku è numerico, se non sbaglio) in api. Dovrebbe essere stato fissato in CE 1.6/EE 1.11. Prima di chiamare 'cart.order' devi aggiungere gli indirizzi dei clienti, impostare i metodi di pagamento e spedizione. Vedi ufficiale [esempio] (http://www.magentocommerce.com/wiki/doc/webservices-api/api/cart#example). – Zyava

+0

@Zyava: Posso confermare che l'errore è ancora presente in Magento CE 1.6.0.0. Tutto funziona correttamente quando utilizzo ID anziché SKU. – Epicurus

+0

Aspetta, chiariamo il problema. Quando si chiama aggiungi al carrello con sku numerico: '$ proxy-> call ($ sessionId," cart_product.add ", array ($ shoppingCartId, array (" sku "=>" 111 ")));' il prodotto non è aggiunto al carrello? – Zyava

risposta

3

Prima di eseguire il metodo cart.order, è necessario assegnare l'indirizzo di pagamento e spedizione al carrello.

è la procedura standard per creare un ordine in magento.

i passaggi dovrebbero essere come questo:

  • Creare carrello della spesa con il metodo cart.create.
  • Impostare un cliente come "ospite" utilizzando il metodo cart_customer.set.
  • Aggiungi prodotti al carrello utilizzando il metodo cart_product.add.

tenta di chiamare cart_shipping.method e cart_payment.method prima di chiamare cart.order

  • Creare l'ordine utilizzando il metodo cart.order.
+0

Seguo la stessa procedura, ma mi mostra "Eccezione SoapFault Uncaught: [1002] Impossibile eseguire l'operazione perché il preventivo non esiste" ogni volta che chiamo cart.create. Ho controllato tutte le chiamate risultato prima di effettuare acquisti creare chiamata e tutto funziona bene login 1) con API 2) create.cart 3) Configurazione cliente 4) Configurazione indirizzo 5) aggiungere i prodotti utilizzando "cart_product.add " 6) cart_shipping.method 7) ccsave – p4pravin

+5

Significa che inserisci l'identificativo di citazione errato. –

+0

Ho eseguito un po 'di traccia e ho trovato che l'id preventivo è corretto, ma è inattivo nella tabella Database. Mostra il campo 'attivo' come 0. – p4pravin

Problemi correlati