【问题标题】:Magento XML-RPC API - Create Shipment From JavaMagento XML-RPC API - 从 Java 创建货件
【发布时间】:2012-12-29 14:32:44
【问题描述】:

我正在尝试使用 XML-RPC API 从我的第三方应用程序为 magento 订单创建发货。当我只使用订单增量 ID 调用“sales_order_shipment.create”时,一切正常,但如果我尝试使用订单增量 ID 和一组项目和数量进行相同的调用,它会显示“请求的订单不是存在。”这是为什么?我做错了什么? itemQuantity 应该是什么类型)

这是我的代码

package magentoapiclient;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.apache.xmlrpc.XmlRpcException;
import org.apache.xmlrpc.client.XmlRpcClient;
import org.apache.xmlrpc.client.XmlRpcClientConfigImpl;

public class XMLRPCAPIClient {

    public static void main(String[] args) {
        createShipment("100000005", 5, 1.0);
    }

    public static XmlRpcClient prepareClient() throws MalformedURLException {
        XmlRpcClientConfigImpl config = new XmlRpcClientConfigImpl();
        config.setServerURL(new URL("myHost"));
        XmlRpcClient client = new XmlRpcClient();
        client.setConfig(config);
        client.setTypeFactory(new MyTypeFactory(client));
        return client;
    }

    public static void createShipment(String orderIncrementId, int itemId, double quantity) {
        try {
            XmlRpcClient client = prepareClient();
            String sessionId = login("myUser", "myKey", client);
            System.out.println(sessionId);
            Object[] request = {orderIncrementId, new HashMap()};
            client.execute("call", new Object[]{sessionId, "sales_order_shipment.create", request});
            endSession(sessionId, client);
        } catch (XmlRpcException | MalformedURLException ex) {
            Logger.getLogger(XMLRPCAPIClient.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static String login(String user, String password, XmlRpcClient client) throws XmlRpcException {
        String sessionId = (String) client.execute("login", new Object[]{user, password});
        return sessionId;
    }

    public static void endSession(String sessionToken, XmlRpcClient client) throws XmlRpcException {
        client.execute("endSession", new Object[]{sessionToken});
    }
}

如你所见

Object[] request = {orderIncrementId, new HashMap()};

我尝试发送一个实际上应该包含订单商品 ID 和数量的 hashMap。我还尝试发送一个对象数组,但它对其中任何一个都不起作用。如果 Map 或 Array 都不可用,那还有什么办法呢?

感谢您的帮助

【问题讨论】:

    标签: java api magento xml-rpc


    【解决方案1】:

    订单 ID 和订单增量 ID 不同。您应该发送订单增量 ID。

    http://www.magentocommerce.com/api/soap/sales/salesOrder/sales_order.info.html

    【讨论】:

    • 你好@Robi,谢谢你的回答,对不起,我的错,我一直想说订单增量ID,因为它是我唯一使用的。编辑了我的问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-25
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 2011-08-30
    相关资源
    最近更新 更多