【问题标题】:Order status change turns not the same at different admin panels订单状态变化在不同的管理面板上不一样
【发布时间】:2017-01-22 10:04:28
【问题描述】:

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

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 中进行更改,则状态似乎已更新,如管理所有订单页面所示:

然而,当我单独打开该订单时,显示的状态与之前一样

如果我还更改了订单模型/表的状态,则订单状态正常。 所有订单面板单个订单页面都显示相同的更新状态。

我知道两个数据库表 ordersorder_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 类中教导更新/更改订单状态。 有cmets吗?

【问题讨论】:

    标签: php prestashop payment-gateway prestashop-1.6


    【解决方案1】:

    如果你检查 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除外。

    【讨论】:

    • ok 不是可选的,Webservice 除外。但是支付网关如何将 http POST 请求中的信息数据返回给该控制器呢?我可以将支付网关视为请求该方法的webservice吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-09-10
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2013-04-30
    • 2017-07-22
    • 2022-11-02
    相关资源
    最近更新 更多