使用PrestaShop的API创建订单

时间:2014-11-24 14:04:40

标签: php xml prestashop prestashop-1.6

我有一个PrestaShop 1.6.0.9,我正在尝试创建一个新订单。我正在执行以下步骤:

  1. 使用我之前创建的客户的安全密钥,我想要购买的产品的ID和数量创建购物车。

  2. 然后创建一个新订单(向/api/order发送POST),传递客户端ID,安全密钥,产品ID,价格(含税和不含税)等... 这是我发送的整个XML:

  3. <?xml version="1.0" encoding="UTF-8"?><prestashop><order> <id_address_delivery>5</id_address_delivery> <id_address_invoice>5</id_address_invoice><id_currency>1</id_currency> <id_lang>1</id_lang><id_customer>2</id_customer><id_carrier>1</id_carrier> <current_state>2</current_state><valid>1</valid><module>cashondelivery</module> <payment>Pago en metalico</payment><conversion_rate>1</conversion_rate> <security_key>1e87b5d59d7c812a9d840a548e4b8a45</security_key><associations> <order_rows><order_rows><product_id>7</product_id> <product_attribute_id>34</product_attribute_id><product_quantity>1</product_quantity> </order_rows></order_rows></associations><id_cart>42</id_cart> <total_paid>24.85</total_paid><total_paid_real>24.85</total_paid_real> <total_products>20.54</total_products><total_products_wt>24.85</total_products_wt> </order></prestashop>

    如您所见,我正在使用“cashondelivery”模块。我的问题是,当我将该XML发布到API时,会创建订单,但是:

    1. 不知何故订单没有显示在订单列表中,但是如果我转到“客户 - &gt;购物车 - &gt;”我在发布之前创建的购物车ID,我可以转到该订单订单XML“ - &gt;从此购物车创建的订单。

    2. 一旦我在订单中,我就看不到客户端的详细信息(因为客户端的ID没有插入)。我很确定id为2的客户端确实存在,但我不确定为什么它没有插入我发送给API的POST。

    3. 知道为什么会出现这两个问题中的任何一个?

2 个答案:

答案 0 :(得分:4)

我发布了从谷歌到这里的任何人的答案。 即使PS文档说ids不是必需的,你也必须传递购物车和订单中的每个id字段。

这意味着,您必须在创建购物车时以及创建订单时提供客户ID,地址ID,送货地址ID等。

如果您未能这样做,您的订单可能会被插入,或者可能不会。并且,如果它被插入,则不能保证它将出现在&#34; Orders&#34;列表。

答案 1 :(得分:1)

为了创建有效的订单,您需要遵循一些“隐藏的”强制性内容:

  1. secure_key必须在客户的secure_key和订单之间匹配 secure_key
  2. 地址(交货地址)必须与有效国家/地区相关联。
  3. 所以,最好的方法是自然地遵循创建订单的全部流程:

    1. 创建客户,从返回的xml获取客户的secure_keycustomer_id

    2. 使用上一步中的customer_id

    3. 创建购物车
    4. 通过上述步骤,使用customer_id,客户的secure_keycart_id创建订单。