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()それぞれステータスを変更するために呼び出します。

次の処理に移る前に、xcart が使用している可能性のある注文、カート、およびセッション コントロールを 100% クリアするには、何かが欠けているに違いないと思います。念のためループでも使用x_session_reset()し、ループの先頭ですべての変数をリセットしました。

前もって感謝します。

4

1 に答える 1

1

After a few hours wasted and massive amounts of debug, I was missing a global variable that was needed. As the customer is not logged in, we need to manually set each of these global variables.

I was pulling the customer info from the database, but it was being saved in a different variable name.

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

Just in case anyone wants to attempt this in the future, you must have these set for each loop as they are required for an order/cart to take place

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

I know the question was pretty vague, but we thought that it came down to xcart's built in functions taking over.

The things you find out after a fresh cup of coffee..

于 2013-03-19T01:50:19.027 に答える