2011-10-13 30 views
8

Tôi gặp phải một lỗi khá lạ khi cố gắng tạo đơn đặt hàng mới thông qua API Magento V1.0. Đây là quy trình cơ bản của mã của tôi:Tạo đơn đặt hàng qua API không thành công trong Magento

  1. Tạo giỏ hàng bằng phương pháp cart.create.
  2. Đặt khách hàng là 'khách' bằng phương pháp cart_customer.set.
  3. Thêm sản phẩm vào giỏ hàng bằng phương pháp cart_product.add.
  4. Tạo đơn hàng bằng phương thức cart.order.

Tại thời điểm này, các cart.order phương pháp ném một ngoại lệ với thông điệp SoapFault "Gọi đến một chức năng thành viên setFinalPrice() trên một tổ chức phi vật thể". Cùng một ngoại lệ được ném nếu tôi thay thế phương thức cart.order bằng các phương pháp khác như cart.info hoặc cart_product.list.

Vì thông điệp của ngoại lệ không có vẻ rất mô tả, tôi đã tự hỏi liệu có ai khác đã từng gặp phải vấn đề này không.

Cảm ơn.

CẬP NHẬT: Vấn đề là do tôi đang thêm sản phẩm vào giỏ hàng bằng SKU của họ khi gọi phương thức cart_product.add. Ngoại lệ không còn bị ném khi sử dụng ID sản phẩm thay vì SKU (tôi nghi ngờ đây có thể là lỗi). Tuy nhiên, tại thời điểm này, phương thức cart.order trả về false, do đó đơn đặt hàng vẫn chưa được tạo.

+0

Bạn có phiên bản Magento nào? Đã xảy ra lỗi với id/sku (khi sku là số, nếu tôi không nhầm) trong api. Nó phải được sửa trong CE 1.6/EE 1.11. Trước khi gọi 'cart.order', bạn phải thêm địa chỉ khách hàng, đặt phương thức thanh toán và giao hàng. Xem chính thức [ví dụ] (http://www.magentocommerce.com/wiki/doc/webservices-api/api/cart#example). – Zyava

+0

@Zyava: Tôi có thể xác nhận lỗi vẫn xuất hiện trong Magento CE 1.6.0.0. Mọi thứ hoạt động tốt khi tôi sử dụng ID thay vì SKU. – Epicurus

+0

Chờ đã, hãy làm rõ vấn đề. Khi bạn gọi thêm vào giỏ hàng với sku số: '$ proxy-> call ($ sessionId," cart_product.add ", mảng ($ shoppingCartId, array (" sku "=>" 111 "))); được thêm vào giỏ hàng? – Zyava

Trả lời

3

Trước khi bạn thực hiện phương thức đặt hàng, bạn phải chỉ định địa chỉ thanh toán và giao hàng cho giỏ hàng của mình.

đó là quy trình chuẩn để tạo đơn đặt hàng trong Magento.

các bước cần được như thế này:

  • Tạo giỏ hàng bằng cách sử dụng phương pháp cart.create.
  • Đặt khách hàng là 'khách' bằng phương thức cart_customer.set.
  • Thêm sản phẩm vào giỏ hàng bằng phương pháp cart_product.add.

cố gắng để gọi cart_shipping.methodcart_payment.method trước khi bạn gọi cart.order

  • Tạo thứ tự bằng cách sử dụng phương pháp cart.order.
+0

Tôi làm theo cùng một quy trình, nhưng nó cho tôi thấy "Ngoại lệ SoapFault không bắt buộc: [1002] Không thể hoạt động vì báo giá không tồn tại" mỗi khi tôi gọi cart.create. Tôi đã kiểm tra tất cả các cuộc gọi kết quả trước khi thực hiện giỏ tạo cuộc gọi và tất cả mọi thứ đang làm việc 1) đăng nhập tốt với api 2) create.cart khách hàng 4) Thiết lập Địa chỉ 5) thêm sản phẩm 3) Thiết lập sử dụng "cart_product.add " 6) cart_shipping.method 7) ccsave – p4pravin

+5

Nó có nghĩa là bạn chèn sai mã báo giá. –

+0

Tôi đã thực hiện một số truy tìm và thấy rằng quote id là chính xác, nhưng nó đang hiển thị không hoạt động trong bảng cơ sở dữ liệu. Trường hiển thị trường 'đang hoạt động' là 0. – p4pravin

Các vấn đề liên quan