我有一个PrestaShop 1.6.0.9,我正在尝试创建一个新订单。我正在执行以下步骤:
使用我之前创建的客户的安全密钥,我想要购买的产品的ID和数量创建购物车。
然后创建一个新订单(向/api/order
发送POST),传递客户端ID,安全密钥,产品ID,价格(含税和不含税)等...
这是我发送的整个XML:
<?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时,会创建订单,但是:
不知何故订单没有显示在订单列表中,但是如果我转到“客户 - &gt;购物车 - &gt;”我在发布之前创建的购物车ID,我可以转到该订单订单XML“ - &gt;从此购物车创建的订单。
一旦我在订单中,我就看不到客户端的详细信息(因为客户端的ID没有插入)。我很确定id为2的客户端确实存在,但我不确定为什么它没有插入我发送给API的POST。
知道为什么会出现这两个问题中的任何一个?
答案 0 :(得分:4)
我发布了从谷歌到这里的任何人的答案。 即使PS文档说ids不是必需的,你也必须传递购物车和订单中的每个id字段。
这意味着,您必须在创建购物车时以及创建订单时提供客户ID,地址ID,送货地址ID等。
如果您未能这样做,您的订单可能会被插入,或者可能不会。并且,如果它被插入,则不能保证它将出现在&#34; Orders&#34;列表。
答案 1 :(得分:1)
为了创建有效的订单,您需要遵循一些“隐藏的”强制性内容:
所以,最好的方法是自然地遵循创建订单的全部流程:
创建客户,从返回的xml获取客户的secure_key
和customer_id
使用上一步中的customer_id
通过上述步骤,使用customer_id
,客户的secure_key
和cart_id
创建订单。