我一直在为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()
以防万一,并在循环开始时重置所有变量。
提前致谢。
答案 0 :(得分:1)
经过几个小时的浪费和大量调试后,我错过了一个需要的全局变量。由于客户未登录,我们需要手动设置每个全局变量。
我从数据库中提取客户信息,但它以不同的变量名保存。
$userinfo = func_userinfo($row['customerid'], 'C');
以防万一有人想在将来尝试此操作,您必须为每个循环设置这些设置,因为它们是订单/购物车发生所必需的
# Change the "session" types
$login_type = 'C';
$current_area = 'C';
$cart = NULL; // Clear the Cart
我知道这个问题很模糊,但我们认为它归结为xcart的内置函数接管。
一杯新鲜咖啡后你发现的东西..