我使用自定义付款网关处理订单。 (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
我以这种方式在前端控制器中以编程方式更新(更改状态)命令:
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页面所示:
如果我还改变了订单型号/表的状态,那么订单状态就可以了。 所有订单面板和个别订单页面均显示相同的更新状态。
我知道两个数据库表订单和 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类中更新/更改订单状态。 有什么意见吗?
答案 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。