【问题标题】:Prestashop webservice: Cannot create cart with custom pricesPrestashop 网络服务:无法使用自定义价格创建购物车
【发布时间】:2021-06-14 18:16:07
【问题描述】:

通过 Web 服务以编程方式创建订单时,我无法修改订单价格。

1.- 我首先创建购物车:

<carts>
<cart>
    <id>102241</id>
    <id_currency>1</id_currency>
    <id_lang>4</id_lang>
    <associations>
        <cart_rows>
            <cart_row>
                <id_product>40</id_product>
                <id_product_attribute>0</id_product_attribute>
                <id_address_delivery>22265</id_address_delivery>
                <quantity>1</quantity>
            </cart_row>
            <cart_row>
                <id_product>41</id_product>
                <id_product_attribute>587</id_product_attribute>
                <id_address_delivery>22265</id_address_delivery>
                <quantity>3</quantity>
            </cart_row>
        </cart_rows>
    </associations>
    <id_address_delivery>22265</id_address_delivery>
    <id_address_invoice>22265</id_address_invoice>
    <id_customer>17440</id_customer>
    <id_carrier>150</id_carrier>
    <date_add>2021-02-07 11:27:42</date_add>
    <date_udp>2021-02-07 11:27:42</date_udp>
</cart>

2.- 然后,使用给定的购物车 ID,我正在创建订单

<orders>
<order>
    <id>39997</id>
    <id_address_delivery>22265</id_address_delivery>
    <id_address_invoice>22265</id_address_invoice>
    <id_cart>102241</id_cart>
    <id_currency>1</id_currency>
    <id_lang>4</id_lang>
    <id_customer>17440</id_customer>
    <id_carrier>150</id_carrier>
    <module>bankwire</module>
    <payment>Mercado Libre</payment>
    <total_paid>50000</total_paid>
    <total_paid_real>50000</total_paid_real>
    <total_products>50000</total_products>
    <total_products_wt>50000</total_products_wt>
    <conversion_rate>1</conversion_rate>
    <associations>
        <order_rows>
            <order_row>
                <product_id>40</product_id>
                <product_attribute_id>0</product_attribute_id>
                <product_quantity>1</product_quantity>
                <product_price>30000</product_price>
                <unit_price_tax_incl>30000</unit_price_tax_incl>
                <unit_price_tax_excl>30000</unit_price_tax_excl>
            </order_row>
            <order_row>
                <product_id>41</product_id>
                <product_attribute_id>587</product_attribute_id>
                <product_quantity>2</product_quantity>
                <product_price>10000</product_price>
                <unit_price_tax_incl>10000</unit_price_tax_incl>
                <unit_price_tax_excl>10000</unit_price_tax_excl>
            </order_row>
        </order_rows>
    </associations>
    <valid>1</valid>
    <current_state>2</current_state>
    <total_discounts>0</total_discounts>
    <total_discounts_tax_incl>0</total_discounts_tax_incl>
    <total_discounts_tax_excl>0</total_discounts_tax_excl>
    <total_paid_tax_incl>50000</total_paid_tax_incl>
    <total_paid_tax_excl>50000</total_paid_tax_excl>
    <total_shipping>0</total_shipping>
    <total_shipping_tax_incl>0</total_shipping_tax_incl>
    <total_shipping_tax_excl>0</total_shipping_tax_excl>
</order>

但是,在创建时,它会返回商店的价格(productID 40 为 24990,varID 0)和(productID 41 为 24990,varID 587),而不是我在 XML 中定义的价格。之后我也尝试发送PUT request 来更改它们,但没有成功。

可以在后台 UI 中更改订单产品的价格。我怎样才能通过网络服务做到这一点?

【问题讨论】:

    标签: prestashop prestashop-1.6


    【解决方案1】:

    您在 Prestashop 网络服务中可以做什么或不可以做什么是在对象类变量 $webserviceParameters 中定义的。

    检查您的Order.php $webserviceParameters。你可以在associations看到:

    'product_price' => array('setter' => false)
    

    'getter' 用于获取变量,'setter' 用于更新变量。

    'setter' =&gt; false 表示无法更改。

    覆盖

    但是你可以添加一个Order.php 覆盖:你需要覆盖一个函数__construct(),里面有$this-&gt;webserviceParameters = ...

    并通过在其中添加一个函数来更改 Web 服务参数,即。 e.

    'setter' => 'setOrderRowProductPrice'
    

    然后你需要写一个函数:

    function setOrderRowProductPrice($product_price) {
        // $product_price is a variable from XML
        // $this->product_price is a variable from the database
        // Your code (i. e. add changes to the database)
        return $product_price;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-21
      • 2016-04-03
      • 2015-11-28
      • 1970-01-01
      相关资源
      最近更新 更多