1

我一直在为 x-cart 中的客户开发自定义定期订单脚本,我面临的问题是当定期订单(cron)触发并循环安排的订单时,订单似乎没有重置为空,它尝试使用前一个订单的 ID。我以为我解决了这个问题,但现在它使用第一个订单的详细信息作为日常流程之后所有订单的客户详细信息。

$orderids = func_place_order(stripslashes($payment_method), 'I', $order_details, @$customer_notes, array(), array(), @$delivery_notes, TRUE);

最后一个参数是一个自定义参数,这里是它的使用位置 ( $bol_ignore) - 在func.order.php

$check_order = func_query_first("SELECT orderid FROM $sql_tbl[orders] WHERE userid='" . addslashes(@$userinfo['id']) . "' AND '" . XC_TIME . "'-date < '$mintime'");

    if ($bol_ignore == FALSE) // @custom ***** code, may prevent the order from being broken?
        if ($check_order) {
            func_unlock('place_order');

            return FALSE;
        }

在它检查支付是否成功后,我们func_change_order_status()分别调用更改状态。

我假设我必须遗漏一些东西才能 100% 清除 xcart 可能正在使用的订单、购物车和任何会话控制,然后才能处理下一个。我什x_session_reset()至在循环中使用以防万一,并在循环开始时重置所有变量。

提前致谢。

4

1 回答 1

1

在浪费了几个小时和大量调试之后,我错过了一个需要的全局变量。由于客户没有登录,我们需要手动设置每个全局变量。

我从数据库中提取客户信息,但它被保存在不同的变量名中。

$userinfo = func_userinfo($row['customerid'], 'C');

以防万一将来有人想尝试此操作,您必须为每个循环设置这些,因为它们是订单/购物车发生所必需的

# Change the "session" types 
$login_type   = 'C';
$current_area = 'C';
$cart         = NULL; // Clear the Cart

我知道这个问题很模糊,但我们认为它归结为 xcart 的内置函数接管。

喝杯新鲜咖啡后你会发现的事情。

于 2013-03-19T01:50:19.027 回答