订单状态更改在不同的管理面板上变得不同

时间:2016-09-14 14:34:16

标签: php prestashop payment-gateway prestashop-1.6

我使用自定义付款网关处理订单。 (PS v1.6.1.6) 网关将用户浏览器返回到商店页面(支付模块前端控制器http://demo.site.com/module/latcard/paymentreturn),其中http POST有效负载包含新的订单状态ID:

STATUS: ERROR
ERRORINFO: 981:ERROR 3D-secure
ORDER_ID: 66
AMOUNT: 45.99 

我以这种方式在前端控制器中以编程方式更新(更改状态)命令:

paymentreturn.php

public function _postProcess() {

    if (isset($_POST) && Tools::getValue('INDEX') == sha1( Tools::getValue('ORDER_ID') . Tools::getValue('AMOUNT') . Tools::getValue('DT'))) {
        if (Tools::getValue('STATUS') == 'ERROR') { 
            ...
            /*** calling update method ***/
            $new_status=15;
            //  change status directly in Order 
            $order = new Order(Tools::getValue('ORDER_ID'));
            $order->setCurrentState($new_status);

            // change status in OrderHistory
            $history = new OrderHistory(); 
            $history->changeIdOrderState($new_status, Tools::getValue('ORDER_ID'));  
        } 
       ...
 }

问题是如果我在OrderHisotry中仅更改状态似乎已更新,如admin all orders页面所示: enter image description here

然而,当我单独打开该订单时,状态显示为enter image description here

如果我还改变了订单型号/表的状态,那么订单状态就可以了。 所有订单面板个别订单页面均显示相同的更新状态。

我知道两个数据库表订单 order_history 。但有时候

$order = new Order($order_id); 
$order->setCurrentState($new_status);

导致商店显示PS v1.6.1.7的空白页面(错误500)。当我打开调试模式时,错误是调用第179行/home/vitpict/bstyle.lv/classes/Mail.php中的未定义实例Swift_Message :: newInstance() - 为什么? 那里的代码与v.1.6.1.6 ...

中的代码相同

我在 setCurrentState()订购方法上找不到太多...任何文档?

example code教授仅在OrderHistory类中更新/更改订单状态。 有什么意见吗?

1 个答案:

答案 0 :(得分:0)

如果您要检查setCurrentState方法代码,则有:

 /** Set current order status
     * @param int $id_order_state
     * @param int $id_employee (/!\ not optional except for Webservice.
     */
    public function setCurrentState($id_order_state, $id_employee = 0)

注意行 @param int $ id_employee(/!\不是可选的,除了Webservice。